diff -urNb pyatcron/src/lib/gui.py pyatcron-devel/src/lib/gui.py
--- pyatcron/src/lib/gui.py 2004-04-29 10:59:47.732559661 +0100
+++ pyatcron-devel/src/lib/gui.py 2004-04-29 10:00:15.000000000 +0100
@@ -45,6 +45,9 @@
2,syntactic.getNextRunString(),
3,color)
+ def delScheduler (self,iter):
+ self.remove (iter)
+
def saveSchedulers(self):
print "ScheduleListStore::saveSchedulers: NOT IMPLEMENTED"
return
diff -urNb pyatcron/src/lib/mainwin.py pyatcron-devel/src/lib/mainwin.py
--- pyatcron/src/lib/mainwin.py 2004-04-29 10:59:47.734559373 +0100
+++ pyatcron-devel/src/lib/mainwin.py 2004-04-29 10:02:33.000000000 +0100
@@ -15,10 +15,6 @@
# The main window's class.
class MainWin:
def __init__ (self):
- # The index of the task currently highlighted (if any).
- self.taskIndex = None
-
-
# The GtkTreePath of the last highlighted inactive task.
# It's used to switch between the inactive/highlighted colors
# in the task list.
@@ -33,6 +29,7 @@
# Get normal and insensitive state color from Gtk theme
self.normalColor = self.getThemeColor(gtk.STATE_NORMAL)
self.insensitiveColor = self.getThemeColor(gtk.STATE_INSENSITIVE)
+ self.selectedColor = self.getThemeColor(gtk.STATE_SELECTED)
# Initialize a ScheduleListStore object
self.listStore=ScheduleListStore(self.normalColor,
@@ -85,6 +82,7 @@
def on_tasklist_selection_changed(self,obj):
self.updateItemsSensitivity()
+ self.updateCurrentTask ()
def on_mainmenu_save_activate (self, obj):
self.save ()
@@ -137,6 +135,9 @@
def on_toolbar_delete_clicked (self, obj):
self.deleteScheduler()
+ def on_tasklist_row_activated (self, obj, path, column):
+ self.editTask ()
+
def on_confirm_delete_response (self, obj, response):
# If deletion is confirmed, delete the task.
if (response == -8):
@@ -170,7 +171,8 @@
def deleteScheduler (self,confirm = False):
if (confirm):
# deletion is confirmed, delete Scheduler
- print "MainWin::deleteScheduler: NOT IMPLEMENTED"
+ model,iter = self.taskList.get_selection().get_selected()
+ self.listStore.delScheduler (iter)
else:
# Load a delete confirmation dialog window
xml = gtk.glade.XML (GLADE_FILE_PATH + "/confirm_delete.glade")
@@ -255,6 +257,7 @@
model.set_value(iter,3,self.insensitiveColor)
# update sensitivity of menu items
self.updateItemsSensitivity()
+ self.updateCurrentTask()
# Writes the current configuration.
def save (self):
@@ -277,47 +280,27 @@
# Gets the current highlighted task's index.
def updateCurrentTask (self):
- taskList = self.widgetTree.get_widget ("tasklist")
- iter = taskList.get_selection ().get_selected () [1]
- model = taskList.get_model ()
+ # get iter of selected row
+ model,iter = self.taskList.get_selection().get_selected()
# If we were on an inactive task, restore its color to "insensitive".
- if (self.lastPath != None):
- model.set_value (model.get_iter (self.lastPath), 4, self.insensitiveColor)
- self.lastPath = None
+ if (self.lastPath):
+ lastIter = model.get_iter (self.lastPath)
- # If no row is selected, the "properties", "activate", "deactivate" and "delete" toolbar icons/mainmenu entries are insensitive, else they are sensitive.
- 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)
+ if (model.get_value (lastIter, 0).isActive ()):
+ model.set_value (model.get_iter (self.lastPath), 3, self.normalColor)
else:
- # If the task is inactive, the "deactivate" icon toolbar is insensitive, the "activate" icon is sensitive and vice-versa.
- 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)
+ model.set_value (model.get_iter (self.lastPath), 3, self.insensitiveColor)
- # Here, we get the task's index.
- self.taskIndex = model.get_value (iter, 0)
+ self.lastPath = None
- if (activable == 1):
+ if (iter):
# We save the task's path for next time.
- path = taskList.get_cursor () [0]
- self.lastPath = taskList.get_cursor () [0]
- # We set the inactive task's color to "highlighted".
- model.set_value (model.get_iter (path), 4, self.highlightedColor)
+ path = self.taskList.get_cursor () [0]
+ self.lastPath = self.taskList.get_cursor () [0]
+
+ # We set the task's color to "selected".
+ model.set_value (model.get_iter (path), 3, self.selectedColor)
# Launches the new task assistant and refreshes the task list
# if a new task was created.
@@ -327,69 +310,43 @@
def on_editor_changed(self, *args):
print "Updating list (only the task, not the scheduler)"
self.updateTaskList (True, True, False)
- # Launches the properties dialog and refreshes the task list if
- # changes were made.
+ # Launches the properties dialog
def editTask (self):
- print "edit task #" + str (self.taskIndex)
- self.editor = SchedulerEditor(self.scheduleList[self.taskIndex])
+ print "edit task"
+ model,iter = self.taskList.get_selection().get_selected()
+ currentTask = model.get_value (iter, 0)
+ self.editor = SchedulerEditor(currentTask)
self.editor.show(self.win)
- self.scheduleList[self.taskIndex].task.connect('changed', self.on_editor_changed)
- #self.updateTaskList ()
+ currentTask.task.connect('changed', self.on_editor_changed)
- # Builds or refreshes the task list.
+ # Refreshes the task list.
def updateTaskList (self, onlyCurrentTask = False, updateTask = True, updateScheduler = True):
+ model = self.taskList.get_model ()
- taskList = self.widgetTree.get_widget ("tasklist")
-
- # If the task list has not already been built, ceate it. Else, get its current model, get the position of the cursor from it and clear the current model.
- 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 ()
- if (not onlyCurrentTask):
- model.clear ()
-
- # Add each task, or update the current one
- curIndex = 0
- if (onlyCurrentTask):
- self.updateCurrentTask ()
iter = model.get_iter_first ()
+ while (iter):
+ selectedModel,selectedIter = self.taskList.get_selection().get_selected()
+ selectedTask = selectedModel.get_value (selectedIter, 0)
+ currentTask = model.get_value (iter, 0)
- for entry in self.scheduleList:
- if (curIndex == self.taskIndex or not onlyCurrentTask):
- if (not onlyCurrentTask):
- iter = model.append ()
+ if (selectedTask == currentTask or not onlyCurrentTask):
+ model.set (iter, 0, currentTask)
- model.set (iter, 0, curIndex)
- model.set (iter, 1, entry.isActive () == False)
if (updateTask):
- model.set (iter, 2, entry)
+ model.set (iter, 1, str (currentTask))
if (updateScheduler):
# Determine when the task will occur next
- syntactic = SyntacticEngine(entry)
- model.set (iter, 3, syntactic.getNextRunString())
+ syntactic = SyntacticEngine(currentTask)
+ model.set (iter, 2, syntactic.getNextRunString())
- model.set (iter, 4, self.insensitiveColor)
+ if (currentTask.isActive ()):
+ model.set (iter, 3, self.normalColor)
+ else:
+ model.set (iter, 3, self.insensitiveColor)
- if (onlyCurrentTask):
iter = model.iter_next (iter)
- curIndex = curIndex + 1
- # If we are building the task list, associate the model to the task list and create the headers. Else, restore the cursor's position.
- if (taskList.get_model () == None):
- taskList.set_model (model)
-
- textRenderer = gtk.CellRendererText ()
- textColumn = gtk.TreeViewColumn ("Description", 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])
+ self.updateCurrentTask ()
diff -urNb pyatcron/src/lib/newtask.py pyatcron-devel/src/lib/newtask.py
--- pyatcron/src/lib/newtask.py 2004-04-28 09:09:02.000000000 +0100
+++ pyatcron-devel/src/lib/newtask.py 2004-04-29 09:51:23.000000000 +0100
@@ -51,8 +51,8 @@
self.win.set_position (gtk.WIN_POS_CENTER_ON_PARENT)
# Sets the color of the bars.
- frameBackground = gtk.gdk.color_parse (self.parent.backgroundColor)
- mainBackground = gtk.gdk.color_parse (self.parent.highlightedColor)
+ frameBackground = gtk.gdk.color_parse (self.parent.normalColor)
+ mainBackground = gtk.gdk.color_parse (self.parent.selectedColor)
self.widgetTree.get_widget ("titlebar").modify_bg (gtk.STATE_NORMAL, frameBackground)
self.widgetTree.get_widget ("topbar").modify_bg (gtk.STATE_NORMAL, frameBackground)
@@ -165,8 +165,7 @@
self.updatePage ()
else:
scheduler = Scheduler ([[1],[1],[1],[1],[1],[1]], self.task)
- self.parent.scheduleList.addSchedule (scheduler)
- self.parent.updateTaskList ()
+ self.parent.listStore.addScheduler (scheduler)
self.quit ()
def updatePage (self):
@@ -186,7 +185,7 @@
self.widgetTree.get_widget ("widgetbar").remove (self.oldPage)
# Set the assistant's title.
- title = '' + self.pages [self.currentPage]["title"] + ''
+ title = '' + self.pages [self.currentPage]["title"] + ''
self.widgetTree.get_widget ("title").set_markup (title)
# Add the current page to the dialog (with a 4 pixels padding), and display it.