using System; using Gtk; using Glade; using LibGPhoto2; using Mono.Unix; namespace FSpot { public class CameraSelectionDialog : GladeDialog { [Widget] Gtk.Button OKButton; [Widget] Gtk.Button cancelButton; [Widget] Gtk.TreeView cameraList; private CameraList camlist; public CameraSelectionDialog (CameraList camera_list) { camlist = camera_list; } public int Run () { this.CreateDialog ("camera_selection_dialog"); int return_value = -1; cameraList.Selection.Mode = SelectionMode.Single; cameraList.AppendColumn (Catalog.GetString ("Camera"), new CellRendererText (), "text", 0); cameraList.AppendColumn (Catalog.GetString ("Port"), new CellRendererText (), "text", 1); ListStore tstore = new ListStore (typeof (string), typeof (string)); for (int i = 0; i < camlist.Count (); i++) { tstore.AppendValues (camlist.GetName (i), camlist.GetValue (i)); } cameraList.Model = tstore; ResponseType response = (ResponseType) this.Dialog.Run (); if (response == ResponseType.Ok && cameraList.Selection.CountSelectedRows () == 1) { TreeIter selected_camera; TreeModel model; cameraList.Selection.GetSelected (out model, out selected_camera); return_value = camlist.GetPosition ((string)model.GetValue (selected_camera, 0), (string)model.GetValue (selected_camera, 1)); } this.Dialog.Destroy (); return return_value; } } }