Ignore:
Timestamp:
Feb 2, 2018, 1:23:44 AM (3 years ago)
Author:
Juanma
Message:

WIP on modes(new approach)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • taskscheduler/trunk/fuentes/scheduler-gui.install/usr/share/taskscheduler/bin/taskScheduler.py

    r6742 r6755  
    4545                self.last_task_type='remote'
    4646                self.ldm_helper='/usr/sbin/sched-ldm.sh'
    47                 self.orig_tasks={}
    48                 self.orig_cmd={}
     47                self.i18n={}
     48                self.types={'fix':TaskDetails,'repeat':'TaskRepeat','days':TaskDetails}
    4949                       
    5050        #def __init__           
     
    119119                self.btn_remote_tasks=builder.get_object("btn_remote_tasks")
    120120                self.btn_local_tasks=builder.get_object("btn_local_tasks")
    121                 self.handler_remote=self.btn_remote_tasks.connect("clicked",self.view_tasks_clicked,'remote')
    122                 self.handler_local=self.btn_local_tasks.connect("clicked",self.view_tasks_clicked,'local')
     121                self.handler_remote=self.btn_remote_tasks.connect("clicked",self.view_tasks_clicked,True)
     122                self.handler_local=self.btn_local_tasks.connect("clicked",self.view_tasks_clicked,False)
    123123                self.txt_search=builder.get_object("txt_search")
    124124                self.txt_search.connect('changed',self.match_tasks)
     
    165165                self.task_details_grid.btn_apply.connect("clicked",self.update_task)
    166166                self.task_details_grid.chk_node.connect("toggled",self._reload_grid)
    167                 self.tasks_store=Gtk.ListStore(str,str,str,GdkPixbuf.Pixbuf,str)
     167                self.tasks_store=Gtk.ListStore(str,str,str,GdkPixbuf.Pixbuf,str,str)
    168168                self.tasks_store_filter=self.tasks_store.filter_new()
    169169                self.tasks_store_filter.set_visible_func(self.filter_tasklist)
     
    207207                column.pack_start(cell,True)
    208208                column.add_attribute(cell,"markup",4)
     209                column.set_expand(True)
     210                column.set_visible(False)
     211                self.tasks_tv.append_column(column)
     212               
     213                column=Gtk.TreeViewColumn(_("Type"))
     214                cell=Gtk.CellRendererText()
     215                column.pack_start(cell,True)
     216                column.add_attribute(cell,"markup",5)
    209217                column.set_expand(True)
    210218                column.set_visible(False)
     
    242250                cmb_cmds=Gtk.ComboBoxText()
    243251                cmds=self.scheduler_client.get_commands()
    244                 orig_cmd={}
     252                i18n_cmd={}
    245253                for cmd in cmds.keys():
    246                         orig_cmd[_(cmd)]=cmd
     254                        i18n_cmd[_(cmd)]=cmd
    247255                        cmb_cmds.append_text(_(cmd))
    248256
     
    267275                btn_file.set_sensitive(False)
    268276                self.btn_apply_manage=builder.get_object("btn_apply_manage")
    269                 self.btn_apply_manage.connect("clicked",self._add_custom_task,txt_taskname,cmb_cmds,txt_params,chk_parm_is_file,btn_file,orig_cmd)
     277                self.btn_apply_manage.connect("clicked",self._add_custom_task,txt_taskname,cmb_cmds,txt_params,chk_parm_is_file,btn_file,i18n_cmd)
    270278                self.btn_back_manage=builder.get_object("btn_back_manage")
    271279                self.btn_back_manage.connect("clicked",self._cancel_manage_clicked)
     
    281289        #def _enable_filechooser
    282290
    283         def _add_custom_task(self,widget,w_name,w_cmd,w_parms,w_chk,w_file,orig_cmd):
     291        def _add_custom_task(self,widget,w_name,w_cmd,w_parms,w_chk,w_file,i18n_cmd):
    284292                name=w_name.get_text()
    285293                cmd=w_cmd.get_active_text()
    286                 cmd_desc=orig_cmd[cmd]
     294                cmd_desc=i18n_cmd[cmd]
    287295                parms=w_parms.get_text()
    288296                cmd=self.scheduler_client.get_command_cmd(cmd_desc)
     
    306314        #def _signin
    307315
    308         def populate_tasks_tv(self,task_type):
     316        def populate_tasks_tv(self,sw_remote=False):
    309317                self._debug("Populating task list")
    310318                self.task_details_grid.btn_apply.set_sensitive(False)
     
    312320                tasks=[]
    313321                sw_tasks=False
    314                 tasks=self.scheduler_client.get_scheduled_tasks(task_type)
     322                tasks=self.scheduler_client.get_scheduled_tasks(sw_remote)
    315323                self.tasks_store.clear()
    316324                if type(tasks)==type([]):       
     
    325333                                                task['cmd']=task['cmd'].replace(self.ldm_helper+' ','')
    326334                                                task['action']=self.scheduler_client.get_task_description(task['cmd'])
    327                                                 self.orig_cmd[_(task['action'])]=task['action']
    328                                                 self.orig_tasks[_(task_name)]=task_name
     335                                                task['type']=task['type']
     336                                                self.i18n['cmd']={_(task['action']):task['action']}
     337                                                self.i18n['name']={_(task_name):task_name}
    329338                                                self.tasks_store.append(("<span font='Roboto'><b>"+_(task['action'])+"</b></span>\n"+\
    330339                                                                        "<span font='Roboto' size='small'><i>"+\
    331340                                                                        _(task_name)+"</i></span>",serial,"<span font='Roboto' size='small'>"+\
    332                                                                         parsed_calendar+"</span>",self.remove_icon,'oooo'))
     341                                                                        parsed_calendar+"</span>",self.remove_icon,'',task['type']))
    333342                if sw_tasks:
    334343                        self.task_details_grid.btn_apply.set_sensitive(True)
     
    358367                self._debug("task clicked %s"%event)
    359368                self.task_details_grid.clear_screen()
     369                task={}
    360370                sw_show=True
    361371                if event!=None:
     
    374384                if not data:
    375385                        return
    376                 task_data=model[data][0].split('\n')
    377                 task_serial=model[data][1].split('\n')[0]
    378                 cmd=task_data[0][task_data[0].find("<b>")+3:task_data[0].find("</b>")]
    379                 if cmd in self.orig_cmd.keys():
    380                         task_cmd=self.orig_cmd[cmd]
    381 
    382                 name=task_data[1][task_data[1].find("<i>")+3:task_data[1].find("</i>")]
    383                 if name in self.orig_tasks.keys():
    384                         task_name=self.orig_tasks[name]
    385 
    386                 task_serial=model[data][1]
     386                task['data']=model[data][0].split('\n')
     387                task['serial']=model[data][1].split('\n')[0]
     388                cmd=task['data'][0][task['data'][0].find("<b>")+3:task['data'][0].find("</b>")]
     389                if cmd in self.i18n['cmd'].keys():
     390                        task['cmd']=self.i18n['cmd'][cmd]
     391                else:
     392                        task['cmd']=cmd
     393
     394                name=task['data'][1][task['data'][1].find("<i>")+3:task['data'][1].find("</i>")]
     395                if name in self.i18n['name'].keys():
     396                        task['name']=self.i18n['name'][name]
     397                else:
     398                        task['name']=name
     399
     400                task['serial']=model[data][1]
    387401                if self.btn_remote_tasks.get_active():
    388402                        task_type='remote'
     403                        task['sw_remote']=True
    389404                else:
    390405                        task_type='local'
     406                        task['sw_remote']=False
    391407                if sw_show:
    392                         if task_name in self.scheduled_tasks.keys():
    393                                 if task_serial in self.scheduled_tasks[task_name].keys():
    394                                         task_data=self.scheduled_tasks[task_name][task_serial]
    395                                         self._debug("Loading details of %s task %s of group %s"% (task_type,task_serial,task_name))
    396                                         self.task_details_grid.load_task_details(task_name,task_serial,task_data,task_type)
     408                        if task['name'] in self.scheduled_tasks.keys():
     409                                if task['serial'] in self.scheduled_tasks[task['name']].keys():
     410                                        task['data']=self.scheduled_tasks[task['name']][task['serial']]
     411                                        self._debug("Loading details of task %s of group %s remote %s"% (task['serial'],task['name'],task['sw_remote']))
     412                                        self.task_details_grid.set_task_data(task)
     413                                        self.task_details_grid.load_task_details()
    397414                else:
    398415                        self.lbl_question.set_text(_("Are you sure to delete this task?"))
     
    409426
    410427        def save_task_details(self,widget):
     428                task={}
    411429                name=self.cmb_task_names.get_active_text()
    412                 task_name=self.orig_tasks[name]
     430#               task_name=self.orig_tasks[name]
     431                task['name']=self.i18n['name'][name]
    413432                action=self.cmb_task_cmds.get_active_text()
    414                 task_action=self.orig_cmd[action]
     433                i18n_action=self.i18n['cmd'][action]
    415434                tasks=self.scheduler_client.get_available_tasks()
    416                 task_cmd=tasks[task_name][task_action]
    417                 task_type='local'
     435                task['cmd']=tasks[task_name][i18n_action]
     436                task['sw_remote']=False
     437#               task_type='local'
    418438                if self.btn_remote_tasks.get_active():
    419                         task_type='remote'
    420                 task=self.add_task_grid.get_task_details(self.inf_message,task_name,None,task_cmd,task_type)
    421 
    422                 taskFilter='local'
     439                        task['sw_remote']=True
     440#                       task_type='remote'
     441                self.add_task_grid.set_task_data(task)
     442                task=self.add_task_grid.get_task_details()
     443
    423444                self._debug("Writing task info...")
    424445                if self.chk_remote.get_active():
     
    433454        #def save_task_details
    434455
    435         def view_tasks_clicked(self,widget,task_type):
     456        def view_tasks_clicked(self,widget,sw_remote):
    436457                if widget:
    437458                        if not widget.get_active():
    438                                 if task_type=='remote':
     459                                if sw_remote:
    439460                                        self._block_widget_state(True,widget,self.handler_remote)
    440461                                else:                                   
    441462                                        self._block_widget_state(True,widget,self.handler_local)
    442463                                return True
    443                 self._debug("loading %s tasks" % task_type)
    444                 if task_type=='remote':
     464                self._debug("loading tasks (remote: %s)" % sw_remote)
     465                if sw_remote:
    445466                        self.btn_local_tasks.set_active(False)
    446467                        self.btn_local_tasks.props.active=False
     
    451472                        self.last_task_type='local'
    452473                self._debug("Task clicked")
    453                 self.populate_tasks_tv(task_type)
     474                self.populate_tasks_tv(sw_remote)
    454475                self.tasks_tv.set_model(self.tasks_store_filter)
    455476                self.tasks_tv.set_cursor(0)
     
    476497                tasks=[]
    477498                names=[]
    478                 self.orig_tasks={}
     499#               self.orig_tasks={}
    479500                self.cmb_task_names.remove_all()
    480501                tasks=self.scheduler_client.get_available_tasks()
     
    482503                        if name not in names:
    483504                                names.append(name)
    484                                 self.orig_tasks[_(name)]=name
     505                                self.i18n['name']={_(name):name}
     506#                               self.orig_tasks[_(name)]=name
    485507                                print("PROCESS %s"%name)
    486508                                self.cmb_task_names.append_text(_(name))
     
    492514        def load_add_task_details_cmds(self,widget,tasks):
    493515                actions=[]
    494                 self.orig_cmd={}
     516                self.i18n['cmd']={}
    495517                self.cmb_task_cmds.remove_all()
    496518                task_name=self.cmb_task_names.get_active_text()
    497519                if task_name:
    498                         orig_name=self.orig_tasks[task_name]
     520#                       orig_name=self.orig_tasks[task_name]
     521                        orig_name=self.i18n['name'][task_name]
    499522                        print(tasks)
    500523                        for action in tasks[orig_name].keys():
    501524                                if action not in actions:
    502                                         self.orig_cmd[_(action)]=action
     525                                        self.i18n['cmd'][_(action)]=action
    503526                                        actions.append(action)
    504527                                        self.cmb_task_cmds.append_text(_(action))
     
    560583                if response==Gtk.ResponseType.OK:
    561584                        self.inf_question.hide()
    562                         if task_name in self.orig_tasks.keys():
    563                                 name=self.orig_tasks[task_name]
     585                        if task_name in self.i18n['name'].keys():
     586                                name=self.i18n['name'][task_name]
    564587                        else:
    565588                                name=task_name
    566                         if task_cmd in self.orig_cmd.keys():
    567                                 cmd=self.orig_cmd[task_cmd]
     589                        if task_cmd in self.i18n['cmd'].keys():
     590                                cmd=self.i18n['cmd'][task_cmd]
    568591                        else:
    569592                                cmd=task_cmd
Note: See TracChangeset for help on using the changeset viewer.