예제 #1
0
   def delete_function(self,parent):
      global l_menu
      menu_name = self.eny3.get()
      func_name = self.eny8.get()

      if len(func_name) == 0:
          return
      
      if gui_message.ask('Do you really want to delete function [%s]?'%func_name):
          for i in range(len(l_menu)):
              if l_menu[i]['m_nam'] == menu_name:
                  functions = l_menu[i]['m_items']
                  number_of_functions = len(functions)
                  for j in range(number_of_functions):
                      if functions[j]['i_nam'] == func_name:
                          del l_menu[i]['m_items'][j]
                          index = parent.menu.main_menu.component('%s-menu'%menu_name).index(func_name)
                          parent.menu.main_menu.component('%s-menu'%menu_name).delete(index)
                          self.functions.remove(func_name)
                          try:
                              os.remove('%s/PCMDI_GRAPHICS/%s_%s.py'%(os.environ['HOME'],menu_name,func_name))
                          except:
                              pass

                          try:
                              os.remove('%s/PCMDI_GRAPHICS/%s_%s.pyo'%(os.environ['HOME'],menu_name,func_name))
                          except:
                              pass
                          self.eny8.clear()
                          if len(self.functions) > 0:
                              self.eny8.setlist(self.functions)
                          break  
                  break
      gui_saved_settings.save_menus() 
예제 #2
0
    def rename(self, evt=None):
        global l_menu
        menu_name = self.eny3.get()
        function_name = self.eny8.get()
        new_name = self.eny8a.get()
        # If user tried to change the name but did not enter a new name, return
        if len(new_name) == 0:
            return
        else:
            for i in range(len(l_menu)):
                if l_menu[i]['m_nam'] == menu_name:
                    for j in range(len(l_menu[i]['m_items'])):
                        # Check to see if function name already exists
                        if l_menu[i]['m_items'][j]['i_nam'] == new_name:
                            gui_message.error('Function name already exists')
                            return
                        if l_menu[i]['m_items'][j]['i_nam'] == function_name:
                            try:
                                old_filename = '%s/PCMDI_GRAPHICS/%s_%s.py' % (
                                    os.environ['HOME'], l_menu[i]['m_nam'],
                                    function_name)
                                new_filename = '%s/%s_%s.py' % (
                                    os.path.dirname(old_filename),
                                    l_menu[i]['m_nam'], new_name)
                                infile = open(old_filename, 'r')
                                outfile = open(new_filename, 'w')
                                a = infile.read().split('\n')
                                # Change function wrapper to use new name
                                a[0] = 'def %s( item_name, func_dir ):' % new_name
                                for k in range(len(a)):
                                    outfile.write('%s\n' % a[k])
                                outfile.close()
                                # Remove old files
                                try:
                                    os.remove(old_filename)
                                except:
                                    pass

                                try:
                                    os.remove('%so' % old_filename)
                                except:
                                    pass

                                l_menu[i]['m_items'][j]['i_nam'] = new_name
                                index = self.functions.index(function_name)
                                self.functions[index] = new_name
                                # Dean will add code here to rename a function
                                #  and change the command of that function to
                                #  the new wrapped py file
                                self.eny8.setlist(self.functions)
                                self.eny8.setentry(new_name)
                            except os.error, values:
                                gui_message.error('Could not rename file: %s' %
                                                  values[1])
                                return
                            break
                    break
            gui_saved_settings.save_menus()
