/* This file is part of Cinaest. * * Copyright (C) 2009 Philipp Zabel * * Cinaest 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. * * Cinaest 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 Cinaest. If not, see . */ using Hildon; using Gtk; class SourceDialog : Gtk.Dialog { List sources; List buttons; public SourceDialog (Gtk.Window window) { set_transient_for (window); set_title (_("Select movie source")); VBox vbox; if (CinaestProgram.plugins.length () > 5) { vbox = new VBox (true, 0); var pannable = new PannableArea (); pannable.add_with_viewport (vbox); VBox area = (VBox) get_content_area (); area.pack_start (pannable, true, true, 0); area.set_size_request (-1, 5*70); } else { vbox = (VBox) get_content_area (); } sources = new List (); buttons = new List (); foreach (Plugin plugin in CinaestProgram.plugins) { foreach (MovieSource source in plugin.get_sources ()) { var button = new Hildon.Button.with_text (SizeType.FINGER_HEIGHT, ButtonArrangement.VERTICAL, source.get_name (), source.get_description ()); button.set_alignment(0, (float) 0.5, 0, 0); vbox.pack_start (button, true, true, 0); button.clicked.connect (on_source_select); buttons.append (button); sources.append (source); } } } public void on_source_select (Gtk.Button button) { int n = buttons.index (button); response (n); } public new int run (ref MovieSource source) { int res = 0; show_all (); res = base.run (); destroy (); if (res >= 0) { source = sources.nth_data (res); return 0; } return res; } }