import gtk import gtk.glade import gobject import pango from newtask import PyAtCronNewTask class PyAtCronMainwin: def __init__ (self): self.assistant = None self.taskId = None self.widgetTree = gtk.glade.XML ("mainwin.glade", "mainwin") dic = { "on_mainwin_delete_event" : self.deleteEvent, "on_mainwin_destroy_event" : self.destroyEvent, "on_mainmenu_save_activate" : self.saveActivate, "on_mainmenu_quit_activate" : self.quitActivate, "on_mainmenu_new_activate" : self.newActivate, "on_mainmenu_properties_activate" : self.propertiesActivate, "on_mainmenu_activate_activate" : self.activateActivate, "on_mainmenu_deactivate_activate" : self.deactivateActivate, "on_mainmenu_delete_activate" : self.deleteActivate, "on_mainmenu_about_activate" : self.aboutActivate, "on_toolbar_new_clicked" : self.newClicked, "on_toolbar_properties_clicked" : self.propertiesClicked, "on_toolbar_activate_clicked" : self.activateClicked, "on_toolbar_deactivate_clicked" : self.deactivateClicked, "on_toolbar_delete_clicked" : self.deleteClicked, "on_tasklist_row_activated" : self.rowActivated } self.widgetTree.signal_autoconnect (dic) self.widgetTree.get_widget ("tasklist").get_selection().connect("changed", self.cursorChanged) self.win = self.widgetTree.get_widget ("mainwin") self.updateTaskList () self.updateCurrentTask () def deleteEvent (self, event, obj): self.quit () def destroyEvent (self, event, obj): self.quit () def saveActivate (self, obj): self.save () def quitActivate (self, obj): self.quit () def newActivate (self, obj): self.createTask () def propertiesActivate (self, obj): self.editTask () def activateActivate (self, obj): self.activateTask () def deactivateActivate (self, obj): self.deactivateTask () def deleteActivate (self, obj): self.deleteTask () def aboutActivate (self, obj): self.about () def newClicked (self, obj): self.createTask () def propertiesClicked (self, obj): self.editTask () def activateClicked (self, obj): self.activateTask () def deactivateClicked (self, obj): self.deactivateTask () def deleteClicked (self, obj): self.deleteTask () def rowActivated (self, obj, path, column): self.editTask () def cursorChanged (self, obj): self.updateCurrentTask () def save (self): print "TODO: save" def quit (self): self.save () gtk.main_quit () def updateCurrentTask (self): taskList = self.widgetTree.get_widget ("tasklist") iter = taskList.get_selection ().get_selected () [1] model = taskList.get_model () if (iter == None): self.widgetTree.get_widget ("toolbar_properties").set_sensitive (0) self.widgetTree.get_widget ("toolbar_activate").set_sensitive (0) self.widgetTree.get_widget ("toolbar_deactivate").set_sensitive (0) self.widgetTree.get_widget ("toolbar_delete").set_sensitive (0) self.widgetTree.get_widget ("mainmenu_properties").set_sensitive (0) self.widgetTree.get_widget ("mainmenu_activate").set_sensitive (0) self.widgetTree.get_widget ("mainmenu_deactivate").set_sensitive (0) self.widgetTree.get_widget ("mainmenu_delete").set_sensitive (0) else: activable = model.get_value (iter, 1) self.widgetTree.get_widget ("toolbar_properties").set_sensitive (1) self.widgetTree.get_widget ("toolbar_activate").set_sensitive (activable) self.widgetTree.get_widget ("toolbar_deactivate").set_sensitive (1 - activable) self.widgetTree.get_widget ("toolbar_delete").set_sensitive (1) self.widgetTree.get_widget ("mainmenu_properties").set_sensitive (1) self.widgetTree.get_widget ("mainmenu_activate").set_sensitive (activable) self.widgetTree.get_widget ("mainmenu_deactivate").set_sensitive (1 - activable) self.widgetTree.get_widget ("mainmenu_delete").set_sensitive (1) self.taskId = model.get_value (iter, 0) def createTask (self): self.assistant = PyAtCronNewTask (self.win) self.updateTaskList () def editTask (self): print "TODO: edit task #" + str (self.taskId) self.updateTaskList () def activateTask (self): print "TODO: activate task #" + str (self.taskId) self.updateTaskList () def deactivateTask (self): print "TODO: deactivate task #" + str (self.taskId) self.updateTaskList () def deleteTask (self): print "TODO: delete task #" + str (self.taskId) self.updateTaskList () def about (self): print "TODO: about" def updateTaskList (self): taskList = self.widgetTree.get_widget ("tasklist") if (taskList.get_model () == None): model = gtk.ListStore (gobject.TYPE_INT, gobject.TYPE_BOOLEAN, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING) else: model = taskList.get_model () cursor = taskList.get_cursor () model.clear () redhex = hex (self.win.rc_get_style ().fg [4].red) redsplit = redhex.split ('0x') redstr = redsplit [1] greenhex = hex (self.win.rc_get_style ().fg [4].green) greensplit = greenhex.split ('0x') greenstr = greensplit [1] bluehex = hex (self.win.rc_get_style ().fg [4].blue) bluesplit = bluehex.split ('0x') bluestr = bluesplit [1] color = "#" + redstr + greenstr + bluestr model.set (model.append (), 0, 2, 1, False, 2, "Save all my HOME folder", 3, "12/01/03 4:00 AM", 4, color) model.set (model.append (), 0, 4, 1, True, 2, "Wake me up on the morning", 3, "Tomorrow 7:00 AM", 4, color) model.set (model.append (), 0, 6, 1, False, 2, "Start downloading CD1", 3, "Today 9:00 PM", 4, color) model.set (model.append (), 0, 8, 1, False, 2, "Start downloading CD2", 3, "Today 11:00 PM", 4, color) model.set (model.append (), 0, 10, 1, False, 2, "Start downloading CD3", 3, "Tomorrow 2:00 AM", 4, color) if (taskList.get_model () == None): taskList.set_model (model) textRenderer = gtk.CellRendererText () textColumn = gtk.TreeViewColumn ("Name", textRenderer, text=2, foreground_set=1, foreground=4) taskList.append_column(textColumn) textRenderer = gtk.CellRendererText () textColumn = gtk.TreeViewColumn ("Next run time", textRenderer, text=3, foreground_set=1, foreground=4) taskList.append_column(textColumn) else: if (cursor [0] != None): taskList.set_cursor (cursor [0])