예제 #3
0
   def rename(self,evt = None):
      global l_menu
      menu_name = self.eny3.get()
      function_name = self.eny8.get()
      new_name = self.eny8a.get() 
      # If user tried to change the name but did not enter a new name, return
      if len(new_name) == 0:
          return
      else:
          for i in range(len(l_menu)):
              if l_menu[i]['m_nam'] == menu_name:
                  for j in range(len(l_menu[i]['m_items'])):
                      # Check to see if function name already exists
                      if l_menu[i]['m_items'][j]['i_nam'] == new_name:
                          gui_message.error('Function name already exists')
                          return
                      if l_menu[i]['m_items'][j]['i_nam'] == function_name:
                          try:
                              old_filename = '%s/PCMDI_GRAPHICS/%s_%s.py'%(os.environ['HOME'],l_menu[i]['m_nam'],function_name)
                              new_filename = '%s/%s_%s.py'%(os.path.dirname(old_filename),l_menu[i]['m_nam'],new_name)
                              infile = open(old_filename,'r')
                              outfile = open(new_filename,'w')
                              a = infile.read().split('\n')
                              # Change function wrapper to use new name
                              a[0] = 'def %s( item_name, func_dir ):'%new_name
                              for k in range(len(a)):
                                  outfile.write('%s\n'%a[k]) 
                              outfile.close()
                              # Remove old files
                              try:
                                  os.remove(old_filename)
                              except:
                                  pass

                              try:
                                  os.remove('%so'%old_filename)
                              except:
                                  pass

                              l_menu[i]['m_items'][j]['i_nam'] = new_name 
                              index = self.functions.index(function_name)
                              self.functions[index] = new_name 
                              # Dean will add code here to rename a function
                              #  and change the command of that function to
                              #  the new wrapped py file
                              self.eny8.setlist(self.functions)
                              self.eny8.setentry(new_name)
                          except os.error, values:
                              gui_message.error( 'Could not rename file: %s'%values[1])
                              return
                          break
                  break  
          gui_saved_settings.save_menus()
예제 #4
0
   def change_description(self,parent,evt = None):
        global l_menu
        a = parent.menu.main_menu
        nam = self.eny3.get()
        descrip = self.eny4.get()
        
        if len(nam) == 0:
            return

        # Freakin' yeah, this was tough enough to figure out  =)
        parent.balloon.bind(parent.menu.main_menu.component('%s-button'%nam),descrip)
        for i in range(len(l_menu)):
            if l_menu[i]['m_nam'] == nam:
                l_menu[i]['m_info'] = descrip
                gui_saved_settings.save_menus()
                break
예제 #5
0
    def del_top_menu(self, parent):
        global l_menu

        a = parent.menu.main_menu
        nam = self.eny9.get()
        if len(nam) == 0:
            return
        if not (gui_message.ask(
                'Do you really want to\ndelete menu [%s]?' % nam)):
            return

        for i in range(len(l_menu)):
            if l_menu[i]['m_nam'] == nam:
                a.deletemenu(nam)
                del l_menu[i]

                #--------------------------------------
                # Remove files from ~/PCMDI_GRAPHICS
                #--------------------------------------
                menuname = glob(os.environ['HOME'] + '/PCMDI_GRAPHICS/' + nam +
                                '.py')
                if menuname:
                    os.remove(menuname)
                menuitems = glob(os.environ['HOME'] + '/PCMDI_GRAPHICS/' +
                                 nam + '_*.py*')
                for j in range(len(menuitems)):
                    os.remove(menuitems[j])

                for k in range(len(self.menus)):
                    if self.menus[k] == nam:
                        del self.menus[k]
                        self.eny3.setlist(self.menus)
                        self.eny9.setlist(self.menus)
                        self.eny9.setentry('')
                        if nam == self.eny3.get():
                            self.eny3.setentry('')
                            self.functions = []
                            self.func_list = []
                            self.eny4.clear()
                            self.eny5_file.clear()
                            self.eny6.clear()
                            self.eny7.clear()
                            self.eny8.clear()
                        break
                break
        gui_saved_settings.save_menus()
예제 #6
0
    def change_description(self, parent, evt=None):
        global l_menu
        a = parent.menu.main_menu
        nam = self.eny3.get()
        descrip = self.eny4.get()

        if len(nam) == 0:
            return

        # Freakin' yeah, this was tough enough to figure out  =)
        parent.balloon.bind(parent.menu.main_menu.component('%s-button' % nam),
                            descrip)
        for i in range(len(l_menu)):
            if l_menu[i]['m_nam'] == nam:
                l_menu[i]['m_info'] = descrip
                gui_saved_settings.save_menus()
                break
