Changeset 4470 for palm/trunk/SCRIPTS


Ignore:
Timestamp:
Mar 24, 2020 6:52:19 AM (5 years ago)
Author:
maronga
Message:

funtionality improvements in palmrungui

Location:
palm/trunk/SCRIPTS
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SCRIPTS/palmrungui

    r4428 r4470  
    2525# -----------------
    2626# $Id$
     27# Added file size output, more I/O functionalities, new/removed buttons
     28#
     29# 4428 2020-02-27 11:43:53Z maronga
    2730# Bugfix for update button
    2831#
     
    9699import shutil
    97100
    98 
     101global update_frequency
     102update_frequency = 5*60000
    99103
    100104# Determine PALM directories
     
    103107   palm_dir = os.getcwd()
    104108   palm_bin = palm_dir + '/trunk/SCRIPTS'
     109   palm_source = palm_dir + '/trunk/SOURCE'
    105110   job_dir = palm_dir + '/JOBS'
    106111   user_dir = palm_dir + '/USER_CODE'
     
    113118
    114119
     120# returns the human readable file size of filename
     121def file_size(filename, suffix='B'):
     122   size_raw = os.stat(filename).st_size
     123   for unit in [' ',' K',' M',' G',' T']:
     124      if abs(size_raw) < 1024.0:
     125         return "%i%s%s" % (size_raw, unit, suffix)
     126      size_raw /= 1024.0
     127   return "%.1f%s%s" % (num, 'Y', suffix)
     128
     129
     130
    115131palmrunline = ""
    116132set_list = []
     
    135151        self.setupUi(self)
    136152   
    137         self.palm_logo.setPixmap(QtGui.QPixmap(palm_dir + "/trunk/SCRIPTS/palmrungui_files/logo.png"))       
     153        self.palm_logo.setPixmap(QtGui.QPixmap(palm_bin + "/palmrungui_files/logo.png"))       
     154       
     155        with open(palm_bin + "/palmrungui") as search:
     156           for line in search:
     157              line = line.rstrip()
     158              if "$Id" in line:
     159                 version = "Version: r" + line.split(" ")[3] + " (" + line.split(" ")[4] + ")"
     160                 self.groupBox.findChild(QtGui.QLabel,"label_version").setText(version)
     161                 break
    138162       
    139163        self.recent_jobs(50)
     
    176200
    177201
    178 
    179    
    180202        QtGui.QApplication.processEvents()
    181203
    182204
    183        
     205        # Start refresh timer. On timeout perform update
     206        self.timer = QtCore.QTimer(self)
     207        self.timer.timeout.connect(self.update_all)
     208        self.timer.setSingleShot(False)
     209        self.timer.start(update_frequency)
     210
     211        # The timetimer counts the time since last update
     212        self.timetimer= QtCore.QElapsedTimer()
     213        self.timetimer.start()
     214
     215        # The labeltimer induces the update of the remaining time in the UI
     216        self.labeltimer = QtCore.QTimer(self)
     217        self.labeltimer.timeout.connect(self.UpdatePush)
     218        self.labeltimer.setSingleShot(False)
     219
     220        # Update in the UI will be performed at each 1/10 of the update interval
     221        self.labeltimer.start(update_frequency/10)
     222        self.push_update.setText("Update (" + str(int(update_frequency/1000/60)) + " min)")
     223
    184224    # starts xterm with palmrun commandline
    185225    #######################################
     
    200240        self.groupBox.findChild(QtGui.QPushButton,"button_start").setText("wait...")     
    201241        self.groupBox.findChild(QtGui.QLineEdit,"commandline").setText("Executing palmrun in xterm...")       
    202        
     242
    203243        # Wait until all commands have been executed (ugly) ?
    204244        #for i in range(0,21):
    205245        #    qApp->processEvents()       
    206        
     246
    207247        # Start xterm as QProcess
    208248        palmrun = QProcess()
    209249        palmrun.setProcessChannelMode(QProcess.MergedChannels) # mergedChannels
    210250        palmrun.setWorkingDirectory(palm_dir)
    211    
     251
    212252        geomet = self.frameGeometry()
    213        
     253
    214254        posx = geomet.x()+geomet.width()
    215255        posy = geomet.y()
    216      
    217         s = " -title \"Executing palmrun...\" -fa \"Monospace\" -fs 11 -geometry \"80x38+%d+%d\" -e \"" % (posx,posy)
    218         palmrunline = "%s%s;echo -n '--> Press enter to continue...';read yesno\"</dev/stdin" % (s, palmrunline.replace("\"","\'"))
    219        
     256
     257        if ( os.path.isfile("palmrungui.log") ):
     258           os.remove("palmrungui.log")
     259
     260        s = " -title \"Executing palmrun...\" -fa \"Monospace\" -l -lf \"palmrungui.log\" -fs 11 -geometry \"80x38+%d+%d\" -e \"" % (posx,posy)
     261        palmrunline = "%s%s ;echo -n '--> Press enter to continue...';read yesno\"</dev/stdin" % (s, palmrunline.replace("\"","\'"))
     262
    220263        mString = "xterm %s" % (palmrunline)
    221264        palmrun.start(mString)
    222    
     265
    223266        if( palmrun.waitForStarted() is False ):
    224267            return
    225        
     268
    226269        # Wait until palmrun has finished or wait for 200 minutes
    227270        palmrun.waitForFinished(3600000)       
    228        
     271
    229272        # Jobs has been submitted or aborted. Continuing...
    230273        # Save the palmrun command to history file
     
    249292       
    250293       
    251        
     294       
     295    # Update the label
     296    def UpdatePush(self):
     297        remaining_time = (update_frequency - self.timetimer.elapsed()) / 1000 / 60
     298        self.push_update.setText("Update (" + str(remaining_time) + " min)")
     299
     300
    252301    # starts xterm with palmbuild commandline
    253302    #######################################
    254303    def startpalmbuild(self):
    255304        palmbuildline = 'palmbuild -c ' + str(self.group_execution.findChild(QtGui.QComboBox, "combo_configuration").currentText())
    256        
     305
     306        full_build = self.group_execution.findChild(QtGui.QCheckBox,"check_rebuild").checkState()
     307
     308        if ( full_build == 2 ):
     309           for filename in os.listdir(palm_source):
     310              os.utime(palm_source + "/" + filename, None)
     311
    257312        palmrunline_save = str(self.groupBox.findChild(QtGui.QLineEdit,"commandline").text())
    258        
     313
    259314        # Disable the main window
    260315        palmbuildline_save = palmbuildline
     
    312367        else:
    313368            return
    314        
     369
    315370        file = open(fileDir,"r")
    316371        history = file.readlines()
     
    330385            listitem = history[i][17:len(history[i])-1]
    331386            tagitem = listitem
     387            configitem = listitem
    332388            matchitems = list_jobname.findItems(listitem, QtCore.Qt.MatchExactly)
    333389
    334390            if ( len(matchitems) == 0 ):
    335391                listitem = filter(None,listitem.split(" -r"))[1]
    336                 listitem = filter(None,listitem.split(" -"))[0]
    337                 listitem = listitem.replace(" ","")
     392                listitem = listitem.strip()
     393                listitem = filter(None,listitem.split(" "))[0]
     394                listitem = listitem.replace("\"","")
    338395                list_jobname.addItem(listitem)
    339                 s = "%s: %s" % (timestamp,listitem)
     396               
     397                configitem = filter(None,configitem.split(" -c"))[1]
     398                configitem = configitem.strip()
     399                configitem = filter(None,configitem.split(" "))[0]
     400                configitem = configitem.replace("\"","")
     401
     402                s = "%s: %s (%s)" % (timestamp,listitem,configitem)
    340403                tmphistory.append(s)
    341404               
     
    384447        list_jobname = self.group_history.findChild(QtGui.QListWidget,"list_jobname")
    385448        filename = str(list_jobname.currentItem().text())
    386            
     449
    387450        timestamp = filename[:16]
    388         jobname = filename[18:]
    389                
     451        jobname = filename[18:].split(" ")[0]
     452
    390453        itemint = list_jobname.currentRow()
    391454
     
    415478            listitem = history[i-1][17:len(history[i-1])-1]
    416479            listitem = filter(None,listitem.split(" -r"))[1]
    417             listitem = filter(None,listitem.split(" -"))[0]
    418             listitem = listitem.replace(" ","") 
     480            listitem = listitem.strip()
     481            listitem = filter(None,listitem.split(" "))[0]
     482            listitem = listitem.replace("\"","")
    419483
    420484            # Select command line with correct timestamp and jobname
     
    509573            else:
    510574
    511                 # Check if _p3dr file is available, otherwise notice user
    512                 drop_job = self.group_execution.findChild(QtGui.QComboBox,"drop_job").currentText()
    513                 if ( self.group_execution.findChild(QtGui.QCheckBox,"check_restarts").checkState() == 2 or
    514                      drop_job == "Restart run" or drop_job == "Restart run (coupled atmosphere ocean)"     ):
    515 
    516                     jobname = self.group_execution.findChild(QtGui.QLineEdit, "line_jobname").text()
    517                     restartfile = "%s/JOBS/%s/INPUT/%s_p3dr" % (palm_dir,jobname,jobname)
    518 
    519                     if (os.path.exists(restartfile) == True):                 
    520                         self.group_execution.findChild(QtGui.QLabel,"label_restart").setText("")
    521                
    522 
    523                         if ( drop_job == "Restart run (coupled atmosphere ocean)" ):
    524                             restartfileo = "%s/JOBS/%s/INPUT/%s_p3dor" % (palm_dir,jobname,jobname)
    525                             if (os.path.exists(restartfileo) == True):                 
    526                                 self.group_execution.findChild(QtGui.QLabel,"label_restart").setText("hooo")
    527                  
    528                             else:       
    529                                 self.group_execution.findChild(QtGui.QLabel,"label_restart").setText("<font color='red'>Warning: No p3dor file found!</font>")   
    530                
    531                     else:       
    532                         self.group_execution.findChild(QtGui.QLabel,"label_restart").setText("<font color='red'>Warning: No p3dr file found!</font>")
    533          
    534                
    535                        
    536575                self.group_execution.setEnabled(True)
    537576                self.drop_job.setEnabled(True)
     
    577616            if (status_restarts == 2):
    578617                param[0]="%s restart" % (param[0])
    579    
    580                 # Check if _p3dr file is available, otherwise notice user
    581                 if (status_restarts == 2):
    582                     jobname = str(self.group_execution.findChild(QtGui.QLineEdit, "line_jobname").text())
    583                     restartfile = "%s/JOBS/%s/INPUT/%s_p3dr" % (palm_dir,jobname,jobname)
    584                     if (os.path.exists(restartfile) == True):                   
    585                         self.group_execution.findChild(QtGui.QLabel,"label_restart").setText("")
    586                    
    587                     else:                   
    588                         self.group_execution.findChild(QtGui.QLabel,"label_restart").setText("<font color='red'>Warning: No p3dr file found!</font>")
    589 
    590             else: 
    591                 self.group_execution.findChild(QtGui.QLabel,"label_restart").setText("")
     618
    592619
    593620            status_cycfill = self.group_execution.findChild(QtGui.QCheckBox,"check_cycfill").checkState()
     
    831858        self.load_jobs()
    832859       
    833     # Safes current commandline and user Parameters to .sav file
    834     #################################################################################
    835     def save_to_file(self):
    836         user_string = self.group_advanced.findChild(QtGui.QLineEdit,"line_user").text()
    837         cmd_string = self.groupBox.findChild(QtGui.QLineEdit,"commandline").text()
    838        
    839         string_to_file = cmd_string
    840         if (user_string != ""):
    841             string_to_file = "%s%s" % (string_to_file,user_string)
    842            
    843         #filename = QtGui.QInputDialog.getText(self, "Save File naming Dialog", "Insert filename", QtGui.QLineEdit.Normal)
    844         filename = str(QtGui.QFileDialog.getSaveFileName(self, "Save File","filename.sav"))
    845         extension = ".sav"
    846         filename = "%s%s" % (filename, "")
    847         tmstamp = strftime("%Y/%m/%d %H:%M")
    848        
    849         file = open(filename,"w")
    850         s = "%s %s" % (tmstamp, string_to_file)
    851         file.write(s)
    852         file.close()
    853        
     860
    854861    # Safes current commandline and user parameters to default file
    855862    ################################################################################
     
    932939               
    933940            elif ( parameter == "c"):
    934                 tmpindex = self.group_execution.findChild(QtGui.QComboBox, "combo_configuration").findText(options,QtCore.Qt.MatchExactly)
     941                tmpindex = self.group_execution.findChild(QtGui.QComboBox, "combo_configuration").findText(options.strip(),QtCore.Qt.MatchExactly)
    935942                if tmpindex != -1:
    936943                   self.group_execution.findChild(QtGui.QComboBox, "combo_configuration").setCurrentIndex(tmpindex)
     
    10501057                    if (options_all == "restart"):
    10511058                        self.group_execution.findChild(QtGui.QCheckBox,"check_restarts").setChecked(True)
    1052                         # Check if _pdf file is available, otherwise notice user
    1053                         jobname = str(self.group_execution.findChild(QtGui.QLineEdit,"line_jobname").text())
    1054                        
    1055                         restartfile = "%sJOBS/%s/INPUT/%s_p3dr" % (palm_dir,jobname,jobname)
    1056                         if (os.path.exists(restartfile) == True):   
    1057                             self.group_execution.findChild(QtGui.QLabel,"label_restart").setText("")
    1058                        
    1059                         else:
    1060                             self.group_execution.findChild(QtGui.QLabel,"label_restart").setText("<font color='red'>Warning: No p3dr file \found!</font>")
     1059
    10611060                    j = j+1
    10621061
     
    11001099            self.group_advanced.setEnabled(True)
    11011100            self.groupBox.findChild(QtGui.QLineEdit,"line_tag").setEnabled(True)
    1102          
     1101
     1102
    11031103        self.tabWidget.setCurrentIndex(0)
    1104          
    1105     # open saved commandline
    1106     ##################################
     1104
     1105
     1106    ## Open from history
     1107    ###################################
    11071108    def open_from_file(self):
    1108        
    1109         # Select filename and open it
    1110         filename = QtGui.QFileDialog.getOpenFileName(self, "Open File","Save files (*.sav)")
    1111        
    1112         if ( filename != ""):
    1113             file = open(filename, "r")
    1114          
    1115             if ( file is not None ):
    1116                 # File opened successfully
    1117                 palmrunline = file.read()
    1118                 file.close()
    1119    
    1120             # In case a palmrunline was found, load it to mainwindow
    1121             if ( palmrunline != ""):
    1122                 palmrunline = palmrunline[17:]
    1123                 self.groupBox.findChild(QtGui.QLineEdit,"commandline").setText(palmrunline)
    1124                 self.setup_gui(palmrunline)
    1125          
    1126     # open saved commandline   
    1127     ##################################
    1128     def open_last(self):
    1129         # Select filename and open it
    1130         filename = "%s/.palmrungui.history" % (palm_dir)
    1131        
    1132         if os.path.exists(filename):
    1133             pass
    1134         else:
    1135             return
    1136        
    1137         file = open(filename, "r") 
    1138         if ( file is not None ):
    1139             # File opened successfully
    1140             lines = file.readlines()
    1141             palmrunline = lines[len(lines)-1]
    1142             palmrunline = palmrunline[:len(palmrunline)-1]
    1143             file.close()
    1144 
    1145         # In case a palmrunline was found, load it to mainwindow
    1146         if ( palmrunline != ""):
    1147             palmrunline = palmrunline[17:len(palmrunline)]
    1148             self.groupBox.findChild(QtGui.QLineEdit,"commandline").setText(palmrunline)
    1149             self.setup_gui(palmrunline)       
    1150 
     1109
     1110#      Show History
     1111       opt = OpenHistoryBox()
     1112       opt.exec_()
     1113
     1114       palmrunline = str(history_entry)
     1115       palmrunline = palmrunline[17:]
     1116       palmrunline = palmrunline[:len(palmrunline)-1]
     1117       palmrunline = filter(None,palmrunline.split("("))[0]
     1118       self.groupBox.findChild(QtGui.QLineEdit,"commandline").setText(palmrunline)
     1119
     1120#      Set selected item to jobname in "available jobs" list
     1121       jobname = str(history_entry[17:])
     1122       jobname = filter(None,jobname.split(" -r"))[1]
     1123       jobname = jobname.strip()
     1124       jobname = filter(None,jobname.split(" "))[0]
     1125       jobname = jobname.replace("\"","")
     1126       item2int = self.list_jobs.findItems(jobname,QtCore.Qt.MatchCaseSensitive)
     1127
     1128       if ( item2int != [] ):
     1129          self.list_jobs.setCurrentItem(item2int[0])
     1130          self.update_input()
     1131
     1132#      Add tooltip tag
     1133       tag = str(history_entry).split('\n')[0]
     1134       tag = filter(None,tag.split("("))[1]
     1135       tag = tag.replace(")","")
     1136       self.groupBox.findChild(QtGui.QLineEdit,"line_tag").setText(tag)
    11511137 
    1152    
     1138#      Process palmrungui to set up gui controls
     1139       self.setup_gui(palmrunline)
     1140
     1141
    11531142    def update_all(self):
    11541143 
     
    11621151       self.update_input()
    11631152
     1153
    11641154    # Load jobs into list
    11651155    def load_jobs(self):
     
    11731163
    11741164       self.list_jobs.clear()
    1175        self.push_copy.setEnabled(False)
    1176        self.push_create_set.setEnabled(False)     
    1177      
    11781165       self.line_path.setText(job_dir + "/")
    11791166       
     
    11971184    # Update input and user code lists
    11981185    def update_input(self):
     1186
     1187       self.labeltimer.stop()
     1188
    11991189     
    12001190       self.list_input.clear()
     
    12021192       self.list_monitoring.clear()
    12031193       self.list_output.clear()
    1204        self.push_copy.setEnabled(True)
    1205        self.push_create_set.setEnabled(True)
    12061194       
    12071195       jobitem = self.list_jobs.currentItem()
     
    12191207             
    12201208                if ( os.path.isfile(tmp_file) ):
    1221                    self.list_input.addItem(str(list_of_files[i]))
     1209                   self.list_input.addItem(str(list_of_files[i]) + " (" + file_size(tmp_file) + ")")
    12221210 
    12231211          job_to_show = job_dir + "/" + jobitem.text() + "/USER_CODE"
     
    12431231
    12441232                if ( os.path.isfile(tmp_file) ):
    1245                    self.list_monitoring.addItem(str(list_of_files[i]))
     1233                   self.list_monitoring.addItem(str(list_of_files[i]) + " (" + file_size(tmp_file) + ")")
    12461234
    12471235          job_to_show = job_dir + "/" + jobitem.text() + "/OUTPUT"
    12481236
    12491237          if ( os.path.isdir(job_to_show) ):
    1250          
     1238
    12511239             list_of_files = os.listdir(job_to_show)
    1252          
     1240
    12531241             for i in range(0,len(list_of_files)):
    12541242                tmp_file = job_to_show + "/" + list_of_files[i]
    12551243
    12561244                if ( os.path.isfile(tmp_file) ):
    1257                    self.list_output.addItem(str(list_of_files[i]))
     1245                   self.list_output.addItem(str(list_of_files[i]) + " (" + file_size(tmp_file) + ")")
    12581246 
    12591247          self.group_execution.findChild(QtGui.QLineEdit,"line_jobname").setText(jobitem.text())
    12601248       self.group_history.findChild(QtGui.QListWidget,"list_jobname").clearSelection()
    12611249
     1250       self.timetimer.start()
     1251       self.timer.start(update_frequency)
     1252       self.labeltimer.start(update_frequency/10)
     1253       self.push_update.setText("Update (" + str(int(update_frequency/1000/60)) + " min)")
     1254       QtGui.QApplication.processEvents()
     1255
    12621256       # Change palmrunline accordingly
    12631257       self.change_commandline("r","")
    1264        self.change_commandline("a","")
    1265  
    1266  
     1258       self.change_commandline("a","") 
     1259
    12671260    # Make a copy of a job
    12681261    def copy_job(self):
     
    14121405       self.setEnabled(True)
    14131406       set_list = []
    1414    
     1407
     1408
     1409 # Add a custom context menu for the job selection list
     1410    def openmenujob(self, position):
     1411
     1412        menu = QtGui.QMenu()
     1413
     1414        selection = self.list_jobs.selectedItems()
     1415
     1416        if ( len(selection) != 0 ):
     1417
     1418           copyAction = QtGui.QAction('Copy job', self)
     1419           copyAction.triggered.connect(self.copy_job)
     1420           createAction = QtGui.QAction('Create set from job', self)
     1421           createAction.triggered.connect(self.create_set)
     1422           delAction = QtGui.QAction('Delete job', self)
     1423           delAction.triggered.connect(self.DeleteJob)
     1424
     1425           menu.addAction(copyAction)
     1426           menu.addAction(createAction)
     1427           menu.addAction(delAction)
     1428
     1429           action = menu.exec_(self.list_jobs.mapToGlobal(position))
     1430       
     1431       
    14151432 # Add a custom context menu
    14161433    def openmenuinput(self, position):
     
    14221439        if ( len(selection) != 0 ):
    14231440
    1424            openAction = menu.addAction('Open selected files')     
     1441
     1442           openAction = QtGui.QAction('Open file(s)', self)
    14251443           openAction.setStatusTip('Open file(s) in your favorite editor')
    14261444           openAction.triggered.connect(self.OpenFilesInput)
     1445
     1446
     1447           delAction = QtGui.QAction('Delete file(s)', self)
     1448           delAction.triggered.connect(self.DeleteFilesInput)
     1449
     1450           menu.addAction(openAction)
     1451           menu.addAction(delAction)
     1452
    14271453           action = menu.exec_(self.list_input.mapToGlobal(position))
    14281454
     
    14361462        if ( len(selection) != 0 ):
    14371463
    1438            openAction = menu.addAction('Open selected files')     
     1464           openAction = QtGui.QAction('Open file(s)', self)
    14391465           openAction.setStatusTip('Open file(s) in your favorite editor')
    14401466           openAction.triggered.connect(self.OpenFilesUser)
     1467
     1468
     1469           delAction = QtGui.QAction('Delete file(s)', self)
     1470           delAction.triggered.connect(self.DeleteFilesUser)
     1471
     1472           menu.addAction(openAction)
     1473           menu.addAction(delAction)
    14411474           action = menu.exec_(self.list_user.mapToGlobal(position))
    14421475
     
    14501483        if ( len(selection) != 0 ):
    14511484
    1452            openAction = menu.addAction('Open selected files')     
     1485           openAction = QtGui.QAction('Open file(s)', self)
    14531486           openAction.setStatusTip('Open file(s) in your favorite editor')
    14541487           openAction.triggered.connect(self.OpenFilesOutput)
     1488
     1489
     1490           delAction = QtGui.QAction('Delete file(s)', self)
     1491           delAction.triggered.connect(self.DeleteFilesOutput)
     1492
     1493           menu.addAction(openAction)
     1494           menu.addAction(delAction)
    14551495           action = menu.exec_(self.list_output.mapToGlobal(position))
    14561496
     
    14641504        if ( len(selection) != 0 ):
    14651505
    1466            openAction = menu.addAction('Open selected files')     
     1506           openAction = QtGui.QAction('Open file(s)', self)
    14671507           openAction.setStatusTip('Open file(s) in your favorite editor')
    14681508           openAction.triggered.connect(self.OpenFilesMonitoring)
     1509
     1510
     1511           delAction = QtGui.QAction('Delete file(s)', self)
     1512           delAction.triggered.connect(self.DeleteFilesMonitoring)
     1513
     1514           menu.addAction(openAction)
     1515           menu.addAction(delAction)
    14691516           action = menu.exec_(self.list_monitoring.mapToGlobal(position))
     1517
     1518    def OpenConfig(self):
     1519
     1520       config = str(self.group_execution.findChild(QtGui.QComboBox, "combo_configuration").currentText())
     1521       if ( config != "" ):
     1522          filename = ".palm.config." + config
     1523          open_file = "xdg-open " + filename
     1524          os.system(str(open_file))
    14701525
    14711526    def OpenFilesInput(self):
     
    14781533       open_files = ""
    14791534       for i in range(0,len(sel_files)):
    1480           open_files = open_files + "xdg-open " + input_dir +  sel_files[i].text() + "; "
     1535          open_files = open_files + "xdg-open " + input_dir +  sel_files[i].text().split("(")[0] + "; "
    14811536
    14821537       os.system(str(open_files))
     
    15051560       open_files = ""
    15061561       for i in range(0,len(sel_files)):
    1507           open_files = open_files + "xdg-open " + input_dir +  sel_files[i].text() + "; "
     1562          open_files = open_files + "xdg-open " + input_dir +  sel_files[i].text().split("(")[0] + "; "
    15081563
    15091564       os.system(str(open_files))
     
    15191574       open_files = ""
    15201575       for i in range(0,len(sel_files)):
    1521           open_files = open_files + "xdg-open " + input_dir +  sel_files[i].text() + "; "
     1576          open_files = open_files + "xdg-open " + input_dir +  sel_files[i].text().split("(")[0] + "; "
    15221577
    15231578       os.system(str(open_files))
    15241579       selection = self.list_jobs.selectedItems()
    1525  
     1580
     1581    def DeleteFilesInput(self):
     1582
     1583       status = QtGui.QMessageBox.question(self,'Delete Confirmation', "Are you sure you want to delete these files?", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)
     1584
     1585       if status == QtGui.QMessageBox.Yes:
     1586
     1587          sel_job = self.list_jobs.currentItem().text()
     1588          sel_files = self.list_input.selectedItems()
     1589
     1590          input_dir = job_dir + "/" + sel_job + "/INPUT/"
     1591
     1592          for i in range(0,len(sel_files)):
     1593             filename = input_dir +  sel_files[i].text().split("(")[0].trimmed()
     1594             os.remove(filename)
     1595
     1596          self.update_all()
     1597
     1598
     1599    def DeleteFilesUser(self):
     1600
     1601       status = QtGui.QMessageBox.question(self,'Delete Confirmation', "Are you sure you want to delete these files?", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)
     1602
     1603       if status == QtGui.QMessageBox.Yes:
     1604
     1605          sel_job = self.list_jobs.currentItem().text()
     1606          sel_files = self.list_user.selectedItems()
     1607
     1608          input_dir = job_dir + "/" + sel_job + "/USER/"
     1609
     1610          for i in range(0,len(sel_files)):
     1611             filename = input_dir +  sel_files[i].text().split("(")[0].trimmed()
     1612             os.remove(filename)
     1613
     1614          self.update_all()
     1615
     1616
     1617    def DeleteFilesMonitoring(self):
     1618
     1619       status = QtGui.QMessageBox.question(self,'Delete Confirmation', "Are you sure you want to delete these files?", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)
     1620
     1621       if status == QtGui.QMessageBox.Yes:
     1622
     1623          sel_job = self.list_jobs.currentItem().text()
     1624          sel_files = self.list_monitoring.selectedItems()
     1625
     1626          input_dir = job_dir + "/" + sel_job + "/MONITORING/"
     1627
     1628          for i in range(0,len(sel_files)):
     1629             filename = input_dir +  sel_files[i].text().split("(")[0].trimmed()
     1630             os.remove(filename)
     1631
     1632          self.update_all()
     1633
     1634
     1635    def DeleteFilesOutput(self):
     1636
     1637       status = QtGui.QMessageBox.question(self,'Delete Confirmation', "Are you sure you want to delete these files?", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)
     1638
     1639       if status == QtGui.QMessageBox.Yes:
     1640
     1641          sel_job = self.list_jobs.currentItem().text()
     1642          sel_files = self.list_output.selectedItems()
     1643
     1644          input_dir = job_dir + "/" + sel_job + "/OUTPUT/"
     1645
     1646          for i in range(0,len(sel_files)):
     1647             filename = input_dir +  sel_files[i].text().split("(")[0].trimmed()
     1648             os.remove(filename)
     1649
     1650          self.update_all()
     1651
     1652    def DeleteJob(self):
     1653
     1654       status = QtGui.QMessageBox.question(self,'Delete Confirmation', "Are you sure you want to delete this job?", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)
     1655
     1656       if status == QtGui.QMessageBox.Yes:
     1657
     1658          sel_job = self.list_jobs.currentItem().text()
     1659
     1660          input_dir = job_dir + "/" + sel_job
     1661          shutil.rmtree(str(input_dir))
     1662
     1663          self.update_all()
     1664
    15261665# Message box for showing RUN_CONTROL output
    15271666class CreateSetBox(QtGui.QDialog):
    15281667    def __init__(self):
    1529      
     1668
    15301669        super(CreateSetBox, self).__init__()
    1531        
     1670
    15321671        uic.loadUi(palm_bin + '/palmrungui_files/create_set.ui', self)
    1533        
     1672
    15341673        self.show()
    1535        
     1674
    15361675        return
    15371676
    15381677#   Cancel button
    15391678    def rejected(self):
    1540      
     1679
    15411680       self.close()
    1542      
     1681
    15431682       return
    1544  
    15451683
    15461684#   OK button
    15471685    def accept(self):
    1548      
     1686
    15491687       global set_list
    1550        
     1688
    15511689       text = self.list.toPlainText()
    15521690       set_list = text.split('\n')
    15531691       self.close()
    1554      
     1692
    15551693       return
    15561694
    1557 
    1558        
     1695# Message box for showing RUN_CONTROL output
     1696class OpenHistoryBox(QtGui.QDialog):
     1697    def __init__(self):
     1698
     1699        super(OpenHistoryBox, self).__init__()
     1700
     1701        uic.loadUi(palm_bin + '/palmrungui_files/history.ui', self)
     1702
     1703        if os.path.exists(palm_dir + "/.palmrungui.history"):
     1704            pass
     1705        else:
     1706            return
     1707
     1708        filename = open(palm_dir + "/.palmrungui.history","r")
     1709        history = filename.readlines()
     1710        filename.close()
     1711
     1712
     1713        list_jobname = self.findChild(QtGui.QListWidget,"list_history")
     1714
     1715        # Read history entries and append to recent job list
     1716        len_history=len(history)-1
     1717        i = 0
     1718        while i<=len_history:
     1719            list_jobname.addItem(history[i])
     1720            i = i + 1
     1721
     1722        self.show()
     1723
     1724        return
     1725
     1726#   Select item / activate Load button
     1727    def ItemSelected(self):
     1728
     1729       self.push_open.setEnabled(True)
     1730
     1731       return
     1732
     1733
     1734#   Load job from history
     1735    def OpenFromHistory(self):
     1736
     1737       global history_entry
     1738       history_entry = self.list_history.selectedItems()[0].text()
     1739
     1740       self.close()
     1741
     1742       return
     1743
     1744#   Close history window
     1745    def DiscardHistory(self):
     1746
     1747
     1748       self.close()
     1749
     1750       return
     1751
     1752#   Clear history
     1753    def ClearHistory(self):
     1754
     1755       status = QtGui.QMessageBox.question(self,'Delete Confirmation', "Are you sure you want to delete your history?", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)
     1756
     1757       if status == QtGui.QMessageBox.Yes:
     1758
     1759          if os.path.exists(palm_dir + "/.palmrungui.history"):
     1760             os.remove(palm_dir + "/.palmrungui.history")
     1761
     1762
     1763       return
    15591764
    15601765if __name__ == "__main__":
  • palm/trunk/SCRIPTS/palmrungui_files/about.ui

    r2413 r4470  
    77    <x>0</x>
    88    <y>0</y>
    9     <width>349</width>
    10     <height>127</height>
     9    <width>455</width>
     10    <height>147</height>
    1111   </rect>
    1212  </property>
     
    1717   <property name="geometry">
    1818    <rect>
    19      <x>195</x>
    20      <y>95</y>
     19     <x>10</x>
     20     <y>110</y>
    2121     <width>91</width>
    2222     <height>24</height>
     
    5151    <rect>
    5252     <x>10</x>
    53      <y>60</y>
    54      <width>261</width>
    55      <height>36</height>
     53     <y>50</y>
     54     <width>431</width>
     55     <height>51</height>
    5656    </rect>
    5757   </property>
    5858   <property name="text">
    59     <string>Visit http://palm-model.org</string>
     59    <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;palmrungui is a graphical user interface for the bash script palmrun. &lt;/p&gt;&lt;p&gt;A documentation can be found &lt;a href=&quot;http://palm-model.org/trac/wiki/doc/app/palmrungui&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#2980b9;&quot;&gt;here&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
     60   </property>
     61   <property name="textFormat">
     62    <enum>Qt::RichText</enum>
    6063   </property>
    6164   <property name="alignment">
    62     <set>Qt::AlignHCenter|Qt::AlignTop</set>
     65    <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
    6366   </property>
    6467   <property name="wordWrap">
    6568    <bool>true</bool>
    6669   </property>
    67   </widget>
    68   <widget class="QLabel" name="label_3">
    69    <property name="geometry">
    70     <rect>
    71      <x>10</x>
    72      <y>25</y>
    73      <width>291</width>
    74      <height>41</height>
    75     </rect>
    76    </property>
    77    <property name="font">
    78     <font>
    79      <pointsize>12</pointsize>
    80      <weight>75</weight>
    81      <bold>true</bold>
    82     </font>
    83    </property>
    84    <property name="text">
    85     <string>A graphical user interface for palmrun</string>
     70   <property name="openExternalLinks">
     71    <bool>false</bool>
    8672   </property>
    8773  </widget>
  • palm/trunk/SCRIPTS/palmrungui_files/mainwindow.ui

    r4427 r4470  
    140140       <x>10</x>
    141141       <y>50</y>
    142        <width>771</width>
     142       <width>971</width>
    143143       <height>26</height>
    144144      </rect>
     
    168168       <x>470</x>
    169169       <y>20</y>
    170        <width>311</width>
     170       <width>701</width>
    171171       <height>21</height>
    172172      </rect>
     
    190190     <property name="alignment">
    191191      <set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
     192     </property>
     193    </widget>
     194    <widget class="QLabel" name="label_version">
     195     <property name="geometry">
     196      <rect>
     197       <x>1000</x>
     198       <y>47</y>
     199       <width>181</width>
     200       <height>31</height>
     201      </rect>
     202     </property>
     203     <property name="text">
     204      <string>Version: xxxx (27-02-2002)</string>
    192205     </property>
    193206    </widget>
     
    233246       <rect>
    234247        <x>0</x>
    235         <y>375</y>
     248        <y>350</y>
    236249        <width>441</width>
    237         <height>286</height>
     250        <height>311</height>
    238251       </rect>
    239252      </property>
     
    251264        <rect>
    252265         <x>330</x>
    253          <y>55</y>
     266         <y>60</y>
    254267         <width>101</width>
    255268         <height>21</height>
     
    267280        <rect>
    268281         <x>250</x>
    269          <y>55</y>
     282         <y>61</y>
    270283         <width>71</width>
    271          <height>21</height>
     284         <height>20</height>
    272285        </rect>
    273286       </property>
     
    283296        <rect>
    284297         <x>130</x>
    285          <y>120</y>
     298         <y>150</y>
    286299         <width>91</width>
    287300         <height>20</height>
     
    296309        <rect>
    297310         <x>10</x>
    298          <y>120</y>
     311         <y>150</y>
     312         <width>111</width>
     313         <height>20</height>
     314        </rect>
     315       </property>
     316       <property name="text">
     317        <string>Cores:</string>
     318       </property>
     319       <property name="alignment">
     320        <set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
     321       </property>
     322      </widget>
     323      <widget class="QLineEdit" name="line_tpn">
     324       <property name="geometry">
     325        <rect>
     326         <x>330</x>
     327         <y>150</y>
     328         <width>101</width>
     329         <height>21</height>
     330        </rect>
     331       </property>
     332       <property name="text">
     333        <string/>
     334       </property>
     335      </widget>
     336      <widget class="QLabel" name="label_4">
     337       <property name="geometry">
     338        <rect>
     339         <x>220</x>
     340         <y>140</y>
     341         <width>101</width>
     342         <height>31</height>
     343        </rect>
     344       </property>
     345       <property name="text">
     346        <string>Tasks per node:</string>
     347       </property>
     348       <property name="alignment">
     349        <set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
     350       </property>
     351      </widget>
     352      <widget class="QLineEdit" name="line_account">
     353       <property name="geometry">
     354        <rect>
     355         <x>330</x>
     356         <y>180</y>
     357         <width>101</width>
     358         <height>20</height>
     359        </rect>
     360       </property>
     361       <property name="text">
     362        <string/>
     363       </property>
     364      </widget>
     365      <widget class="QLabel" name="label_5">
     366       <property name="geometry">
     367        <rect>
     368         <x>260</x>
     369         <y>180</y>
     370         <width>61</width>
     371         <height>16</height>
     372        </rect>
     373       </property>
     374       <property name="text">
     375        <string>Account:</string>
     376       </property>
     377       <property name="alignment">
     378        <set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
     379       </property>
     380      </widget>
     381      <widget class="QLabel" name="label_6">
     382       <property name="geometry">
     383        <rect>
     384         <x>10</x>
     385         <y>180</y>
    299386         <width>111</width>
    300387         <height>16</height>
     
    302389       </property>
    303390       <property name="text">
    304         <string>Cores:</string>
     391        <string>Wallclock time (s):</string>
    305392       </property>
    306393       <property name="alignment">
     
    308395       </property>
    309396      </widget>
    310       <widget class="QLineEdit" name="line_tpn">
    311        <property name="geometry">
    312         <rect>
    313          <x>330</x>
    314          <y>120</y>
    315          <width>101</width>
    316          <height>21</height>
    317         </rect>
    318        </property>
    319        <property name="text">
    320         <string/>
    321        </property>
    322       </widget>
    323       <widget class="QLabel" name="label_4">
    324        <property name="geometry">
    325         <rect>
    326          <x>220</x>
    327          <y>115</y>
    328          <width>101</width>
    329          <height>21</height>
    330         </rect>
    331        </property>
    332        <property name="text">
    333         <string>Tasks per node:</string>
    334        </property>
    335        <property name="alignment">
    336         <set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
    337        </property>
    338       </widget>
    339       <widget class="QLineEdit" name="line_account">
    340        <property name="geometry">
    341         <rect>
    342          <x>330</x>
    343          <y>145</y>
    344          <width>101</width>
    345          <height>20</height>
    346         </rect>
    347        </property>
    348        <property name="text">
    349         <string/>
    350        </property>
    351       </widget>
    352       <widget class="QLabel" name="label_5">
    353        <property name="geometry">
    354         <rect>
    355          <x>260</x>
    356          <y>145</y>
    357          <width>61</width>
    358          <height>16</height>
    359         </rect>
    360        </property>
    361        <property name="text">
    362         <string>Account:</string>
    363        </property>
    364        <property name="alignment">
    365         <set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
    366        </property>
    367       </widget>
    368       <widget class="QLabel" name="label_6">
    369        <property name="geometry">
    370         <rect>
    371          <x>10</x>
    372          <y>145</y>
    373          <width>111</width>
    374          <height>16</height>
    375         </rect>
    376        </property>
    377        <property name="text">
    378         <string>Wallclock time (s):</string>
    379        </property>
    380        <property name="alignment">
    381         <set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
    382        </property>
    383       </widget>
    384397      <widget class="QLineEdit" name="line_time">
    385398       <property name="geometry">
    386399        <rect>
    387400         <x>130</x>
    388          <y>145</y>
     401         <y>180</y>
    389402         <width>91</width>
    390403         <height>20</height>
     
    401414         <y>90</y>
    402415         <width>91</width>
    403          <height>16</height>
     416         <height>21</height>
    404417        </rect>
    405418       </property>
     
    418431        <rect>
    419432         <x>10</x>
    420          <y>165</y>
     433         <y>200</y>
    421434         <width>411</width>
    422435         <height>20</height>
     
    431444        <rect>
    432445         <x>10</x>
    433          <y>180</y>
     446         <y>210</y>
    434447         <width>121</width>
    435448         <height>23</height>
     
    444457        <rect>
    445458         <x>10</x>
    446          <y>200</y>
     459         <y>230</y>
    447460         <width>281</width>
    448461         <height>23</height>
     
    457470        <rect>
    458471         <x>10</x>
    459          <y>220</y>
     472         <y>250</y>
    460473         <width>261</width>
    461474         <height>23</height>
     
    466479       </property>
    467480      </widget>
    468       <widget class="QLabel" name="label_restart">
    469        <property name="enabled">
    470         <bool>false</bool>
    471        </property>
    472        <property name="geometry">
    473         <rect>
    474          <x>130</x>
    475          <y>165</y>
    476          <width>291</width>
    477          <height>20</height>
    478         </rect>
    479        </property>
    480        <property name="font">
    481         <font>
    482          <weight>75</weight>
    483          <bold>true</bold>
    484         </font>
    485        </property>
    486        <property name="text">
    487         <string/>
    488        </property>
    489       </widget>
    490481      <widget class="QCheckBox" name="check_cycfill">
    491482       <property name="geometry">
    492483        <rect>
    493484         <x>10</x>
    494          <y>240</y>
     485         <y>270</y>
    495486         <width>261</width>
    496487         <height>21</height>
     
    505496        <rect>
    506497         <x>10</x>
    507          <y>260</y>
     498         <y>290</y>
    508499         <width>261</width>
    509500         <height>21</height>
     
    521512        <rect>
    522513         <x>60</x>
    523          <y>55</y>
     514         <y>60</y>
    524515         <width>191</width>
    525516         <height>26</height>
     
    561552        <rect>
    562553         <x>110</x>
    563          <y>20</y>
     554         <y>30</y>
    564555         <width>321</width>
    565556         <height>25</height>
     
    588579         <y>60</y>
    589580         <width>41</width>
    590          <height>16</height>
     581         <height>21</height>
    591582        </rect>
    592583       </property>
     
    604595       <property name="geometry">
    605596        <rect>
    606          <x>10</x>
    607          <y>25</y>
    608          <width>91</width>
    609          <height>16</height>
     597         <x>0</x>
     598         <y>30</y>
     599         <width>101</width>
     600         <height>21</height>
    610601        </rect>
    611602       </property>
     
    629620       <property name="geometry">
    630621        <rect>
     622         <x>230</x>
     623         <y>120</y>
     624         <width>91</width>
     625         <height>21</height>
     626        </rect>
     627       </property>
     628       <property name="text">
     629        <string>(re-)Build</string>
     630       </property>
     631      </widget>
     632      <widget class="QComboBox" name="combo_configuration">
     633       <property name="geometry">
     634        <rect>
     635         <x>130</x>
     636         <y>90</y>
     637         <width>301</width>
     638         <height>26</height>
     639        </rect>
     640       </property>
     641      </widget>
     642      <widget class="QCheckBox" name="check_rebuild">
     643       <property name="geometry">
     644        <rect>
    631645         <x>330</x>
    632          <y>85</y>
     646         <y>120</y>
    633647         <width>101</width>
    634          <height>26</height>
    635         </rect>
    636        </property>
    637        <property name="text">
    638         <string>(re-)build</string>
    639        </property>
    640       </widget>
    641       <widget class="QComboBox" name="combo_configuration">
     648         <height>22</height>
     649        </rect>
     650       </property>
     651       <property name="text">
     652        <string>Full rebuild</string>
     653       </property>
     654      </widget>
     655      <widget class="QPushButton" name="button_editconfig">
    642656       <property name="geometry">
    643657        <rect>
    644658         <x>130</x>
    645          <y>85</y>
    646          <width>191</width>
    647          <height>26</height>
    648         </rect>
     659         <y>120</y>
     660         <width>91</width>
     661         <height>21</height>
     662        </rect>
     663       </property>
     664       <property name="text">
     665        <string>Edit</string>
    649666       </property>
    650667      </widget>
     
    698715        <rect>
    699716         <x>10</x>
    700          <y>85</y>
     717         <y>90</y>
    701718         <width>231</width>
    702          <height>531</height>
     719         <height>561</height>
    703720        </rect>
    704721       </property>
    705722       <property name="contextMenuPolicy">
    706         <enum>Qt::NoContextMenu</enum>
     723        <enum>Qt::CustomContextMenu</enum>
    707724       </property>
    708725       <property name="alternatingRowColors">
     
    717734        <rect>
    718735         <x>250</x>
    719          <y>85</y>
     736         <y>90</y>
    720737         <width>231</width>
    721738         <height>141</height>
     
    801818         <x>440</x>
    802819         <y>30</y>
    803          <width>121</width>
     820         <width>131</width>
    804821         <height>24</height>
    805822        </rect>
    806823       </property>
    807824       <property name="text">
    808         <string>Update</string>
     825        <string>Update (60 s)</string>
    809826       </property>
    810827      </widget>
     
    813830        <rect>
    814831         <x>490</x>
    815          <y>85</y>
     832         <y>90</y>
    816833         <width>221</width>
    817          <height>566</height>
     834         <height>561</height>
    818835        </rect>
    819836       </property>
     
    848865        <rect>
    849866         <x>250</x>
    850          <y>415</y>
     867         <y>420</y>
    851868         <width>231</width>
    852          <height>236</height>
     869         <height>231</height>
    853870        </rect>
    854871       </property>
     
    879896       </property>
    880897      </widget>
    881       <widget class="QPushButton" name="push_copy">
    882        <property name="geometry">
    883         <rect>
    884          <x>10</x>
    885          <y>625</y>
    886          <width>91</width>
    887          <height>24</height>
    888         </rect>
    889        </property>
    890        <property name="text">
    891         <string>Copy job</string>
    892        </property>
    893       </widget>
    894       <widget class="QPushButton" name="push_create_set">
    895        <property name="geometry">
    896         <rect>
    897          <x>110</x>
    898          <y>625</y>
    899          <width>131</width>
    900          <height>24</height>
    901         </rect>
    902        </property>
    903        <property name="text">
    904         <string>Create set from job</string>
    905        </property>
    906       </widget>
    907898      <widget class="QLabel" name="palm_logo">
    908899       <property name="geometry">
     
    921912       </property>
    922913      </widget>
    923       <zorder>list_jobs</zorder>
    924       <zorder>list_input</zorder>
    925       <zorder>list_user</zorder>
    926       <zorder>label_11</zorder>
    927       <zorder>label_10</zorder>
    928       <zorder>label_12</zorder>
    929       <zorder>push_update</zorder>
    930       <zorder>list_output</zorder>
    931       <zorder>label_14</zorder>
    932       <zorder>list_monitoring</zorder>
    933       <zorder>label_15</zorder>
    934       <zorder>push_copy</zorder>
    935       <zorder>push_create_set</zorder>
    936       <zorder>palm_logo</zorder>
    937       <zorder>palm_logo</zorder>
    938914     </widget>
    939915     <widget class="QGroupBox" name="group_history">
     
    943919        <y>5</y>
    944920        <width>441</width>
    945         <height>371</height>
     921        <height>341</height>
    946922       </rect>
    947923      </property>
     
    957933         <x>10</x>
    958934         <y>50</y>
    959          <width>411</width>
    960          <height>311</height>
     935         <width>421</width>
     936         <height>281</height>
    961937        </rect>
    962938       </property>
     
    14301406    <property name="geometry">
    14311407     <rect>
    1432       <x>261</x>
    1433       <y>103</y>
    1434       <width>128</width>
    1435       <height>189</height>
     1408      <x>267</x>
     1409      <y>152</y>
     1410      <width>155</width>
     1411      <height>137</height>
    14361412     </rect>
    14371413    </property>
     
    14441420    <addaction name="action_open"/>
    14451421    <addaction name="separator"/>
    1446     <addaction name="action_last"/>
    1447     <addaction name="action_save"/>
    14481422    <addaction name="action_default"/>
    14491423    <addaction name="action_quit"/>
     
    14681442  <action name="action_open">
    14691443   <property name="text">
    1470     <string>&amp;Open from File</string>
     1444    <string>&amp;Select from history</string>
    14711445   </property>
    14721446  </action>
     
    16111585   <hints>
    16121586    <hint type="sourcelabel">
    1613      <x>206</x>
    1614      <y>540</y>
     1587     <x>214</x>
     1588     <y>500</y>
    16151589    </hint>
    16161590    <hint type="destinationlabel">
     
    16271601   <hints>
    16281602    <hint type="sourcelabel">
    1629      <x>244</x>
    1630      <y>540</y>
     1603     <x>252</x>
     1604     <y>500</y>
    16311605    </hint>
    16321606    <hint type="destinationlabel">
     
    17881762    <hint type="sourcelabel">
    17891763     <x>170</x>
    1790      <y>570</y>
     1764     <y>585</y>
    17911765    </hint>
    17921766    <hint type="destinationlabel">
     
    18041778    <hint type="sourcelabel">
    18051779     <x>193</x>
    1806      <y>595</y>
     1780     <y>615</y>
    18071781    </hint>
    18081782    <hint type="destinationlabel">
     
    18191793   <hints>
    18201794    <hint type="sourcelabel">
    1821      <x>402</x>
    1822      <y>515</y>
     1795     <x>406</x>
     1796     <y>495</y>
    18231797    </hint>
    18241798    <hint type="destinationlabel">
     
    18361810    <hint type="sourcelabel">
    18371811     <x>425</x>
    1838      <y>595</y>
     1812     <y>615</y>
    18391813    </hint>
    18401814    <hint type="destinationlabel">
     
    18521826    <hint type="sourcelabel">
    18531827     <x>400</x>
    1854      <y>570</y>
     1828     <y>585</y>
    18551829    </hint>
    18561830    <hint type="destinationlabel">
     
    19891963  </connection>
    19901964  <connection>
    1991    <sender>action_save</sender>
     1965   <sender>action_open</sender>
    19921966   <signal>triggered()</signal>
    19931967   <receiver>MainWindow</receiver>
    1994    <slot>save_to_file()</slot>
     1968   <slot>open_from_file()</slot>
    19951969   <hints>
    19961970    <hint type="sourcelabel">
     
    20051979  </connection>
    20061980  <connection>
    2007    <sender>action_last</sender>
     1981   <sender>action_help</sender>
    20081982   <signal>triggered()</signal>
    20091983   <receiver>MainWindow</receiver>
    2010    <slot>open_last()</slot>
     1984   <slot>help()</slot>
    20111985   <hints>
    20121986    <hint type="sourcelabel">
     
    20211995  </connection>
    20221996  <connection>
    2023    <sender>action_open</sender>
     1997   <sender>action_about</sender>
    20241998   <signal>triggered()</signal>
    20251999   <receiver>MainWindow</receiver>
    2026    <slot>open_from_file()</slot>
     2000   <slot>about_gui()</slot>
    20272001   <hints>
    20282002    <hint type="sourcelabel">
     
    20372011  </connection>
    20382012  <connection>
    2039    <sender>action_help</sender>
     2013   <sender>action_default</sender>
    20402014   <signal>triggered()</signal>
    20412015   <receiver>MainWindow</receiver>
    2042    <slot>help()</slot>
     2016   <slot>save_default()</slot>
    20432017   <hints>
    20442018    <hint type="sourcelabel">
     
    20532027  </connection>
    20542028  <connection>
    2055    <sender>action_about</sender>
     2029   <sender>line_jobname</sender>
     2030   <signal>textChanged(QString)</signal>
     2031   <receiver>MainWindow</receiver>
     2032   <slot>change_lineinput()</slot>
     2033   <hints>
     2034    <hint type="sourcelabel">
     2035     <x>189</x>
     2036     <y>464</y>
     2037    </hint>
     2038    <hint type="destinationlabel">
     2039     <x>4</x>
     2040     <y>122</y>
     2041    </hint>
     2042   </hints>
     2043  </connection>
     2044  <connection>
     2045   <sender>check_Z</sender>
     2046   <signal>stateChanged(int)</signal>
     2047   <receiver>MainWindow</receiver>
     2048   <slot>check_flags()</slot>
     2049   <hints>
     2050    <hint type="sourcelabel">
     2051     <x>434</x>
     2052     <y>284</y>
     2053    </hint>
     2054    <hint type="destinationlabel">
     2055     <x>458</x>
     2056     <y>344</y>
     2057    </hint>
     2058   </hints>
     2059  </connection>
     2060  <connection>
     2061   <sender>check_cycfill</sender>
     2062   <signal>stateChanged(int)</signal>
     2063   <receiver>MainWindow</receiver>
     2064   <slot>change_rc_list()</slot>
     2065   <hints>
     2066    <hint type="sourcelabel">
     2067     <x>274</x>
     2068     <y>705</y>
     2069    </hint>
     2070    <hint type="destinationlabel">
     2071     <x>4</x>
     2072     <y>510</y>
     2073    </hint>
     2074   </hints>
     2075  </connection>
     2076  <connection>
     2077   <sender>action_start_watchdog</sender>
    20562078   <signal>triggered()</signal>
    20572079   <receiver>MainWindow</receiver>
    2058    <slot>about_gui()</slot>
     2080   <slot>start_watchdog()</slot>
    20592081   <hints>
    20602082    <hint type="sourcelabel">
     
    20632085    </hint>
    20642086    <hint type="destinationlabel">
    2065      <x>479</x>
    2066      <y>366</y>
    2067     </hint>
    2068    </hints>
    2069   </connection>
    2070   <connection>
    2071    <sender>action_default</sender>
    2072    <signal>triggered()</signal>
    2073    <receiver>MainWindow</receiver>
    2074    <slot>save_default()</slot>
    2075    <hints>
    2076     <hint type="sourcelabel">
    2077      <x>-1</x>
    2078      <y>-1</y>
    2079     </hint>
    2080     <hint type="destinationlabel">
    2081      <x>479</x>
    2082      <y>366</y>
    2083     </hint>
    2084    </hints>
    2085   </connection>
    2086   <connection>
    2087    <sender>line_jobname</sender>
    2088    <signal>textChanged(QString)</signal>
    2089    <receiver>MainWindow</receiver>
    2090    <slot>change_lineinput()</slot>
    2091    <hints>
    2092     <hint type="sourcelabel">
    2093      <x>185</x>
    2094      <y>485</y>
    2095     </hint>
    2096     <hint type="destinationlabel">
    2097      <x>4</x>
    2098      <y>122</y>
    2099     </hint>
    2100    </hints>
    2101   </connection>
    2102   <connection>
    2103    <sender>check_Z</sender>
    2104    <signal>stateChanged(int)</signal>
    2105    <receiver>MainWindow</receiver>
    2106    <slot>check_flags()</slot>
    2107    <hints>
    2108     <hint type="sourcelabel">
    2109      <x>434</x>
    2110      <y>284</y>
    2111     </hint>
    2112     <hint type="destinationlabel">
    21132087     <x>458</x>
    21142088     <y>344</y>
     
    21172091  </connection>
    21182092  <connection>
    2119    <sender>check_cycfill</sender>
    2120    <signal>stateChanged(int)</signal>
    2121    <receiver>MainWindow</receiver>
    2122    <slot>change_rc_list()</slot>
    2123    <hints>
    2124     <hint type="sourcelabel">
    2125      <x>276</x>
    2126      <y>690</y>
    2127     </hint>
    2128     <hint type="destinationlabel">
    2129      <x>4</x>
    2130      <y>510</y>
    2131     </hint>
    2132    </hints>
    2133   </connection>
    2134   <connection>
    2135    <sender>action_start_watchdog</sender>
    2136    <signal>triggered()</signal>
    2137    <receiver>MainWindow</receiver>
    2138    <slot>start_watchdog()</slot>
    2139    <hints>
    2140     <hint type="sourcelabel">
    2141      <x>-1</x>
    2142      <y>-1</y>
    2143     </hint>
    2144     <hint type="destinationlabel">
    2145      <x>458</x>
    2146      <y>344</y>
    2147     </hint>
    2148    </hints>
    2149   </connection>
    2150   <connection>
    21512093   <sender>check_svf</sender>
    21522094   <signal>stateChanged(int)</signal>
     
    21812123  </connection>
    21822124  <connection>
    2183    <sender>push_create_set</sender>
    2184    <signal>clicked()</signal>
    2185    <receiver>MainWindow</receiver>
    2186    <slot>create_set()</slot>
    2187    <hints>
    2188     <hint type="sourcelabel">
    2189      <x>692</x>
    2190      <y>710</y>
    2191     </hint>
    2192     <hint type="destinationlabel">
    2193      <x>863</x>
    2194      <y>634</y>
    2195     </hint>
    2196    </hints>
    2197   </connection>
    2198   <connection>
    2199    <sender>push_copy</sender>
    2200    <signal>clicked()</signal>
    2201    <receiver>MainWindow</receiver>
    2202    <slot>copy_job()</slot>
    2203    <hints>
    2204     <hint type="sourcelabel">
    2205      <x>552</x>
    2206      <y>710</y>
    2207     </hint>
    2208     <hint type="destinationlabel">
    2209      <x>985</x>
    2210      <y>650</y>
    2211     </hint>
    2212    </hints>
    2213   </connection>
    2214   <connection>
    22152125   <sender>list_user</sender>
    22162126   <signal>customContextMenuRequested(QPoint)</signal>
     
    23152225   <hints>
    23162226    <hint type="sourcelabel">
    2317      <x>342</x>
    2318      <y>552</y>
     2227     <x>246</x>
     2228     <y>560</y>
    23192229    </hint>
    23202230    <hint type="destinationlabel">
     
    23312241   <hints>
    23322242    <hint type="sourcelabel">
    2333      <x>134</x>
    2334      <y>547</y>
     2243     <x>138</x>
     2244     <y>530</y>
    23352245    </hint>
    23362246    <hint type="destinationlabel">
    23372247     <x>1183</x>
    23382248     <y>538</y>
     2249    </hint>
     2250   </hints>
     2251  </connection>
     2252  <connection>
     2253   <sender>button_editconfig</sender>
     2254   <signal>clicked()</signal>
     2255   <receiver>MainWindow</receiver>
     2256   <slot>OpenConfig()</slot>
     2257   <hints>
     2258    <hint type="sourcelabel">
     2259     <x>157</x>
     2260     <y>555</y>
     2261    </hint>
     2262    <hint type="destinationlabel">
     2263     <x>397</x>
     2264     <y>-4</y>
     2265    </hint>
     2266   </hints>
     2267  </connection>
     2268  <connection>
     2269   <sender>list_jobs</sender>
     2270   <signal>customContextMenuRequested(QPoint)</signal>
     2271   <receiver>MainWindow</receiver>
     2272   <slot>openmenujob()</slot>
     2273   <hints>
     2274    <hint type="sourcelabel">
     2275     <x>571</x>
     2276     <y>213</y>
     2277    </hint>
     2278    <hint type="destinationlabel">
     2279     <x>538</x>
     2280     <y>-4</y>
    23392281    </hint>
    23402282   </hints>
     
    23692311  <slot>openmenumonitoring()</slot>
    23702312  <slot>startpalmbuild()</slot>
     2313  <slot>OpenConfig()</slot>
     2314  <slot>openmenujob()</slot>
    23712315 </slots>
    23722316</ui>
Note: See TracChangeset for help on using the changeset viewer.