pyatcron-devel-list
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Pyatcron-devel-list] New stuff for the upcoming week


From: Xavier Nicolovici
Subject: Re: [Pyatcron-devel-list] New stuff for the upcoming week
Date: Wed, 28 Apr 2004 09:37:54 +0200
User-agent: Mozilla Thunderbird 0.5 (Windows/20040207)

Hi everyone,

Sorry for the failed attachement, I''ve used a Microsoft environment to send the email (Beurk :-)

So here are the missing files.

Julien, I'll take some time today or tomorrow to adapt the mainwin.py module, don't worry about that.

Bye,

Xavier


Index: src/lib/gui.py
===================================================================
RCS file: /cvsroot/pyatcron/pyatcron/src/lib/gui.py,v
retrieving revision 1.4
diff -u -r1.4 gui.py
--- src/lib/gui.py      27 Apr 2004 14:56:25 -0000      1.4
+++ src/lib/gui.py      27 Apr 2004 15:25:20 -0000
@@ -1,7 +1,44 @@
 from gtk import * 
 import gtk.glade
+import gobject
+
+from parser import *
+from syntacticengine import *
 
 from config import GLADE_FILE_PATH
+
+class ScheduleListStore(gtk.ListStore):
+    def __init__(self):
+        # Call parent constructor with column defintions
+        gtk.ListStore.__init__(self,
+                               gobject.TYPE_PYOBJECT,
+                               gobject.TYPE_STRING,
+                               gobject.TYPE_STRING)
+        
+        # Foreach system scheduled job, add them to ourself (ListStore)
+        for entry in CronEntryParser().getEntryList():
+            self.addScheduler(entry)
+        for entry in AtEntryParser().getEntryList():
+            self.addScheduler(entry)
+        for entry in PyAtCronEntryParser().getEntryList():
+            self.addScheduler(entry)
+        return
+
+    def addScheduler(self,scheduler):
+        # Start a syntactic engine
+        syntactic = SyntacticEngine(scheduler)
+        # get an GtkIter object on a new row at top of list
+        iter = self.prepend(None)
+        # set values to this new row
+        self.set(iter,0,scheduler,
+                 1,syntactic.getSchedulerName(),
+                 2,syntactic.getNextRunString())
+
+    def saveSchedulers(self):
+        print "TODO: save list store"
+        return
+
+
 
 
 class SchedulerEditor:
Index: src/lib/syntacticengine.py
===================================================================
RCS file: /cvsroot/pyatcron/pyatcron/src/lib/syntacticengine.py,v
retrieving revision 1.2
diff -u -r1.2 syntacticengine.py
--- src/lib/syntacticengine.py  15 Apr 2004 14:34:46 -0000      1.2
+++ src/lib/syntacticengine.py  27 Apr 2004 15:25:20 -0000
@@ -7,6 +7,9 @@
         self.scheduler = scheduler
         return
 
+    def getSchedulerName(self):
+        return str(self.scheduler)
+
     def getNextRunString(self):
         # Determine when the task will occur next
         values = self.scheduler.getAttributes ()
import sys

from config import PYATCRON_PATH

from lib.schedulelist    import *
from lib.scheduler       import *
from lib.task            import *
from lib.parser          import *
from lib.errors          import *
from lib.syntacticengine import *
from lib.gui             import *


if not PYATCRON_PATH in sys.path:
    sys.path.append (PYATCRON_PATH)



class MainApp:
    def __init__ (self):
        return
    def runTest(self):
        # init main window
        self.widgetTree = gtk.glade.XML(GLADE_FILE_PATH + "/mainwin.glade")

        # I know it is not perfect, but it automatically connects signals
        dict = {}
        for key in dir(self.__class__):
            dict[key] = getattr(self, key)
        self.widgetTree.signal_autoconnect(dict)

        # init ScheduleListStore to be used as main TreeView's model
        listStore = ScheduleListStore()

        # set the model to the TreeView
        view = self.widgetTree.get_widget("tasklist")
        view.set_model(listStore)
        # Disable multiselect on TreeView
        view.get_selection().set_mode(gtk.SELECTION_SINGLE)
        

        renderer = gtk.CellRendererText()

        column = gtk.TreeViewColumn("Task", renderer, text=1)
        view.append_column(column)

        column = gtk.TreeViewColumn("Next run", renderer, text=2)
        view.append_column(column)


    def on_toolbar_delete_clicked(self,obj):
        # Retrieve model and iter selected rows
        view = self.widgetTree.get_widget("tasklist")
        selection = view.get_selection()
        model, iter = selection.get_selected()
        # Delete task from ScheduleListStore
        if iter:
            path = model.get_path(iter)
            model.remove(iter)
            # now that we removed the selection, play nice with 
            # the user and select the next item
            selection.select_path(path)
            
            # well, if there was no selection that meant the user
            # removed the last entry, so we try to select the 
            # last item
            if not selection.path_is_selected(path):
                row = path[0]-1
                # test case for empty lists
                if row >= 0:
                    selection.select_path((row,))        
        return


    def on_toolbar_new_clicked(self,obj):
        view = self.widgetTree.get_widget("tasklist")
        store = view.get_model()
        task = CmdLineTask("/bin/test")
        sched = Scheduler([[1],[1],[1],[1],[1],[]],task)
        store.addScheduler(sched)
        return

    def on_tasklist_button_press_event(self,obj,event):
        return
    
    def run(self):
        self.runTest()
        gtk.main()
        return

    def on_mainmenu_save_activate(self,obj):
        store = self.widgetTree.get_widget("tasklist").get_model()
        store.saveSchedulers()
        
    def on_mainmenu_quit_activate(self,*args):
        gtk.main_quit()
        return

if __name__ == "__main__":
    main = MainApp()
    main.run()



reply via email to

[Prev in Thread] Current Thread [Next in Thread]