예제 #7
0
   def del_top_menu(self,parent):
        global l_menu

        a = parent.menu.main_menu
        nam = self.eny9.get()
        if len(nam) == 0:
            return
        if not (gui_message.ask('Do you really want to\ndelete menu [%s]?'%nam)):
            return

        for i in range(len(l_menu)): 
             if l_menu[i]['m_nam'] == nam:
                 a.deletemenu(nam)
                 del l_menu[i]

                 #--------------------------------------
                 # Remove files from ~/PCMDI_GRAPHICS
                 #--------------------------------------
                 menuname = glob(os.environ['HOME']+'/PCMDI_GRAPHICS/'+nam+'.py')
                 if menuname:
                     os.remove(menuname)
                 menuitems = glob(os.environ['HOME']+'/PCMDI_GRAPHICS/'+nam+'_*.py*')
                 for j in range(len(menuitems)):
                     os.remove(menuitems[j])

                 for k in range(len(self.menus)):
                     if self.menus[k] == nam:
                         del self.menus[k] 
                         self.eny3.setlist(self.menus)
                         self.eny9.setlist(self.menus)
                         self.eny9.setentry('')
                         if nam == self.eny3.get():
                             self.eny3.setentry('')
                             self.functions = []
                             self.func_list = []
                             self.eny4.clear()
                             self.eny5_file.clear()
                             self.eny6.clear()
                             self.eny7.clear()
                             self.eny8.clear()
                         break
                 break
        gui_saved_settings.save_menus()
예제 #8
0
    def add_top_menu(self, parent, evt=None):
        global l_menu
        addmenu = 1
        a = parent.menu.main_menu
        nam = self.eny1.get()
        inf = self.eny2.get()

        if len(nam) == 0:
            gui_message.error(('Please enter a new menu name'))
            return

        for i in range(len(l_menu)):
            x = l_menu[i]
            # Add check here to make sure menu is not already defined as
            #   a main menu
            if x['m_nam'] == nam:
                addmenu = 0
                gui_message.error((
                    'Menu name already exists.\nPlease choose another menu name.'
                ))
                break

        # Update main menu and "Menu name" pull down menu. Update
        #  all appropriate fields
        if addmenu:
            men7 = a.addmenu(nam, inf, tearoff=1)
            m_dict = {'m_nam': nam, 'm_info': inf, 'm_items': []}
            l_menu.append(m_dict)
            self.menus.append(nam)
            self.eny3.setlist(self.menus)
            self.eny3.setentry(nam)
            self.eny4.setentry(inf)
            self.eny9.clear()
            self.eny9.setlist(self.menus)
            gui_saved_settings.save_menus()
            self.eny1.clear()
            self.eny2.clear()
            self.eny5_file.clear()
            self.eny5_import.clear()
            self.eny6.clear()
            self.eny7.clear()
            self.eny8.clear()
예제 #9
0
   def add_top_menu( self, parent, evt = None ):
      global l_menu
      addmenu = 1
      a = parent.menu.main_menu
      nam = self.eny1.get()
      inf = self.eny2.get()

      if len(nam) == 0:
         gui_message.error( ('Please enter a new menu name') )
         return

      for i in range( len(l_menu) ):
         x = l_menu[i]
         # Add check here to make sure menu is not already defined as 
         #   a main menu
         if x[ 'm_nam' ] == nam:
            addmenu = 0
            gui_message.error( ('Menu name already exists.\nPlease choose another menu name.'))
            break
       
      
      # Update main menu and "Menu name" pull down menu. Update
      #  all appropriate fields
      if addmenu:
              men7 = a.addmenu( nam, inf, tearoff = 1 ) 
              m_dict = { 'm_nam' : nam, 'm_info' : inf, 'm_items' : [] } 
              l_menu.append( m_dict )
              self.menus.append(nam)
              self.eny3.setlist(self.menus)
              self.eny3.setentry(nam)
              self.eny4.setentry(inf)
              self.eny9.clear()
              self.eny9.setlist(self.menus)
              gui_saved_settings.save_menus()  
              self.eny1.clear()
              self.eny2.clear()
              self.eny5_file.clear()
              self.eny5_import.clear()
              self.eny6.clear()
              self.eny7.clear()
              self.eny8.clear()
