source: taskscheduler/trunk/fuentes/scheduler-gui.install/usr/share/taskscheduler/bin/DetailBox.py @ 6754

Last change on this file since 6754 was 6754, checked in by Juanma, 20 months ago

WIP oin experte mode

File size: 20.1 KB
Line 
1#!/usr/bin/env python3
2
3# -*- coding: utf-8 -*-
4import gi
5gi.require_version('Gtk', '3.0')
6gi.require_version('PangoCairo', '1.0')
7import json
8import cairo
9import os
10import subprocess
11import shutil
12import threading
13import platform
14import subprocess
15import sys
16import time
17#import commands
18from gi.repository import Gtk, Gdk, GdkPixbuf, GObject, GLib, PangoCairo, Pango
19import time
20from taskscheduler.cronParser import cronParser
21
22import gettext
23gettext.textdomain('taskscheduler')
24_ = gettext.gettext
25
26
27WIDGET_MARGIN=6
28DBG=1
29
30class DetailBox:
31       
32        def __init__(self,scheduler,expert_mode=False):
33                self.expert_mode=expert_mode
34                self.scheduler_client=scheduler
35                self.parser=cronParser()
36                self.task_serial="0"
37                self.task_type="remote"
38                self.btn_apply=Gtk.Button(stock=Gtk.STOCK_APPLY)
39                try:
40                        self.flavour=subprocess.getoutput("lliurex-version -f")
41                except:
42                        self.flavour="client"
43                self.ldm_helper='/usr/sbin/sched-ldm.sh'
44
45        def _debug(self,msg):
46                if DBG:
47                        print("taskDetails: %s"%msg)
48        #def _debug
49
50        def _format_widget_for_grid(self,widget):
51                #common
52                widget.set_hexpand(False)
53                widget.set_halign(Gtk.Align.CENTER)
54                widget.set_valign(Gtk.Align.CENTER)
55                if 'Gtk.Button' in str(type(widget)):
56                        pass
57                elif 'Gtk.Entry' in str(type(widget)):
58                        widget.set_alignment(xalign=0.5)
59                        widget.set_max_length(2)
60                        widget.set_width_chars(2)
61                        widget.set_max_width_chars(3)
62        #def _format_widget_for_grid
63
64        def _load_interval_data(self,widget=None,handler=None):
65                if handler:
66                        self.cmb_interval.handler_block(handler)
67                position=self.cmb_interval.get_active()
68                self.cmb_interval.remove_all()
69                date=self.cmb_dates.get_active_text()
70                total=24
71                if date==_("day(s)"):
72                        total=7
73                elif date==_("hour(s)"):
74                        total=24
75                elif date==_("week(s)"):
76                        total=4
77                elif date==_("month(s)"):
78                        total=12
79                for i in range(total):
80                        self.cmb_interval.append_text(str(i+1))
81
82                #Set sensitive status
83                self._changed_interval()
84                #If user changes selection try to activate same value on new interval data or max
85                if position>=total:
86                        position=total-1
87                elif position<0:
88                        position=0
89                self.cmb_interval.set_active(position)
90                if handler:
91                        self.cmb_interval.handler_unblock(handler)
92                        self._parse_scheduled(True)
93        #def _load_interval_data
94       
95        def _load_date_data(self):
96                date=[_("hour(s)"),_("day(s)"),_("week(s)"),_("month(s)")]
97                for i in date:
98                        self.cmb_dates.append_text(i)
99                self.cmb_dates.set_active(0)
100        #def _load_date_data
101       
102        def _load_special_date_data(self):
103                date=[_("Last month day"),_("First month day")]
104                for i in date:
105                        self.cmb_special_dates.append_text(i)
106                self.cmb_special_dates.set_active(0)
107        #def _load_special_date_data
108
109        def _load_date_time_data(self,date_type):
110                inc=0
111                jump=0
112                time_units=0
113                months={}
114                if date_type=='hour':
115                        time_units=24
116                        widget=self.cmb_hours
117                elif date_type=='minute':
118                        time_units=60
119                        jump=5
120                        widget=self.cmb_minutes
121                elif date_type=='month':
122                        widget=self.cmb_months
123                        widget.append_text(_("Every month"))
124                        inc=1
125                        time_units=12
126                        months={1:'January',2:'February',3:'March',4:'April',5:'May',6:'June',7:'July',8:'August',9:'September',10:'October',11:'November',12:'December'}
127                elif date_type=='day':
128                        widget=self.cmb_days
129                        widget.append_text(_("Every day"))
130                        inc=1
131                        time_units=31
132
133                for i in range(time_units):
134                        if jump:
135                                if (not i%jump):
136                                        widget.append_text(str(i+inc))
137                        else:
138                                if months:
139                                        widget.append_text(months[(i+inc)])
140                                else:
141                                        widget.append_text(str(i+inc))
142                widget.set_active(0)
143        #def _load_date_time_data
144
145        def render_form(self,gtkGrid,btn_apply=True):
146                self.chk_monday=Gtk.ToggleButton(_("Monday"))
147                self.chk_thursday=Gtk.ToggleButton(_("Tuesday"))
148                self.chk_wednesday=Gtk.ToggleButton(_("Wednesday"))
149                self.chk_tuesday=Gtk.ToggleButton(_("Thursday"))
150                self.chk_friday=Gtk.ToggleButton(_("Friday"))
151                self.chk_saturday=Gtk.ToggleButton(_("Saturday"))
152                self.chk_sunday=Gtk.ToggleButton(_("Sunday"))
153                self.chk_daily=Gtk.CheckButton(_("Daily"))
154                self.chk_hourly=Gtk.CheckButton(_("Hourly"))
155                self.chk_weekly=Gtk.CheckButton(_("Weekly"))
156                self.chk_interval=Gtk.CheckButton(_("Interval"))
157                self.cmb_interval=Gtk.ComboBoxText()
158                self.cmb_dates=Gtk.ComboBoxText()
159                self.chk_special_dates=Gtk.CheckButton(_("Last month day"))
160                self.day_box=Gtk.Box()
161                self.day_box.set_homogeneous(True)
162                self.cmb_days=Gtk.ComboBoxText()
163                self.day_box.add(Gtk.Label(_("Day")))
164                self.day_box.add(self.cmb_days)
165                self.month_box=Gtk.Box()
166                self.month_box.set_homogeneous(True)
167                self.cmb_months=Gtk.ComboBoxText()
168                self.month_box.add(Gtk.Label(_("Month")))
169                self.month_box.add(self.cmb_months)
170                self.hour_box=Gtk.Box(spacing=WIDGET_MARGIN)
171                self.hour_box.set_homogeneous(False)
172                self.cmb_hours=Gtk.ComboBoxText()
173#               self.hour_box.add(Gtk.Label(_("Hour")))
174#               self.hour_box.add(self.cmb_hours)
175                ####REM
176                self.spin_hour=Gtk.SpinButton()
177                self.spin_hour.set_range(0,23)
178                self.spin_hour.set_increments(1,1)
179                self.spin_hour.set_wrap(True)
180                self.spin_hour.set_orientation(Gtk.Orientation.VERTICAL)
181                self.spin_hour.set_valign(Gtk.Align.CENTER)
182                self.spin_hour.set_halign(Gtk.Align.CENTER)
183                self.spin_hour.set_vexpand(False)
184                self.spin_min=Gtk.SpinButton()
185                self.spin_min.set_range(0,59)
186                self.spin_min.set_increments(1,1)
187                self.spin_min.set_wrap(True)
188                self.spin_min.set_orientation(Gtk.Orientation.VERTICAL)
189                self.spin_min.set_valign(Gtk.Align.CENTER)
190                self.spin_min.set_halign(Gtk.Align.CENTER)
191                self.spin_min.set_vexpand(False)
192                self.hour_box.add(self.spin_hour)
193                self.hour_box.add(Gtk.Label(":"))
194                self.minute_box=Gtk.Box()
195                self.minute_box.add(self.spin_min)
196                self.time_box=Gtk.Box(spacing=WIDGET_MARGIN)
197                self.time_box.add(self.hour_box)
198                self.time_box.add(self.minute_box)
199                ####REM
200#               self.minute_box.set_homogeneous(True)
201                self.cmb_minutes=Gtk.ComboBoxText()
202#               self.minute_box.add(Gtk.Label(_("Minutes")))
203#               self.minute_box.add(self.cmb_minutes)
204
205                self._load_interval_data()
206                self._load_date_data()
207
208                self.lbl_info=Gtk.Label("")
209                self.lbl_info.set_line_wrap(True)
210                self.lbl_info.set_max_width_chars(20)
211                self.lbl_info.set_width_chars(20)
212                self.lbl_info.set_opacity(0.6)
213                gtkGrid.attach(self.lbl_info,0,0,4,1)
214                self.lbl_info.set_margin_bottom(24)
215                dow_frame=Gtk.Frame()
216                dow_frame.set_shadow_type(Gtk.ShadowType.OUT)
217                frame_box=Gtk.Box(orientation=Gtk.Orientation.VERTICAL,spacing=WIDGET_MARGIN)
218                dow_frame.add(frame_box)
219                label=Gtk.Label(_("Days of week"))
220                frame_box.add(label)
221                frame_box.set_margin_bottom(6)
222                frame_box.set_margin_top(6)
223                frame_box.set_margin_left(6)
224                frame_box.set_margin_right(6)
225                dow_box=Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
226                work_days_box=Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
227                work_days_box.add(self.chk_monday)
228                work_days_box.add(self.chk_tuesday)
229                work_days_box.add(self.chk_wednesday)
230                work_days_box.add(self.chk_thursday)
231                work_days_box.add(self.chk_friday)
232                work_days_box.set_focus_chain([self.chk_monday,self.chk_tuesday,self.chk_wednesday,self.chk_thursday,self.chk_friday])
233                dow_box.add(work_days_box)
234                weekend_days_box=Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
235                dow_box.add(weekend_days_box)
236                weekend_days_box.add(self.chk_saturday)
237                weekend_days_box.add(self.chk_sunday)
238                weekend_days_box.set_focus_chain([self.chk_saturday,self.chk_sunday])
239                dow_box.set_focus_chain([work_days_box,weekend_days_box])
240                frame_box.add(dow_box)
241                label=Gtk.Label()
242                label.set_margin_bottom(WIDGET_MARGIN)
243                self.interval_box=Gtk.Box()
244                if self.expert_mode:
245                        label.set_text(_("Time & date"))
246                        minBoxPos=Gtk.PositionType.BOTTOM
247                        labelCol=1
248                        dowCol=0
249                        gtkGrid.set_column_spacing(WIDGET_MARGIN*5)
250                        gtkGrid.attach(dow_frame,0,1,1,6)
251                        gtkGrid.attach(label,1,1,1,1)
252                        self.time_box.set_valign(Gtk.Align.CENTER)
253                        self.time_box.set_halign(Gtk.Align.CENTER)
254                        self.time_box.set_margin_bottom(WIDGET_MARGIN)
255                        gtkGrid.attach_next_to(self.time_box,label,Gtk.PositionType.BOTTOM,1,2)
256#                       gtkGrid.attach_next_to(self.minute_box,self.hour_box,Gtk.PositionType.BOTTOM,1,1)
257                        gtkGrid.attach_next_to(self.month_box,self.time_box,Gtk.PositionType.BOTTOM,1,1)
258                        gtkGrid.attach_next_to(self.day_box,self.month_box,Gtk.PositionType.BOTTOM,1,1)
259                        label=Gtk.Label(_("Time intervals"))
260                        label.set_margin_bottom(WIDGET_MARGIN)
261                        gtkGrid.attach(label,2,1,2,1)
262                        gtkGrid.attach_next_to(self.chk_interval,label,Gtk.PositionType.BOTTOM,1,1)
263                        self.interval_box.add(Gtk.Label(_("Each")))
264                        self.interval_box.add(self.cmb_interval)
265                        self.interval_box.add(self.cmb_dates)
266                        gtkGrid.attach_next_to(self.interval_box,self.chk_interval,Gtk.PositionType.BOTTOM,1,1)
267                        gtkGrid.attach_next_to(self.chk_special_dates,self.interval_box,Gtk.PositionType.BOTTOM,1,1)
268                else:
269                        label.set_text(_("Time"))
270                        gtkGrid.set_column_spacing(WIDGET_MARGIN*10)
271                        gtkGrid.attach(dow_frame,1,1,1,6)
272                        gtkGrid.attach(label,2,1,1,1)
273                        gtkGrid.attach_next_to(self.time_box,label,Gtk.PositionType.BOTTOM,1,4)
274#                       gtkGrid.attach_next_to(self.minute_box,self.hour_box,Gtk.PositionType.RIGHT,1,1)
275#                       gtkGrid.set_row_homogeneous(True)
276
277                if btn_apply:
278                        self.btn_apply.set_halign(Gtk.Align.END)
279                        self.btn_apply.set_valign(Gtk.Align.END)
280                        gtkGrid.attach(self.btn_apply,4,7,2,1)
281                self.chk_node=Gtk.CheckButton()
282                self.chk_node.set_margin_top(12)
283                self.chk_node.set_halign(Gtk.Align.START)
284                self.chk_node.set_valign(Gtk.Align.START)
285                gtkGrid.attach(self.chk_node,0,7,1,1)
286                self.chk_node.set_label("Advanced")
287                self.chk_node.set_active(self.expert_mode)
288
289                #Tab order chain
290                widget_array=[dow_frame,self.hour_box,self.minute_box,self.month_box,self.day_box,self.chk_interval,\
291                                                self.interval_box,self.chk_special_dates]
292                if btn_apply:
293                        widget_array.append(self.btn_apply)
294
295                gtkGrid.set_focus_chain(widget_array)
296                #Add data to combos
297                self._load_date_time_data('minute')
298                self._load_date_time_data('hour')
299                self._load_date_time_data('day')
300                self._load_date_time_data('month')
301                #handled signals
302                interval_handler=self.cmb_interval.connect("changed",self._parse_scheduled)
303                #Signals
304                self.chk_monday.connect("toggled",self._enable_fixed_dates,interval_handler)
305                self.chk_thursday.connect("toggled",self._enable_fixed_dates,interval_handler)
306                self.chk_wednesday.connect("toggled",self._enable_fixed_dates,interval_handler)
307                self.chk_tuesday.connect("toggled",self._enable_fixed_dates,interval_handler)
308                self.chk_friday.connect("toggled",self._enable_fixed_dates,interval_handler)
309                self.chk_saturday.connect("toggled",self._enable_fixed_dates,interval_handler)
310                self.chk_sunday.connect("toggled",self._enable_fixed_dates,interval_handler)
311                self.chk_interval.connect("toggled",self._chk_interval_status)
312                self.chk_special_dates.connect("toggled",self._chk_special_dates_status)
313                self.cmb_dates.connect("changed",self._load_interval_data,interval_handler)
314                self.cmb_handler={}
315                self.cmb_handler[self.cmb_months]=self.cmb_months.connect("changed",self._parse_scheduled)
316                self.cmb_handler[self.cmb_days]=self.cmb_days.connect("changed",self._parse_scheduled)
317#               self.cmb_handler[self.cmb_hours]=self.cmb_hours.connect("changed",self._parse_scheduled)
318                self.cmb_handler[self.spin_hour]=self.spin_hour.connect("changed",self._parse_scheduled)
319#               self.cmb_handler[self.cmb_minutes]=self.cmb_minutes.connect("changed",self._parse_scheduled)
320                self.cmb_handler[self.spin_min]=self.spin_min.connect("changed",self._parse_scheduled)
321                gtkGrid.connect("event",self._parse_scheduled)
322                self.chk_node.connect("toggled",self._enable_expert_mode,gtkGrid,btn_apply)
323
324                #Initial control status
325                self.interval_box.set_sensitive(False)
326                #signals
327#               gtkGrid.set_valign(Gtk.Align.CENTER)
328#               gtkGrid.set_halign(Gtk.Align.CENTER)
329                return (gtkGrid)
330        #def render_form
331
332        def _enable_expert_mode(self,widget,gtkgrid,btn_apply):
333                self.expert_mode=self.chk_node.get_active()
334                for grid_widget in gtkgrid.get_children():
335                        gtkgrid.remove(grid_widget)
336                parent=gtkgrid.get_parent()
337                parent.remove(gtkgrid)
338                gtkgrid=self.render_form(gtkgrid,btn_apply)
339                parent.add(gtkgrid)
340                parent.show_all()
341
342
343        def load_task_details(self,task_name,task_serial,task_data,task_type):
344                self.clear_screen()
345                for widget,handler in self.cmb_handler.items():
346                        widget.handler_block(handler)
347                self.task_name=task_name
348                self.task_serial=task_serial
349                self.task_cmd=task_data['cmd']
350                self.task_type=task_type
351                self.lbl_info.set_text('')
352                if task_data['m'].isdigit():
353#                       self.cmb_minutes.set_active(cursor-1)
354                        self.spin_min.set_value(int(task_data['m']))
355                else:
356#                       self.cmb_minutes.set_active(0)
357                        self.spin_min.set_value(0)
358
359                if task_data['h'].isdigit():
360                        self.spin_hour.set_value(int(task_data['h']))
361                else:
362#                       self.cmb_minutes.set_active(0)
363                        self._parse_date_details(task_data['h'],None,'hour')
364
365#               self._parse_date_details(task_data['h'],self.cmb_hours,'hour')
366                self._parse_date_details(task_data['dom'],self.cmb_days,'dom')
367                self._parse_date_details(task_data['mon'],self.cmb_months,'mon')
368                widget_dict={'0':self.chk_sunday,'1':self.chk_monday,'2':self.chk_tuesday,\
369                                        '3':self.chk_wednesday,'4':self.chk_thursday,'5':self.chk_friday,\
370                                        '6':self.chk_saturday,'7':self.chk_sunday}
371                self._parse_date_details(task_data['dow'],None,'dow',widget_dict)
372                if 'lmd' in task_data.keys():
373                        self.chk_special_dates.set_active(True)
374                for widget,handler in self.cmb_handler.items():
375                        widget.handler_unblock(handler)
376        #def load_task_details
377
378        def _parse_date_details(self,date,widget=None,date_type=None,widget_dict=None):
379                if date.isdigit() and widget:
380                        widget.set_active(int(date))
381                elif '/' in date:
382                        pos=date.split('/')
383                        self.chk_interval.set_active(True)
384                        self.cmb_interval.set_active(int(pos[1])-1)
385                        if date_type=='hour':
386                                self.spin_hour.set_value(0)
387#                               self.cmb_dates.set_active(0)
388                                self.hour_box.set_sensitive(False)
389                        elif date_type=='dom':
390                                self.cmb_dates.set_active(1)
391                                self.day_box.set_sensitive(False)
392                                self.hour_box.set_sensitive(True)
393                        elif date_type=='mon':
394                                self.cmb_interval.set_active(int(pos[1])-1)
395                                self.cmb_dates.set_active(3)
396                                self.month_box.set_sensitive(False)
397                                self.hour_box.set_sensitive(True)
398                elif widget_dict:
399                        array_date=[]
400                        if ',' in date:
401                                array_date=date.split(',')
402                        else:
403                                array_date.append(date)
404
405                        for selected_date in array_date:
406                                if selected_date.isdigit():
407                                        widget_dict[selected_date].set_active(True)
408        #def _parse_date_details
409
410        def clear_screen(self):
411                widgets=[self.chk_monday,self.chk_thursday,self.chk_wednesday,self.chk_tuesday,\
412                                self.chk_friday,self.chk_saturday,self.chk_sunday]
413                for widget in widgets:
414                        widget.set_active(False)
415#               self.cmb_hours.set_active(0)
416                self.spin_hour.set_value(0)
417#               self.cmb_minutes.set_active(0)
418                self.spin_min.set_value(0)
419                self.cmb_days.set_active(0)
420                self.cmb_months.set_active(0)
421                self.cmb_interval.set_active(0)
422                self.cmb_dates.set_active(0)
423                self.chk_special_dates.set_active(False)
424                self.chk_interval.set_active(False)
425        #def clear_screen
426       
427        def _set_sensitive_widget(self,widget_dic):
428                for widget,status in widget_dic.items():
429                        widget.set_sensitive(status)
430        #def _set_sensitive_widget
431       
432        def _changed_interval(self):
433                if self.chk_interval.get_active():
434                        interval=self.cmb_dates.get_active_text()
435                        if interval==_('hour(s)'):
436                                self._set_sensitive_widget({self.day_box:not self._get_days_active(),\
437                                                self.month_box:True,self.hour_box:False})
438                                self._set_days_sensitive(True)
439                        elif interval==_('day(s)') or interval==_('week(s)'):
440                                self._set_sensitive_widget({self.day_box:False,self.month_box:True,self.hour_box:True})
441                                self._set_days_sensitive(False)
442                        elif interval==_('month(s)'):
443                                self._set_sensitive_widget({self.day_box:not self._get_days_active(),\
444                                                self.month_box:False,self.hour_box:True})
445                                self._set_days_sensitive(True)
446                self._chk_special_dates_status()
447        #def _changed_interval
448
449
450        def _chk_interval_status(self,widget):
451                if self.chk_interval.get_active():
452                        self._set_sensitive_widget({self.interval_box:True,\
453                                self.hour_box:False,self.month_box:True,self.day_box:not self._get_days_active()})
454                        self._changed_interval()
455                else:
456                        self._set_sensitive_widget({self.interval_box:False,\
457                                self.hour_box:True,self.month_box:True,self.day_box:not self._get_days_active()})
458                self._chk_special_dates_status()
459        #def _chk_interval_status
460                       
461        def _chk_special_dates_status(self,widget=None):
462                if self.chk_special_dates.get_active():
463                        self._set_sensitive_widget({self.hour_box:True,self.month_box:True,self.day_box:False})
464                        self._set_days_sensitive(False)
465                else:
466                        self._set_sensitive_widget({self.day_box:not self._get_days_active()})
467                        self._set_days_sensitive(True)
468        #def _chk_special_dates_status
469
470        def _get_days_active(self):
471                sw_active=False
472                widgets=[self.chk_monday,
473                                self.chk_thursday,
474                                self.chk_wednesday,
475                                self.chk_tuesday,
476                                self.chk_friday,
477                                self.chk_saturday,
478                                self.chk_sunday]
479                for widget in widgets:
480                        if widget.get_active():
481                                sw_active=True
482                                break
483                return sw_active
484        #def _get_days_active
485
486        def _enable_fixed_dates(self,widget,handler=None):
487                sw_enable=True
488                sw_enable=self._get_days_active()
489                if sw_enable:
490                        if self.chk_interval.get_active():
491                                self._load_interval_data(True,handler)
492                                self.day_box.set_sensitive(False)
493                        else:
494                                self.month_box.set_sensitive(True)
495                                self.day_box.set_sensitive(False)
496                else:
497                        if self.chk_interval.get_active():
498                                self._load_interval_data(True,handler)
499                        else:
500                                self.day_box.set_sensitive(True)
501                                self.month_box.set_sensitive(True)
502        #def _enable_fixed_dates
503
504        def _set_days_sensitive(self,state):
505                if self.chk_special_dates.get_active():
506                        state=False
507                widgets=[self.chk_monday,
508                                self.chk_thursday,
509                                self.chk_wednesday,
510                                self.chk_tuesday,
511                                self.chk_friday,
512                                self.chk_saturday,
513                                self.chk_sunday]
514                for widget in widgets:
515                        widget.set_sensitive(state)
516        #def _set_days_sensitive
517
518        def _parse_screen(self):
519                details={}
520                dow=''
521                widgets=[self.chk_monday,self.chk_thursday,     self.chk_wednesday,     self.chk_tuesday,\
522                                self.chk_friday,self.chk_saturday,self.chk_sunday]
523                cont=1
524                for widget in widgets:
525                        if widget.get_active() and widget.get_sensitive():
526                                dow+=str(cont)+','
527                        cont+=1
528                if dow!='':
529                        dow=dow.rstrip(',')
530                else:
531                        dow='*'
532                details['dow']=dow
533                #Init date data
534                for i in ["h","m","mon","dom"]:
535                        details[i]="*"
536                #load data
537#               if self.cmb_hours.is_sensitive():
538                if self.spin_hour.is_sensitive():
539#                       details["h"]=self.spin_hours.get_active_text()
540                        details["h"]=str(self.spin_hour.get_value_as_int())
541#               if self.cmb_minutes.is_sensitive():
542                if self.spin_min.is_sensitive():
543#                       details["m"]=self.cmb_minutes.get_active_text()
544                        details["m"]=str(self.spin_min.get_value_as_int())
545                if self.cmb_months.is_sensitive():
546                        if self.cmb_months.get_active()>0:
547                                details["mon"]=str(self.cmb_months.get_active())
548                if self.cmb_days.is_sensitive():
549                        if self.cmb_days.get_active_text().isdigit():
550                                details["dom"]=self.cmb_days.get_active_text()
551
552                if self.cmb_dates.is_sensitive():
553                        if self.cmb_dates.get_active_text()==_('hour(s)'):
554                                details['h']="0/"+self.cmb_interval.get_active_text()
555                        if self.cmb_dates.get_active_text()==_('day(s)'):
556                                details['dom']="1/"+self.cmb_interval.get_active_text()
557                        if self.cmb_dates.get_active_text()==_('week(s)'):
558                                week=int(self.cmb_interval.get_active_text())*7
559                                details['dom']="1/"+str(week)
560                        if self.cmb_dates.get_active_text()==_('month(s)'):
561                                details['mon']="1/"+self.cmb_interval.get_active_text()
562                details['hidden']=0
563                if self.chk_special_dates.get_active():
564                        details['lmd']=1
565                        details['dom']='*'
566                        details['dow']='*'
567                return details
568        #def _parse_screen
569
570        def _parse_scheduled(self,container=None,widget=None):
571                details=self._parse_screen()
572                self.lbl_info.set_text(self.parser.parse_taskData(details))
573        #def _parse_scheduled
574
575        def update_task_details(self,widget=None):
576                if self.task_name and self.task_serial:
577                        task_data=self.get_task_details()
578                        return self.scheduler_client.write_tasks(task_data,self.task_type)
579        #def update_task_details
580
581        def get_task_details(self,widget=None,task_name=None,task_serial=None,task_cmd=None,task_type=None):
582                if task_name:
583                        self.task_name=task_name
584                if task_serial:
585                        self.task_serial=task_serial
586                if task_cmd:
587                        self.task_cmd=task_cmd
588                if task_type:
589                        self.task_type=task_type
590                details=self._parse_screen()
591                details['cmd']=self.scheduler_client.get_task_command(self.task_cmd)
592                if 'lmd' in details.keys():
593                        details['cmd']=self.ldm_helper+' '+details['cmd']
594                task={}
595                task[self.task_name]={self.task_serial:details}
596                self._debug("Saving %s"%task)
597                return task
598        #def get_task_details
Note: See TracBrowser for help on using the repository browser.