/* This file is part of LED Pattern Editor. * * Copyright (C) 2010 Philipp Zabel * * LED Pattern Editor is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * LED Pattern Editor is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with LED Pattern Editor. If not, see . */ class LedPatternDialog : Gtk.Dialog { unowned List list; public LedPatternDialog (List _list) { list = _list; set_title ("LED Patterns"); var content = (Gtk.VBox) get_content_area (); content.set_size_request (-1, 5*70); var pannable = new Hildon.PannableArea (); var vbox = new Gtk.VBox (false, 0); foreach (LedPatternRX51 pattern in list) { var button = new Gtk.Button (); Hildon.gtk_widget_set_theme_size (button, Hildon.SizeType.FINGER_HEIGHT); var hbox = new Gtk.HBox (false, Hildon.MARGIN_DOUBLE); var lpv = new LedPatternView (pattern); lpv.set_size_request (200, -1); button.set_data ("pattern", pattern); button.clicked.connect (on_pattern_clicked); hbox.pack_start (lpv, false, false, 0); var label = new Gtk.Label (pattern.name.has_prefix ("Pattern") ? pattern.name.offset (7) : pattern.name); label.set_alignment (0.0f, 0.5f); hbox.pack_start (label, true, true, 0); button.add (hbox); vbox.pack_start (button, true, true, 0); } pannable.add_with_viewport (vbox); content.pack_start (pannable, true, true, 0); content.show_all (); add_button ("Save", Gtk.ResponseType.OK); } void on_pattern_clicked (Gtk.Button button) { var pattern = (LedPatternRX51) button.get_data ("pattern"); var dialog = new LedProgramDialog (pattern); dialog.set_transient_for (this); int response = 0; while (response >= 0) response = dialog.run (); dialog.destroy (); } }