예제 #10
0
    def delete_function(self, parent):
        global l_menu
        menu_name = self.eny3.get()
        func_name = self.eny8.get()

        if len(func_name) == 0:
            return

        if gui_message.ask('Do you really want to delete function [%s]?' %
                           func_name):
            for i in range(len(l_menu)):
                if l_menu[i]['m_nam'] == menu_name:
                    functions = l_menu[i]['m_items']
                    number_of_functions = len(functions)
                    for j in range(number_of_functions):
                        if functions[j]['i_nam'] == func_name:
                            del l_menu[i]['m_items'][j]
                            index = parent.menu.main_menu.component(
                                '%s-menu' % menu_name).index(func_name)
                            parent.menu.main_menu.component(
                                '%s-menu' % menu_name).delete(index)
                            self.functions.remove(func_name)
                            try:
                                os.remove(
                                    '%s/PCMDI_GRAPHICS/%s_%s.py' %
                                    (os.environ['HOME'], menu_name, func_name))
                            except:
                                pass

                            try:
                                os.remove(
                                    '%s/PCMDI_GRAPHICS/%s_%s.pyo' %
                                    (os.environ['HOME'], menu_name, func_name))
                            except:
                                pass
                            self.eny8.clear()
                            if len(self.functions) > 0:
                                self.eny8.setlist(self.functions)
                            break
                    break
        gui_saved_settings.save_menus()
예제 #11
0
def restore_menus( parent ):
   try:
      for i in range(len(user_menus.set.menu_dict)):
         success = 1
         if user_menus.set.menu_dict[i].keys()[0] == 'Menu_name':
            nam = user_menus.set.menu_dict[i].values()[0]
            inf = user_menus.set.menu_dict[i+1].values()[0]
            menu_name = parent.menu.main_menu.addmenu( nam, inf, tearoff = 1 )
            m_dict = { 'm_nam' : nam, 
                       'm_info' : inf, 
                       'm_items' : [] }
            l_menu.append( m_dict )
   
         if user_menus.set.menu_dict[i].keys()[0] == 'item_Name':
            i_nam = user_menus.set.menu_dict[i].values()[0]
            i_dir = user_menus.set.menu_dict[i+1].values()[0]
            i_fun = user_menus.set.menu_dict[i+2].values()[0]
            i_file = user_menus.set.menu_dict[i+3].values()[0]
   
            i_dict = { 'i_nam' :i_nam,
                       'i_dir' : i_dir, 
                       'i_file' : i_file,
                       'i_fun' : i_fun
                     }
            l_item = m_dict[ 'm_items' ]
            
            pfile_name = nam + '_' + i_dict['i_nam']
            if i_dir != '-999':
                current_directory = os.getcwd()
                try:
                    eval('os.chdir(i_dir)')
                except:
                    success = 0
                    gui_message.error('Could not access module directory')
                    pass
                eval('os.chdir(current_directory)')

            try:
               exec "from %s import %s" % (pfile_name, i_dict['i_nam'])
            except:
               success = 0
               m1 = ( 'Cannot access def [ %s ] in .py file [ %s ]'
                      % (i_dict['i_nam'],pfile_name) )
               gui_message.error( m1 )
               pass
   
            try:
              f = eval( i_dict['i_nam'] )
              parent.menu.main_menu.addmenuitem( nam, 'command', ' ',
                    label = i_nam,
                    command = gui_control.Command( f, i_dict['i_nam'], i_dict['i_dir'] ) )
            except:
              success = 0
              pass

            if success:
                l_item.append( i_dict )

      gui_saved_settings.save_menus()
   except:
      pass
