| Trees | Indices | Help |
|
|---|
|
|
1 #!/usr/bin/env python2.5
2 import gtk
3 import hildon
4 import os
5 import logging
6 log = logging.getLogger("hildonui.UI")
7
8 import conduit
9 from conduit.hildonui.List import DataProviderBox
10
11 # FIXME: we probably should share some code between these two
12 from conduit.hildonui.Canvas import Canvas
13
14 from gettext import gettext as _
15
18 hildon.Program.__init__(self)
19
20 #add some additional dirs to the icon theme search path so that
21 #modules can provider their own icons
22 icon_dirs = [
23 conduit.SHARED_DATA_DIR,
24 conduit.SHARED_MODULE_DIR,
25 os.path.join(conduit.SHARED_DATA_DIR,"icons"),
26 os.path.join(conduit.USER_DIR, "modules")
27 ]
28 for i in icon_dirs:
29 gtk.icon_theme_get_default().prepend_search_path(i)
30 log.debug("Adding %s to icon theme search path" % (i))
31
32 self.conduitApplication = conduitApplication
33 self.type_converter = typeConverter
34 self.sync_manager = syncManager
35 self.syncSet = None
36
37 self.mainWindow = hildon.Window()
38 self.mainWindow.set_icon_name("conduit")
39 # self.mainWindow.resize (800, 480)
40
41 self.mainWindow.connect("destroy", self.on_window_destroyed)
42 self.add_window(self.mainWindow)
43
44 self.provider_box = DataProviderBox ()
45 self.provider_box.combo.set_active (0)
46
47 # FIXME: we should do something hildon specific
48 self.canvas = Canvas(
49 parentWindow=self.mainWindow,
50 typeConverter=self.type_converter,
51 syncManager=self.sync_manager)
52
53 self.canvas.connect('drag-drop', self.drop_cb)
54 self.canvas.connect("drag-data-received", self.drag_data_received_data)
55
56 main_pane = gtk.HPaned ()
57 main_pane.add1(self.provider_box)
58 main_pane.add2(self.canvas)
59 self.mainWindow.add(main_pane)
60
62 self.syncSet = syncSet
63 self.toolbar = ConduitToolbar(self.syncSet, self.canvas)
64 self.canvas.set_sync_set(syncSet)
65
66 self.set_common_toolbar(self.toolbar)
67
73
80
86
88 """
89 drop cb
90 """
91 self.canvas.drag_get_data(context, context.targets[0], time)
92 return True
93
95 """
96 DND
97 """
98 dataproviderKey = selection.data
99 #FIXME: DnD should be cancelled in the Treeview on the drag-begin
100 #signal and NOT here
101 if dataproviderKey != "":
102 #Add a new instance if the dataprovider to the canvas.
103 new = conduit.GLOBALS.moduleManager.get_module_wrapper_with_instance(dataproviderKey)
104 self.canvas.add_dataprovider_to_canvas(dataproviderKey, new, x, y)
105
106 context.finish(True, True, etime)
107 return
108
110 """
111 Check if there are any synchronizations currently in progress and
112 ask the user if they wish to cancel them
113 """
114 busy = False
115 quit = False
116
117 if self.syncSet:
118 for c in self.syncSet.get_all_conduits():
119 if c.is_busy():
120 busy = True
121
122 if busy:
123 dialog = gtk.MessageDialog(
124 self.mainWindow,
125 gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
126 gtk.MESSAGE_QUESTION,
127 gtk.BUTTONS_YES_NO,_("Synchronization in progress. Do you want to cancel it?")
128 )
129 response = dialog.run()
130 if response == gtk.RESPONSE_YES:
131 quit = True
132 else:
133 #Dont exit
134 dialog.destroy()
135 return True
136 else:
137 quit = True
138
139 #OK, if we have decided to quit then call quit on the
140 #DBus interface which will tidy up any pending running
141 #non gui tasks
142 if quit:
143 log.debug("Quitting...")
144 self.conduitApplication.Quit()
145
148
151 gtk.Toolbar.__init__(self)
152
153 self.syncSet = syncSet
154
155 # canvas
156 self.canvas = canvas
157 self.canvas.connect("position-changed", self.on_position_changed)
158
159 # remove conduit button
160 self.remove_button = gtk.ToolButton(gtk.STOCK_REMOVE)
161 self.remove_button.connect("clicked", self.on_remove)
162
163 # save settings button
164 self.save_button = gtk.ToolButton(gtk.STOCK_SAVE)
165 self.save_button.connect("clicked", self.on_settings_save)
166
167 # sync all button
168 image_widget = gtk.image_new_from_icon_name("conduit", 24)
169 self.sync_button = gtk.ToolButton(icon_widget=image_widget)
170 self.sync_button.connect("clicked", self.on_sync_all)
171
172 # moving
173 self.previous_button = gtk.ToolButton(gtk.STOCK_GO_BACK)
174 self.previous_button.connect("clicked", self.on_previous)
175
176 self.label = gtk.Label("0/0")
177
178 self.next_button = gtk.ToolButton(gtk.STOCK_GO_FORWARD)
179 self.next_button.connect("clicked", self.on_next)
180
181 # add all items
182 self.add_item (self.remove_button)
183 self.add_item (gtk.SeparatorToolItem())
184 self.add_item (self.previous_button)
185 self.add_item (self._create_toolitem(self.label))
186 self.add_item (self.next_button)
187 self.add_item (gtk.SeparatorToolItem())
188 self.add_item (self.sync_button)
189 self.add_item (self.save_button)
190
191 self.show_all ()
192
194 self.insert (item, -1)
195
197 current = self.canvas.selectedConduitItem.model
198 if not current:
199 return
200
201 self.syncSet.remove_conduit(current)
202
204 self.syncSet.save_to_xml()
205
207 self.conduitApplication.Synchronize()
208
210 self.canvas.move_previous()
211
213 self.canvas.move_next()
214
216 self.label.set_text (canvas.get_position_str())
217
223
233
237
240
243
245 if self.conduitApplication.HasGUI():
246 if self.conduitApplication.gui.is_visible():
247 self.conduitApplication.gui.minimize_to_tray()
248 else:
249 self.conduitApplication.gui.present()
250 else:
251 self.conduitApplication.BuildGUI()
252 self.conduitApplication.ShowGUI()
253
| Trees | Indices | Help |
|
|---|
| Generated by Epydoc 3.0beta1 on Sat Aug 2 22:18:43 2008 | http://epydoc.sourceforge.net |