[Top][All Lists]
[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()