예제 #12
0
      try:
         exec "from %s import %s" % (pfile_name, i_dict['i_nam'])
      except Exception,err:
         m1 = ( 'Cannot access def [ %s ] in .py file [ %s ]\nError was %s'
                % (pfile_name, i_dict['i_nam'],err) )
         gui_message.error( m1 )
         return

      f = eval( i_dict['i_nam'] )

      men7 = parent.menu.main_menu.addmenuitem( menu_name, 'command', ' ',
                label = menu_item,
                command = gui_control.Command( f, i_dict['i_nam'], i_dict['i_dir'] ) )
      self.eny6.setentry('')
      self.eny7.clear()
      gui_saved_settings.save_menus()
      self.functions.append(menu_item)
      self.eny8.setlist(self.functions)

   #---------------------------------------------
   # Delete a function from the main menu bar
   #---------------------------------------------
   def delete_function(self,parent):
      global l_menu
      menu_name = self.eny3.get()
      func_name = self.eny8.get()

      if len(func_name) == 0:
          return
      
      if gui_message.ask('Do you really want to delete function [%s]?'%func_name):
예제 #13
0
def restore_menus(parent):
    try:
        for i in range(len(user_menus.set.menu_dict)):
            success = 1
            if user_menus.set.menu_dict[i].keys()[0] == 'Menu_name':
                nam = user_menus.set.menu_dict[i].values()[0]
                inf = user_menus.set.menu_dict[i + 1].values()[0]
                menu_name = parent.menu.main_menu.addmenu(nam, inf, tearoff=1)
                m_dict = {'m_nam': nam, 'm_info': inf, 'm_items': []}
                l_menu.append(m_dict)

            if user_menus.set.menu_dict[i].keys()[0] == 'item_Name':
                i_nam = user_menus.set.menu_dict[i].values()[0]
                i_dir = user_menus.set.menu_dict[i + 1].values()[0]
                i_fun = user_menus.set.menu_dict[i + 2].values()[0]
                i_file = user_menus.set.menu_dict[i + 3].values()[0]

                i_dict = {
                    'i_nam': i_nam,
                    'i_dir': i_dir,
                    'i_file': i_file,
                    'i_fun': i_fun
                }
                l_item = m_dict['m_items']

                pfile_name = nam + '_' + i_dict['i_nam']
                if i_dir != '-999':
                    current_directory = os.getcwd()
                    try:
                        eval('os.chdir(i_dir)')
                    except:
                        success = 0
                        gui_message.error('Could not access module directory')
                        pass
                    eval('os.chdir(current_directory)')

                try:
                    exec "from %s import %s" % (pfile_name, i_dict['i_nam'])
                except:
                    success = 0
                    m1 = ('Cannot access def [ %s ] in .py file [ %s ]' %
                          (i_dict['i_nam'], pfile_name))
                    gui_message.error(m1)
                    pass

                try:
                    f = eval(i_dict['i_nam'])
                    parent.menu.main_menu.addmenuitem(
                        nam,
                        'command',
                        ' ',
                        label=i_nam,
                        command=gui_control.Command(f, i_dict['i_nam'],
                                                    i_dict['i_dir']))
                except:
                    success = 0
                    pass

                if success:
                    l_item.append(i_dict)

        gui_saved_settings.save_menus()
    except:
        pass
예제 #14
0
                  (pfile_name, i_dict['i_nam'], err))
            gui_message.error(m1)
            return

        f = eval(i_dict['i_nam'])

        men7 = parent.menu.main_menu.addmenuitem(menu_name,
                                                 'command',
                                                 ' ',
                                                 label=menu_item,
                                                 command=gui_control.Command(
                                                     f, i_dict['i_nam'],
                                                     i_dict['i_dir']))
        self.eny6.setentry('')
        self.eny7.clear()
        gui_saved_settings.save_menus()
        self.functions.append(menu_item)
        self.eny8.setlist(self.functions)

    #---------------------------------------------
    # Delete a function from the main menu bar
    #---------------------------------------------
    def delete_function(self, parent):
        global l_menu
        menu_name = self.eny3.get()
        func_name = self.eny8.get()

        if len(func_name) == 0:
            return

        if gui_message.ask('Do you really want to delete function [%s]?' %