Index: lm/trunk/SCRIPTS/palm_jm
===================================================================
--- /palm/trunk/SCRIPTS/palm_jm	(revision 4404)
+++ 	(revision )
@@ -1,429 +1,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-#--------------------------------------------------------------------------------#
-# This file is part of the PALM model system.
-#
-# PALM is free software: you can redistribute it and/or modify it under the terms
-# of the GNU General Public License as published by the Free Software Foundation,
-# either version 3 of the License, or (at your option) any later version.
-#
-# PALM is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# PALM. If not, see <http://www.gnu.org/licenses/>.
-#
-# Copyright 1997-2018  Leibniz Universitaet Hannover
-##--------------------------------------------------------------------------------#
-#
-# Current revisions:
-# -----------------
-# 
-# 
-# Former revisions:
-# -----------------
-# $Id$
-# Removed PALM_BIN dependency
-# 
-# 2825 2018-02-20 21:48:27Z maronga
-# Modified header
-# 
-# 2718 2018-01-02 08:49:38Z maronga
-# Corrected "Former revisions" section
-# 
-# 2696 2017-12-14 17:12:51Z kanani
-# Change in file header (GPL part)
-#
-# 2504 2017-09-27 10:36:13Z maronga
-# Bugfix: jobs were not loaded on start.
-# 
-# 2484 2017-09-20 14:22:42Z maronga
-# Adapted for palmrun with USER_CODE always stored under /JOBS/name/USER_CODE/.
-# Added PALM logo
-# 
-# 2068 2016-11-11 21:59:39Z maronga
-#
-# 2067 2016-11-11 21:55:49Z maronga
-# Minor bugfix: palm_jm can now be called from any location
-#
-# 2065 2016-11-11 12:25:10Z maronga
-# Initial revision
-#
-#
-# Description:
-# ------------
-# PALM job manager works a file manager for PALM input files. It lists all jobs in
-# the working directory and displays associated input and user code files, which
-# can be opened directly from the interface. Also, it is possible to copy jobs and
-# to create entire new sets of jobs based on a reference job.
-# 
-# Instructions:
-# -------------
-# 1) Start palm_jm either from mrungui or from shell by "nohup palm_jm&"
-#
-# To do:
-# ------
-# 1) Add display for the MONITORING and OUTPUT folder
-# 2) Add zip function to export single or multiple jobs
-# 3) Allow for copying INPUT files to a remote host
-#------------------------------------------------------------------------------!
-
-import os
-from PyQt4 import QtGui, QtCore, uic
-from PyQt4.QtCore import pyqtSlot,SIGNAL,SLOT
-import shutil
-import subprocess as sub
-import sys
-
-set_list = []
-
-
-
-# Determine PALM directories
-try: 
-   devnull = open(os.devnull, 'w')      
-   palm_dir = os.getcwd()
-   palm_bin = palm_dir + '/trunk/SCRIPTS'
-   job_dir = palm_dir + '/JOBS'
-   user_dir = palm_dir + '/USER_CODE'
-   with open(palm_bin + '/palm_jm', 'r') as fh:
-      # file found
-      out = None
-except:   
-   print ('Error. palm_jm probably called in wrong directory.')
-   raise SystemExit
-
-
-# MainWindow class
-class JobManager(QtGui.QMainWindow):
-
-        
-    def __init__(self):
-
-        super(JobManager, self).__init__()
-              
-        self.InitUi()         
-
-   
-    # Initialized MainWindow UI
-    def InitUi(self):
-
-        print(palm_bin + '/palm_jm_files/palm_jm.ui')
-
-        # Load predefined mainwindow
-        uic.loadUi(palm_bin + '/palm_jm_files/palm_jm.ui', self)
-
-        self.palm_logo.setPixmap(QtGui.QPixmap(palm_dir  + "/trunk/SCRIPTS/palmrungui_files/logo.png"))
-
-    
-        # Display MainWindow
-        self.show()
-        
-        QtGui.QApplication.processEvents()
-
-        
-        self.load_jobs()
-
-    def update_all(self):
- 
-       self.setEnabled(False)
-       self.list_input.clear() 
-       self.list_user.clear()
-       self.load_jobs()
-       self.setEnabled(True)
-
-    # Load jobs into list
-    def load_jobs(self):
-       
-       self.list_jobs.clear() 
-       self.push_copy.setEnabled(False)
-       self.push_create_set.setEnabled(False)      
-      
-       self.line_path.setText(job_dir + "/")
-       
-       list_of_files = os.listdir(job_dir)
-             
-       for i in range(0,len(list_of_files)):
-          tmp_file = job_dir + "/" + list_of_files[i]
-
-          if ( os.path.isdir(tmp_file) ):
-	     self.list_jobs.addItem(str(list_of_files[i]))
-
-
-    # Update input and user code lists
-    def update_input(self):
-      
-       self.list_input.clear() 
-       self.list_user.clear()
-       self.push_copy.setEnabled(True)
-       self.push_create_set.setEnabled(True)
-      
-       job_to_show = job_dir + "/" + self.list_jobs.currentItem().text() + "/INPUT"
-
-       if ( os.path.isdir(job_to_show) ):
-
-          list_of_files = os.listdir(job_to_show)
-         
-          for i in range(0,len(list_of_files)):
-             tmp_file = job_to_show + "/" + list_of_files[i]
-             
-             if ( os.path.isfile(tmp_file) ):
-	        self.list_input.addItem(str(list_of_files[i]))
-  
-       job_to_show = job_dir + "/" + self.list_jobs.currentItem().text() + "/USER_CODE"
-       
-       if ( os.path.isdir(job_to_show) ):
-          
-          list_of_files = os.listdir(job_to_show)
-          
-          for i in range(0,len(list_of_files)):
-             tmp_file = job_to_show + "/" + list_of_files[i]
-
-             if ( os.path.isfile(tmp_file) ):
-	        self.list_user.addItem(str(list_of_files[i]))
-  
-  
-    # Make a copy of a job
-    def copy_job(self):
-  
-       self.setEnabled(False)
-       old_job_name = self.list_jobs.currentItem().text()
-       
-       text, ret = QtGui.QInputDialog.getText(self, "Copy job", "Enter new job name:", mode = QtGui.QLineEdit.Normal, text = old_job_name)
-       
-       if ( ret ):
-          new_job_name = str(text)
-       else:
-	   self.setEnabled(True)
-	   return
-	 
-       new_input_dir  = job_dir + "/" + new_job_name + "/INPUT"
-
-#      check if a job exists with the new job name  
-       if ( os.path.isdir(new_input_dir) ):
-	   notify = QtGui.QMessageBox.warning(self,'Create new job directory',"Error. Could not create job directory. A job with the new name already exists.")
-	   self.setEnabled(True)
-	   return
-       else:
-	   os.makedirs(new_input_dir)
-
-#      copy and rename input files (if present)       
-       job_to_copy = job_dir + "/" + old_job_name + "/INPUT"
-
-       if ( os.path.isdir(job_to_copy) ):
-
-          list_of_files = os.listdir(job_to_copy)
-         
-          for i in range(0,len(list_of_files)):
-
-             tmp_file = job_to_copy + "/" + list_of_files[i]          
-             new_file = new_input_dir + "/" + list_of_files[i].replace(old_job_name, new_job_name)
-             shutil.copy(tmp_file, new_file)
-
-
-
-
-       new_user_dir  = job_dir + "/" + new_job_name + "/USER_CODE"
-       
-#      check if user code exists in the new job directory 
-       if ( os.path.isdir(new_user_dir) ):
-	   notify = QtGui.QMessageBox.warning(self,'Create new user code directory',"Error. Could not create user code directory. A user code directiory with the new name already exists.")
-	   self.setEnabled(True)
-	   return
-       else:
-	   os.makedirs(new_user_dir)
-
-
-#      copy user code files (if present)       
-       user_to_copy = job_dir + "/" + old_job_name + "/USER_CODE"
-
-       if ( os.path.isdir(user_to_copy) ):
-
-          list_of_files = os.listdir(user_to_copy)
-         
-          for i in range(0,len(list_of_files)):
-
-             tmp_file = user_to_copy + "/" + list_of_files[i]          
-             new_file = new_user_dir + "/" + list_of_files[i]
-             shutil.copy(tmp_file, new_file)
-
-       self.load_jobs()
-       self.list_input.clear() 
-       self.list_user.clear()
-       self.setEnabled(True)
-
-
-    # Create a whole set of jobs
-    def create_set(self):
-  
-       global set_list
-#      disable mainwindow  
-       self.setEnabled(False)
-      
-#      show Options Dialog      
-       opt = CreateSetBox()
-       opt.exec_()
-
-       old_job_name = self.list_jobs.currentItem().text()
-
-       for j in range(0,len(set_list)):
-
-          if ( set_list[j] != "" ):
-	     new_job_name   = str(set_list[j])
-             new_input_dir  = job_dir + "/" + str(set_list[j]) + "/INPUT"
-          else:
-	     continue
-
-#         check if a job exists with the new job name  
-          if ( os.path.isdir(new_input_dir) ):
-	     notify = QtGui.QMessageBox.warning(self,'Create new job directory',"Error. Could not create job directory. A job with the new name already exists.")
-	     self.setEnabled(True)
-	     return
-          else:
-	     os.makedirs(new_input_dir)
-
-#         copy and rename input files (if present)       
-          job_to_copy = job_dir + "/" + old_job_name + "/INPUT"
-
-          if ( os.path.isdir(job_to_copy) ):
-
-             list_of_files = os.listdir(job_to_copy)
-         
-             for i in range(0,len(list_of_files)):
-
-                tmp_file = job_to_copy + "/" + list_of_files[i]          
-                new_file = new_input_dir + "/" + list_of_files[i].replace(old_job_name, new_job_name)
-                shutil.copy(tmp_file, new_file)
-
-
-          new_user_dir  = job_dir + "/" + new_job_name + "/USER_CODE"
-       
-#         check if user code exists in the new job directory 
-          if ( os.path.isdir(new_user_dir) ):
-	      notify = QtGui.QMessageBox.warning(self,'Create new user code directory',"Error. Could not create user code directory. A user code directiory with the new name already exists.")
-	      self.setEnabled(True)
-	      return
-          else:
-	      os.makedirs(new_user_dir)
-
-
-#         copy user code files (if present)       
-          user_to_copy = job_dir + "/" + old_job_name + "/USER_CODE"
-
-          if ( os.path.isdir(user_to_copy) ):
-
-             list_of_files = os.listdir(user_to_copy)
-         
-             for i in range(0,len(list_of_files)):
-
-                tmp_file = user_to_copy + "/" + list_of_files[i]          
-                new_file = new_user_dir + "/" + list_of_files[i]
-                shutil.copy(tmp_file, new_file)
-
-          self.load_jobs()
-          self.list_input.clear() 
-          self.list_user.clear()
-
-       self.setEnabled(True) 
-   
-   
- # Add a custom context menu
-    def openmenuinput(self, position):
-
-        menu = QtGui.QMenu()
-
-        selection = self.list_input.selectedItems()
-        
-        if ( len(selection) != 0 ):
-
-           openAction = menu.addAction('Open selected files')     
-           openAction.setStatusTip('Open file(s) in your favorite editor')
-           openAction.triggered.connect(self.OpenFilesInput)
-           action = menu.exec_(self.list_input.mapToGlobal(position))
-
- # Add a custom context menu
-    def openmenuuser(self, position):
-
-        menu = QtGui.QMenu()
-
-        selection = self.list_user.selectedItems()
-        
-        if ( len(selection) != 0 ):
-
-           openAction = menu.addAction('Open selected files')     
-           openAction.setStatusTip('Open file(s) in your favorite editor')
-           openAction.triggered.connect(self.OpenFilesUser)
-           action = menu.exec_(self.list_user.mapToGlobal(position))
-
-
-    def OpenFilesInput(self):
-   
-       sel_job = self.list_jobs.currentItem().text()
-       sel_files = self.list_input.selectedItems()
-       
-       input_dir = job_dir + "/" + sel_job + "/INPUT/"
-       
-       open_files = ""
-       for i in range(0,len(sel_files)):
-          open_files = open_files + "xdg-open " + input_dir +  sel_files[i].text() + "; "
-
-       os.system(str(open_files))
-
-    def OpenFilesUser(self):
-   
-       sel_job = self.list_jobs.currentItem().text()
-       sel_files = self.list_user.selectedItems()
-       
-       input_dir = job_dir + "/" + sel_job + "/USER_CODE/"
-       
-       open_files = ""
-       for i in range(0,len(sel_files)):
-          open_files = open_files + "xdg-open " + input_dir +  sel_files[i].text() + "; "
-
-       os.system(str(open_files)) 
-       selection = self.list_jobs.selectedItems()
-  
-  
-  
-# Message box for showing RUN_CONTROL output
-class CreateSetBox(QtGui.QDialog):
-    def __init__(self):
-      
-        super(CreateSetBox, self).__init__()
-        
-        uic.loadUi(palm_bin + '/palm_jm_files/palm_jm_create_set.ui', self)
-        
-        self.show()
-        
-        return
-
-#   Cancel button
-    def rejected(self):
-      
-       self.close()
-     
-       return
-  
-
-#   OK button
-    def accept(self):
-      
-       global set_list
-       
-       text = self.list.toPlainText() 
-       set_list = text.split('\n')
-       self.close()
-     
-       return
-  
-# Main loop       
-def main():
-    
-    app = QtGui.QApplication(sys.argv)
-    res = JobManager() 
-    sys.exit(app.exec_())
-
-
-if __name__ == '__main__':
-    main()   
Index: /palm/trunk/SCRIPTS/palmrungui
===================================================================
--- /palm/trunk/SCRIPTS/palmrungui	(revision 4404)
+++ /palm/trunk/SCRIPTS/palmrungui	(revision 4405)
@@ -25,4 +25,8 @@
 # -----------------
 # $Id$
+# Major revisions: New layout. Merged with palm job manager (palm_jm).
+# Minor revisions: Misc. bugs fixed.
+# 
+# 4394 2020-02-04 21:40:38Z maronga
 # Bugfix: harmonized naming convention of configuration files
 # 
@@ -74,7 +78,9 @@
 import subprocess
 from PyQt4 import QtCore, QtGui, uic
-from PyQt4.QtCore import QProcess
+from PyQt4.QtCore import QProcess,pyqtSlot,SIGNAL,SLOT
 from time import strftime
 import os
+import shutil
+
 
 
@@ -95,4 +101,5 @@
 
 palmrunline = ""
+set_list = []
 
 Ui_MainWindow = uic.loadUiType("%s/palmrungui_files/mainwindow.ui" % (palm_bin))[0]
@@ -114,8 +121,10 @@
         super(Mainwindow, self).__init__()
         self.setupUi(self)
-        
-        self.palm_logo.setPixmap(QtGui.QPixmap(palm_dir + "/trunk/SCRIPTS/palmrungui_files/logo.png"))   
+    
+        self.palm_logo.setPixmap(QtGui.QPixmap(palm_dir + "/trunk/SCRIPTS/palmrungui_files/logo.png"))        
         
         self.recent_jobs(50)
+        self.load_jobs()
+
         commandline = self.groupBox.findChild(QtGui.QLineEdit,"commandline")
         commandline.setText("")
@@ -143,5 +152,10 @@
             commandline.setText(palmrunline)
             self.setup_gui(palmrunline)
-                      
+
+
+    
+        QtGui.QApplication.processEvents()
+
+
         
     # starts xterm with palmrun commandline
@@ -224,5 +238,5 @@
         j = 0;
 
-        list_jobname = self.group_job.findChild(QtGui.QListWidget,"list_jobname")
+        list_jobname = self.group_history.findChild(QtGui.QListWidget,"list_jobname")
         list_jobname.clear()
 
@@ -261,5 +275,5 @@
     ###############################
     def enable_coupled(self):
-        coupledState = self.group_job.findChild(QtGui.QComboBox, "drop_job").currentText()
+        coupledState = self.group_execution.findChild(QtGui.QComboBox, "drop_job").currentText()
         group = self.group_execution.findChild(QtGui.QGroupBox, "group_coupled")
         
@@ -269,44 +283,28 @@
             self.group_coupled.setEnabled(False)
             
-            
-    # select a job via "select"-button
-    ################################
-    def choosejob(self):
-        jobDir = "%s/JOBS" % (palm_dir)        
-
-        # Pick a job from dialog
-        filename = QtGui.QFileDialog.getExistingDirectory(self, "Open a folder", jobDir, QtGui.QFileDialog.ShowDirsOnly)
-        
-        # If a file was selected, load it into mainwindow
-        if ( filename != ""):
-	    jobname = os.path.basename(unicode(filename))
-            self.group_job.findChild(QtGui.QLineEdit,"line_jobname").setText(jobname)
-            self.group_job.findChild(QtGui.QListWidget,"list_jobname").clearSelection()
-
-            # Change palmrunline accordingly
-            self.change_commandline("r","")
-            self.change_commandline("a","")
-            return
-        else:
-            return
-    
-        
+
     # select a job via click from list
     #################################
     def choosejob_list(self):
         #  Get selected item from list
-        list_jobname = self.group_job.findChild(QtGui.QListWidget,"list_jobname")
+        list_jobname = self.group_history.findChild(QtGui.QListWidget,"list_jobname")
         filename = str(list_jobname.currentItem().text())
+            
+        timestamp = filename[len(filename)-17:][:16]
+        jobname = filename[:len(filename) - 19];
+        
         itemint = list_jobname.currentRow()
-    
+
         # Reload list
-        self.setupUi(self)
         self.recent_jobs(50)
+        self.load_jobs()
     
         # Set selected item to jobname
         list_jobname.item(itemint).setSelected(True);
     
-        timestamp = filename[len(filename)-17:][:16]
-        jobname = filename[:len(filename) - 19];
+        # Set selected item to jobname in "available jobs" list
+        item2int = self.list_jobs.findItems(jobname,QtCore.Qt.MatchCaseSensitive)
+        self.list_jobs.setCurrentItem(item2int[0])
+        self.update_input()
     
         fileDir = "%s/.palmrungui.history" % (palm_dir)
@@ -338,5 +336,5 @@
     ######################################################
     def change_rc_list(self):
-        drop_job = self.group_job.findChild(QtGui.QComboBox,"drop_job").currentText()    
+        drop_job = self.group_execution.findChild(QtGui.QComboBox,"drop_job").currentText()    
         self.change_commandline("a","")
     
@@ -381,5 +379,5 @@
         # Change in parameter "r" (jobname)
         if (id_str == "r"):
-            filename = str(self.group_job.findChild(QtGui.QLineEdit,"line_jobname").text())
+            filename = str(self.group_execution.findChild(QtGui.QLineEdit,"line_jobname").text())
             s = filename.split("JOBS/") 
             param[0] = s[len(s)-1]
@@ -387,5 +385,5 @@
             if ( initialize == True ):#and self.group_runcontrol.isEnabled() == True ):
                 self.group_execution.setEnabled(True)
-                self.group_job.findChild(QtGui.QComboBox,"drop_job").setEnabled(True)
+                self.group_execution.findChild(QtGui.QComboBox,"drop_job").setEnabled(True)
                 self.group_advanced.setEnabled(True)
                 self.groupBox.findChild(QtGui.QPushButton,"button_start").setEnabled(True) 
@@ -394,5 +392,5 @@
             elif ( param[0] == ""):            
                 self.group_execution.setEnabled(False)
-                self.group_job.findChild(QtGui.QComboBox,"drop_job").setEnabled(False)
+                self.group_execution.findChild(QtGui.QComboBox,"drop_job").setEnabled(False)
                 self.groupBox.findChild(QtGui.QPushButton,"button_start").setEnabled(False) 
                 self.menuBar.findChild(QtGui.QMenu,"menuStart").actions()[3].setEnabled(False)
@@ -400,24 +398,14 @@
                 self.delete_commandline("r")
                 self.change_commandline("a","remove")
-                self.group_job.findChild(QtGui.QLabel,"label_usercode").setText("")
                 return 1 
             
             else:
-                # Check if user code is available
-                usercode = "%s/JOBS/%s/USER_CODE" % (palm_dir,param[0])
-                                
-                if (os.path.exists(usercode) is True): 
-                    self.group_job.findChild(QtGui.QLabel,"label_usercode").setText("<font color='green'>User code found.</font>")
-               
-                else:               
-                    self.group_job.findChild(QtGui.QLabel,"label_usercode").setText("<font color='red'>Warning: no user code found!</font>")
-               
-
-                # Check if _pdf file is available, otherwise notice user
-                drop_job = self.group_job.findChild(QtGui.QComboBox,"drop_job").currentText()
+
+                # Check if _p3dr file is available, otherwise notice user
+                drop_job = self.group_execution.findChild(QtGui.QComboBox,"drop_job").currentText()
                 if ( self.group_execution.findChild(QtGui.QCheckBox,"check_restarts").checkState() == 2 or 
                      drop_job == "Restart run" or drop_job == "Restart run (coupled atmosphere ocean)"     ):
 
-                    jobname = self.group_job.findChild(QtGui.QLineEdit, "line_jobname").text()
+                    jobname = self.group_execution.findChild(QtGui.QLineEdit, "line_jobname").text()
                     restartfile = "%s/JOBS/%s/INPUT/%s_p3dr" % (palm_dir,jobname,jobname)
 
@@ -446,5 +434,5 @@
         elif (id_str == "a"): 
     
-            drop_job = self.group_job.findChild(QtGui.QComboBox,"drop_job").currentText()
+            drop_job = self.group_execution.findChild(QtGui.QComboBox,"drop_job").currentText()
             rc_flag = "#"
     
@@ -485,7 +473,6 @@
                 # Check if _p3dr file is available, otherwise notice user
                 if (status_restarts == 2):
-                    jobname = str(self.group_job.findChild(QtGui.QLineEdit, "line_jobname").text())[len(palm_dir)+len("/JOBS/"):]
+                    jobname = str(self.group_execution.findChild(QtGui.QLineEdit, "line_jobname").text())
                     restartfile = "%s/JOBS/%s/INPUT/%s_p3dr" % (palm_dir,jobname,jobname)
-                    
                     if (os.path.exists(restartfile) == True):                   
                         self.group_execution.findChild(QtGui.QLabel,"label_restart").setText("")
@@ -544,8 +531,4 @@
             tmptext = self.group_execution.findChild(QtGui.QLineEdit,"line_host").text()
             self.change_commandline("c",tmptext)
-
-        elif ( self.sender() == self.group_job.findChild(QtGui.QLineEdit, "line_jobname") ):
-            tmptext = self.group_job.findChild(QtGui.QLineEdit,"line_jobname").text()
-            self.change_commandline("r",tmptext)
 
         elif ( self.sender() == self.group_execution.findChild(QtGui.QLineEdit,"line_q")):
@@ -731,5 +714,7 @@
         self.setupUi(self)
         self.tabWidget.setCurrentIndex(0)
+        self.palm_logo.setPixmap(QtGui.QPixmap(palm_dir + "/trunk/SCRIPTS/palmrungui_files/logo.png"))    
         self.recent_jobs(50)
+        self.load_jobs()
         
     # Safes current commandline and user Parameters to .sav file
@@ -772,8 +757,4 @@
         file.close()        
 
-    # Execute command which starts jobmanager (start palm_jm)
-    #######################################################
-    def start_jobmanager(self):
-        subprocess.Popen(["nohup","palm_jm",">>","/dev/null", "2>&1","&"])        
         
     # Executes command which starts watchdog (start palm_wd)
@@ -798,5 +779,5 @@
     def setup_gui(self, palmrun_str):  
       
-        self.palm_logo.setPixmap(QtGui.QPixmap(palm_dir + "/trunk/SCRIPTS/palmrungui_files/logo.png"))   
+        #self.palm_logo.setPixmap(QtGui.QPixmap(palm_dir + "/trunk/SCRIPTS/palmrungui_files/logo.png"))   
       
         #  Some initial settings
@@ -813,5 +794,5 @@
 
         else:
-            self.group_job.setEnabled(True) 
+            self.group_execution.setEnabled(True) 
 
         # Loop for all parameters in palmrunline
@@ -831,5 +812,5 @@
               
                 if ( options != ""):
-                    self.group_job.findChild(QtGui.QLineEdit,"line_jobname").setText(options) 
+                    self.group_execution.findChild(QtGui.QLineEdit,"line_jobname").setText(options) 
                     nojob = False 
                 
@@ -925,5 +906,5 @@
             
             elif ( parameter == "y"):              
-                self.group_job.findChild(QtGui.QComboBox, "drop_job").setCurrentIndex(3) 
+                self.group_execution.findChild(QtGui.QComboBox, "drop_job").setCurrentIndex(3) 
              
 
@@ -944,7 +925,7 @@
                     if (options_2 == "d3"):      
                         if (options_all[:3][-1] == "#"):
-                            self.group_job.findChild(QtGui.QComboBox, "drop_job").setCurrentIndex(0) 
+                            self.group_execution.findChild(QtGui.QComboBox, "drop_job").setCurrentIndex(0) 
                         elif (options_all[:3][-1] == "r"):
-                            self.group_job.findChild(QtGui.QComboBox, "drop_job").setCurrentIndex(1) 
+                            self.group_execution.findChild(QtGui.QComboBox, "drop_job").setCurrentIndex(1) 
                         
                         elif (options_all[:3][-1] == "o"):
@@ -954,5 +935,5 @@
                         self.group_execution.findChild(QtGui.QCheckBox,"check_restarts").setChecked(True) 
                         # Check if _pdf file is available, otherwise notice user
-                        jobname = str(self.group_job.findChild(QtGui.QLineEdit,"line_jobname").text())[len(palm_dir)+len("/JOBS/"):] 
+                        jobname = str(self.group_execution.findChild(QtGui.QLineEdit,"line_jobname").text()) 
                         
                         restartfile = "%sJOBS/%s/INPUT/%s_p3dr" % (palm_dir,jobname,jobname)
@@ -974,8 +955,8 @@
         if ( ocean_run == True ):
             if ( coupled_run == True ):
-                self.group_job.findChild(QtGui.QComboBox, "drop_job").setCurrentIndex(4) 
+                self.group_execution.findChild(QtGui.QComboBox, "drop_job").setCurrentIndex(4) 
             
             else:
-                self.group_job.findChild(QtGui.QComboBox, "drop_job").setCurrentIndex(3) 
+                self.group_execution.findChild(QtGui.QComboBox, "drop_job").setCurrentIndex(3) 
 
         if ( user != ""):
@@ -991,5 +972,5 @@
             self.groupBox.findChild(QtGui.QPushButton,"button_start").setEnabled(False) 
             self.menuBar.findChild(QtGui.QMenu,"menuStart").actions()[3].setEnabled(False) 
-            self.group_job.findChild(QtGui.QComboBox, "drop_job").setEnabled(False) 
+            self.group_execution.findChild(QtGui.QComboBox, "drop_job").setEnabled(False) 
             self.group_advanced.setEnabled(False) 
             self.check_advanced.setEnabled(False) 
@@ -999,5 +980,5 @@
             self.groupBox.findChild(QtGui.QPushButton,"button_start").setEnabled(True) 
             self.menuBar.findChild(QtGui.QMenu,"menuStart").actions()[3].setEnabled(True)
-            self.group_job.findChild(QtGui.QComboBox, "drop_job").setEnabled(True) 
+            self.group_execution.findChild(QtGui.QComboBox, "drop_job").setEnabled(True) 
             self.group_advanced.setEnabled(True) 
          
@@ -1049,4 +1030,393 @@
             self.groupBox.findChild(QtGui.QLineEdit,"commandline").setText(palmrunline) 
             self.setup_gui(palmrunline)        
+
+ 
+   
+    def update_all(self):
+ 
+       self.setEnabled(False)
+       self.list_input.clear() 
+       self.list_user.clear()
+       self.list_monitoring.clear()
+       self.list_output.clear()
+       self.load_jobs()
+       self.setEnabled(True)
+
+    # Load jobs into list
+    def load_jobs(self):
+       
+       self.list_jobs.clear() 
+       self.push_copy.setEnabled(False)
+       self.push_create_set.setEnabled(False)      
+      
+       self.line_path.setText(job_dir + "/")
+       
+       list_of_files = os.listdir(job_dir)
+             
+       for i in range(0,len(list_of_files)):
+          tmp_file = job_dir + "/" + list_of_files[i]
+
+          if ( os.path.isdir(tmp_file) ):
+	     self.list_jobs.addItem(str(list_of_files[i]))
+
+
+    # Update input and user code lists
+    def update_input(self):
+      
+       self.list_input.clear() 
+       self.list_user.clear()
+       self.list_monitoring.clear()
+       self.list_output.clear()
+       self.push_copy.setEnabled(True)
+       self.push_create_set.setEnabled(True)
+      
+       job_to_show = job_dir + "/" + self.list_jobs.currentItem().text() + "/INPUT"
+
+       if ( os.path.isdir(job_to_show) ):
+
+          list_of_files = os.listdir(job_to_show)
+         
+          for i in range(0,len(list_of_files)):
+             tmp_file = job_to_show + "/" + list_of_files[i]
+             
+             if ( os.path.isfile(tmp_file) ):
+	        self.list_input.addItem(str(list_of_files[i]))
+  
+       job_to_show = job_dir + "/" + self.list_jobs.currentItem().text() + "/USER_CODE"
+       
+       if ( os.path.isdir(job_to_show) ):
+          
+          list_of_files = os.listdir(job_to_show)
+          
+          for i in range(0,len(list_of_files)):
+             tmp_file = job_to_show + "/" + list_of_files[i]
+
+             if ( os.path.isfile(tmp_file) ):
+	        self.list_user.addItem(str(list_of_files[i]))
+
+       job_to_show = job_dir + "/" + self.list_jobs.currentItem().text() + "/MONITORING"
+       
+       if ( os.path.isdir(job_to_show) ):
+          
+          list_of_files = os.listdir(job_to_show)
+          
+          for i in range(0,len(list_of_files)):
+             tmp_file = job_to_show + "/" + list_of_files[i]
+
+             if ( os.path.isfile(tmp_file) ):
+	        self.list_monitoring.addItem(str(list_of_files[i]))
+
+       job_to_show = job_dir + "/" + self.list_jobs.currentItem().text() + "/OUTPUT"
+       
+       if ( os.path.isdir(job_to_show) ):
+          
+          list_of_files = os.listdir(job_to_show)
+          
+          for i in range(0,len(list_of_files)):
+             tmp_file = job_to_show + "/" + list_of_files[i]
+
+             if ( os.path.isfile(tmp_file) ):
+	        self.list_output.addItem(str(list_of_files[i]))
+  
+       self.group_execution.findChild(QtGui.QLineEdit,"line_jobname").setText(self.list_jobs.currentItem().text())
+       self.group_history.findChild(QtGui.QListWidget,"list_jobname").clearSelection()
+
+       # Change palmrunline accordingly
+       self.change_commandline("r","")
+       self.change_commandline("a","")
+  
+  
+    # Make a copy of a job
+    def copy_job(self):
+  
+       self.setEnabled(False)
+       old_job_name = self.list_jobs.currentItem().text()
+       
+       text, ret = QtGui.QInputDialog.getText(self, "Copy job", "Enter new job name:", mode = QtGui.QLineEdit.Normal, text = old_job_name)
+       
+       if ( ret ):
+          new_job_name = str(text)
+       else:
+	   self.setEnabled(True)
+	   return
+	 
+       new_input_dir  = job_dir + "/" + new_job_name + "/INPUT"
+
+#      check if a job exists with the new job name  
+       if ( os.path.isdir(new_input_dir) ):
+	   notify = QtGui.QMessageBox.warning(self,'Create new job directory',"Error. Could not create job directory. A job with the new name already exists.")
+	   self.setEnabled(True)
+	   return
+       else:
+	   os.makedirs(new_input_dir)
+
+#      copy and rename input files (if present)       
+       job_to_copy = job_dir + "/" + old_job_name + "/INPUT"
+
+       if ( os.path.isdir(job_to_copy) ):
+
+          list_of_files = os.listdir(job_to_copy)
+         
+          for i in range(0,len(list_of_files)):
+
+             tmp_file = job_to_copy + "/" + list_of_files[i]          
+             new_file = new_input_dir + "/" + list_of_files[i].replace(old_job_name, new_job_name)
+             shutil.copy(tmp_file, new_file)
+
+
+
+
+       new_user_dir  = job_dir + "/" + new_job_name + "/USER_CODE"
+       
+#      check if user code exists in the new job directory 
+       if ( os.path.isdir(new_user_dir) ):
+	   notify = QtGui.QMessageBox.warning(self,'Create new user code directory',"Error. Could not create user code directory. A user code directiory with the new name already exists.")
+	   self.setEnabled(True)
+	   return
+       else:
+	   os.makedirs(new_user_dir)
+
+
+#      copy user code files (if present)       
+       user_to_copy = job_dir + "/" + old_job_name + "/USER_CODE"
+
+       if ( os.path.isdir(user_to_copy) ):
+
+          list_of_files = os.listdir(user_to_copy)
+         
+          for i in range(0,len(list_of_files)):
+
+             tmp_file = user_to_copy + "/" + list_of_files[i]          
+             new_file = new_user_dir + "/" + list_of_files[i]
+             shutil.copy(tmp_file, new_file)
+
+       self.load_jobs()
+       self.list_input.clear() 
+       self.list_user.clear()
+       self.list_monitoring.clear()
+       self.list_output.clear()
+       self.setEnabled(True)
+
+
+    # Create a whole set of jobs
+    def create_set(self):
+  
+       global set_list
+#      disable mainwindow  
+       self.setEnabled(False)
+      
+#      show Options Dialog      
+       opt = CreateSetBox()
+       opt.exec_()
+
+       old_job_name = self.list_jobs.currentItem().text()
+
+       for j in range(0,len(set_list)):
+
+          if ( set_list[j] != "" ):
+             new_job_name   = str(set_list[j])
+             new_input_dir  = job_dir + "/" + str(set_list[j]) + "/INPUT"
+          else:
+             continue
+
+#         check if a job exists with the new job name  
+          if ( os.path.isdir(new_input_dir) ):
+             notify = QtGui.QMessageBox.warning(self,'Create new job directory',"Error. Could not create job directory. A job with the new name already exists.")
+             self.setEnabled(True)
+             return
+          else:
+             os.makedirs(new_input_dir)
+
+#         copy and rename input files (if present)       
+          job_to_copy = job_dir + "/" + old_job_name + "/INPUT"
+
+          if ( os.path.isdir(job_to_copy) ):
+
+             list_of_files = os.listdir(job_to_copy)
+         
+             for i in range(0,len(list_of_files)):
+
+                tmp_file = job_to_copy + "/" + list_of_files[i]          
+                new_file = new_input_dir + "/" + list_of_files[i].replace(old_job_name, new_job_name)
+                shutil.copy(tmp_file, new_file)
+
+
+          new_user_dir  = job_dir + "/" + new_job_name + "/USER_CODE"
+       
+#         check if user code exists in the new job directory 
+          if ( os.path.isdir(new_user_dir) ):
+	      notify = QtGui.QMessageBox.warning(self,'Create new user code directory',"Error. Could not create user code directory. A user code directiory with the new name already exists.")
+	      self.setEnabled(True)
+	      return
+          else:
+	      os.makedirs(new_user_dir)
+
+
+#         copy user code files (if present)       
+          user_to_copy = job_dir + "/" + old_job_name + "/USER_CODE"
+
+          if ( os.path.isdir(user_to_copy) ):
+
+             list_of_files = os.listdir(user_to_copy)
+         
+             for i in range(0,len(list_of_files)):
+
+                tmp_file = user_to_copy + "/" + list_of_files[i]          
+                new_file = new_user_dir + "/" + list_of_files[i]
+                shutil.copy(tmp_file, new_file)
+
+          self.load_jobs()
+          self.list_input.clear() 
+          self.list_user.clear()
+          self.list_monitoring.clear()
+          self.list_output.clear()
+
+       self.setEnabled(True) 
+       set_list = []
+   
+ # Add a custom context menu
+    def openmenuinput(self, position):
+
+        menu = QtGui.QMenu()
+
+        selection = self.list_input.selectedItems()
+        
+        if ( len(selection) != 0 ):
+
+           openAction = menu.addAction('Open selected files')     
+           openAction.setStatusTip('Open file(s) in your favorite editor')
+           openAction.triggered.connect(self.OpenFilesInput)
+           action = menu.exec_(self.list_input.mapToGlobal(position))
+
+ # Add a custom context menu
+    def openmenuuser(self, position):
+
+        menu = QtGui.QMenu()
+
+        selection = self.list_user.selectedItems()
+        
+        if ( len(selection) != 0 ):
+
+           openAction = menu.addAction('Open selected files')     
+           openAction.setStatusTip('Open file(s) in your favorite editor')
+           openAction.triggered.connect(self.OpenFilesUser)
+           action = menu.exec_(self.list_user.mapToGlobal(position))
+
+ # Add a custom context menu
+    def openmenuoutput(self, position):
+
+        menu = QtGui.QMenu()
+
+        selection = self.list_output.selectedItems()
+        
+        print("test")
+        if ( len(selection) != 0 ):
+
+           openAction = menu.addAction('Open selected files')     
+           openAction.setStatusTip('Open file(s) in your favorite editor')
+           openAction.triggered.connect(self.OpenFilesOutput)
+           action = menu.exec_(self.list_output.mapToGlobal(position))
+
+ # Add a custom context menu
+    def openmenumonitoring(self, position):
+
+        menu = QtGui.QMenu()
+
+        selection = self.list_monitoring.selectedItems()
+        
+        if ( len(selection) != 0 ):
+
+           openAction = menu.addAction('Open selected files')     
+           openAction.setStatusTip('Open file(s) in your favorite editor')
+           openAction.triggered.connect(self.OpenFilesMonitoring)
+           action = menu.exec_(self.list_monitoring.mapToGlobal(position))
+
+    def OpenFilesInput(self):
+   
+       sel_job = self.list_jobs.currentItem().text()
+       sel_files = self.list_input.selectedItems()
+       
+       input_dir = job_dir + "/" + sel_job + "/INPUT/"
+       
+       open_files = ""
+       for i in range(0,len(sel_files)):
+          open_files = open_files + "xdg-open " + input_dir +  sel_files[i].text() + "; "
+
+       os.system(str(open_files))
+
+    def OpenFilesUser(self):
+   
+       sel_job = self.list_jobs.currentItem().text()
+       sel_files = self.list_user.selectedItems()
+       
+       input_dir = job_dir + "/" + sel_job + "/USER_CODE/"
+       
+       open_files = ""
+       for i in range(0,len(sel_files)):
+          open_files = open_files + "xdg-open " + input_dir +  sel_files[i].text() + "; "
+
+       os.system(str(open_files)) 
+       selection = self.list_jobs.selectedItems()
+  
+    def OpenFilesMonitoring(self):
+   
+       sel_job = self.list_jobs.currentItem().text()
+       sel_files = self.list_monitoring.selectedItems()
+       
+       input_dir = job_dir + "/" + sel_job + "/MONITORING/"
+       
+       open_files = ""
+       for i in range(0,len(sel_files)):
+          open_files = open_files + "xdg-open " + input_dir +  sel_files[i].text() + "; "
+
+       os.system(str(open_files)) 
+       selection = self.list_jobs.selectedItems()
+  
+    def OpenFilesOutput(self):
+   
+       sel_job = self.list_jobs.currentItem().text()
+       sel_files = self.list_output.selectedItems()
+       
+       input_dir = job_dir + "/" + sel_job + "/OUTPUT/"
+       
+       open_files = ""
+       for i in range(0,len(sel_files)):
+          open_files = open_files + "xdg-open " + input_dir +  sel_files[i].text() + "; "
+
+       os.system(str(open_files)) 
+       selection = self.list_jobs.selectedItems()
+  
+# Message box for showing RUN_CONTROL output
+class CreateSetBox(QtGui.QDialog):
+    def __init__(self):
+      
+        super(CreateSetBox, self).__init__()
+        
+        uic.loadUi(palm_bin + '/palmrungui_files/create_set.ui', self)
+        
+        self.show()
+        
+        return
+
+#   Cancel button
+    def rejected(self):
+      
+       self.close()
+     
+       return
+  
+
+#   OK button
+    def accept(self):
+      
+       global set_list
+       
+       text = self.list.toPlainText() 
+       set_list = text.split('\n')
+       self.close()
+     
+       return
+
+
         
 
Index: /palm/trunk/SCRIPTS/palmrungui_files/create_set.ui
===================================================================
--- /palm/trunk/SCRIPTS/palmrungui_files/create_set.ui	(revision 4405)
+++ /palm/trunk/SCRIPTS/palmrungui_files/create_set.ui	(revision 4405)
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Dialog</class>
+ <widget class="QDialog" name="Dialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>280</width>
+    <height>281</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Create job set</string>
+  </property>
+  <widget class="QDialogButtonBox" name="buttonBox">
+   <property name="geometry">
+    <rect>
+     <x>10</x>
+     <y>245</y>
+     <width>256</width>
+     <height>32</height>
+    </rect>
+   </property>
+   <property name="orientation">
+    <enum>Qt::Horizontal</enum>
+   </property>
+   <property name="standardButtons">
+    <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label">
+   <property name="geometry">
+    <rect>
+     <x>15</x>
+     <y>10</y>
+     <width>261</width>
+     <height>16</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Enter new job names (one job per line):</string>
+   </property>
+  </widget>
+  <widget class="QTextEdit" name="list">
+   <property name="geometry">
+    <rect>
+     <x>11</x>
+     <y>32</y>
+     <width>257</width>
+     <height>216</height>
+    </rect>
+   </property>
+  </widget>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>Dialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>Dialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>270</x>
+     <y>265</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
Index: /palm/trunk/SCRIPTS/palmrungui_files/mainwindow.ui
===================================================================
--- /palm/trunk/SCRIPTS/palmrungui_files/mainwindow.ui	(revision 4404)
+++ /palm/trunk/SCRIPTS/palmrungui_files/mainwindow.ui	(revision 4405)
@@ -13,6 +13,6 @@
     <x>0</x>
     <y>0</y>
-    <width>600</width>
-    <height>700</height>
+    <width>1185</width>
+    <height>800</height>
    </rect>
   </property>
@@ -25,12 +25,12 @@
   <property name="minimumSize">
    <size>
-    <width>600</width>
-    <height>700</height>
+    <width>1185</width>
+    <height>800</height>
    </size>
   </property>
   <property name="maximumSize">
    <size>
-    <width>600</width>
-    <height>700</height>
+    <width>1185</width>
+    <height>800</height>
    </size>
   </property>
@@ -67,6 +67,6 @@
      <rect>
       <x>0</x>
-      <y>570</y>
-      <width>601</width>
+      <y>680</y>
+      <width>1181</width>
       <height>81</height>
      </rect>
@@ -140,5 +140,5 @@
        <x>10</x>
        <y>50</y>
-       <width>581</width>
+       <width>771</width>
        <height>26</height>
       </rect>
@@ -165,7 +165,7 @@
      <rect>
       <x>0</x>
-      <y>5</y>
-      <width>591</width>
-      <height>581</height>
+      <y>-5</y>
+      <width>1181</width>
+      <height>696</height>
      </rect>
     </property>
@@ -194,35 +194,32 @@
       <string>Default</string>
      </attribute>
-     <widget class="QGroupBox" name="group_job">
+     <widget class="QGroupBox" name="group_execution">
       <property name="enabled">
-       <bool>true</bool>
+       <bool>false</bool>
       </property>
       <property name="geometry">
        <rect>
-        <x>0</x>
-        <y>0</y>
-        <width>571</width>
-        <height>296</height>
+        <x>10</x>
+        <y>395</y>
+        <width>431</width>
+        <height>266</height>
        </rect>
       </property>
-      <property name="font">
-       <font>
-        <weight>50</weight>
-        <bold>false</bold>
-       </font>
-      </property>
       <property name="title">
-       <string notr="true">Job name</string>
+       <string>Execution</string>
+      </property>
+      <property name="alignment">
+       <set>Qt::AlignCenter</set>
       </property>
       <property name="flat">
-       <bool>true</bool>
-      </property>
-      <widget class="QLineEdit" name="line_jobname">
-       <property name="geometry">
-        <rect>
-         <x>90</x>
-         <y>30</y>
-         <width>481</width>
-         <height>25</height>
+       <bool>false</bool>
+      </property>
+      <widget class="QLineEdit" name="line_q">
+       <property name="geometry">
+        <rect>
+         <x>310</x>
+         <y>80</y>
+         <width>111</width>
+         <height>21</height>
         </rect>
        </property>
@@ -230,39 +227,270 @@
         <string/>
        </property>
-      </widget>
-      <widget class="QPushButton" name="pushButton">
+       <property name="alignment">
+        <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
+       </property>
+      </widget>
+      <widget class="QLabel" name="label_2">
+       <property name="geometry">
+        <rect>
+         <x>230</x>
+         <y>75</y>
+         <width>71</width>
+         <height>21</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Queue:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
+       </property>
+      </widget>
+      <widget class="QLineEdit" name="line_pe">
+       <property name="geometry">
+        <rect>
+         <x>100</x>
+         <y>105</y>
+         <width>101</width>
+         <height>20</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string/>
+       </property>
+      </widget>
+      <widget class="QLabel" name="label_3">
+       <property name="geometry">
+        <rect>
+         <x>-20</x>
+         <y>105</y>
+         <width>111</width>
+         <height>16</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Cores:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
+       </property>
+      </widget>
+      <widget class="QLineEdit" name="line_tpn">
+       <property name="geometry">
+        <rect>
+         <x>310</x>
+         <y>105</y>
+         <width>111</width>
+         <height>21</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string/>
+       </property>
+      </widget>
+      <widget class="QLabel" name="label_4">
+       <property name="geometry">
+        <rect>
+         <x>200</x>
+         <y>100</y>
+         <width>101</width>
+         <height>21</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Tasks per node:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
+       </property>
+      </widget>
+      <widget class="QLineEdit" name="line_account">
+       <property name="geometry">
+        <rect>
+         <x>310</x>
+         <y>130</y>
+         <width>111</width>
+         <height>20</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string/>
+       </property>
+      </widget>
+      <widget class="QLabel" name="label_5">
+       <property name="geometry">
+        <rect>
+         <x>200</x>
+         <y>130</y>
+         <width>101</width>
+         <height>16</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Project account:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
+       </property>
+      </widget>
+      <widget class="QLabel" name="label_6">
+       <property name="geometry">
+        <rect>
+         <x>-10</x>
+         <y>130</y>
+         <width>101</width>
+         <height>16</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Wallclock time:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
+       </property>
+      </widget>
+      <widget class="QLineEdit" name="line_time">
+       <property name="geometry">
+        <rect>
+         <x>100</x>
+         <y>130</y>
+         <width>101</width>
+         <height>20</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string/>
+       </property>
+      </widget>
+      <widget class="QLabel" name="label_7">
+       <property name="geometry">
+        <rect>
+         <x>0</x>
+         <y>80</y>
+         <width>91</width>
+         <height>16</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Configuration:</string>
+       </property>
+       <property name="scaledContents">
+        <bool>false</bool>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
+       </property>
+      </widget>
+      <widget class="QLineEdit" name="line_host">
+       <property name="geometry">
+        <rect>
+         <x>100</x>
+         <y>80</y>
+         <width>101</width>
+         <height>20</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string/>
+       </property>
+      </widget>
+      <widget class="Line" name="line">
        <property name="geometry">
         <rect>
          <x>10</x>
-         <y>30</y>
-         <width>71</width>
-         <height>24</height>
-        </rect>
-       </property>
-       <property name="text">
-        <string>Select</string>
-       </property>
-      </widget>
-      <widget class="QLabel" name="label">
+         <y>150</y>
+         <width>411</width>
+         <height>20</height>
+        </rect>
+       </property>
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+      </widget>
+      <widget class="QCheckBox" name="check_restarts">
        <property name="geometry">
         <rect>
          <x>10</x>
-         <y>65</y>
-         <width>151</width>
-         <height>16</height>
-        </rect>
-       </property>
-       <property name="text">
-        <string>Recently submitted jobs:</string>
-       </property>
-      </widget>
-      <widget class="QListWidget" name="list_jobname">
+         <y>165</y>
+         <width>121</width>
+         <height>23</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Allow restarts</string>
+       </property>
+      </widget>
+      <widget class="QCheckBox" name="check_delete_tmp_files">
        <property name="geometry">
         <rect>
          <x>10</x>
-         <y>85</y>
-         <width>561</width>
-         <height>181</height>
-        </rect>
+         <y>185</y>
+         <width>281</width>
+         <height>23</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Do not delete temporary directory at end</string>
+       </property>
+      </widget>
+      <widget class="QCheckBox" name="check_verbose">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>205</y>
+         <width>261</width>
+         <height>23</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>No prompt on confirmation (silent)</string>
+       </property>
+      </widget>
+      <widget class="QLabel" name="label_restart">
+       <property name="enabled">
+        <bool>false</bool>
+       </property>
+       <property name="geometry">
+        <rect>
+         <x>130</x>
+         <y>165</y>
+         <width>291</width>
+         <height>20</height>
+        </rect>
+       </property>
+       <property name="font">
+        <font>
+         <weight>75</weight>
+         <bold>true</bold>
+        </font>
+       </property>
+       <property name="text">
+        <string/>
+       </property>
+      </widget>
+      <widget class="QCheckBox" name="check_cycfill">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>225</y>
+         <width>261</width>
+         <height>21</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Use cyclic fill method</string>
+       </property>
+      </widget>
+      <widget class="QCheckBox" name="check_svf">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>245</y>
+         <width>261</width>
+         <height>21</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Read sky view factors from file</string>
        </property>
       </widget>
@@ -273,7 +501,7 @@
        <property name="geometry">
         <rect>
-         <x>70</x>
-         <y>270</y>
-         <width>271</width>
+         <x>100</x>
+         <y>50</y>
+         <width>251</width>
          <height>25</height>
         </rect>
@@ -310,14 +538,11 @@
        </item>
       </widget>
-      <widget class="QLabel" name="label_usercode">
-       <property name="enabled">
-        <bool>true</bool>
-       </property>
-       <property name="geometry">
-        <rect>
-         <x>350</x>
-         <y>267</y>
-         <width>231</width>
-         <height>31</height>
+      <widget class="QLineEdit" name="line_jobname">
+       <property name="geometry">
+        <rect>
+         <x>100</x>
+         <y>20</y>
+         <width>321</width>
+         <height>25</height>
         </rect>
        </property>
@@ -331,64 +556,25 @@
         <string/>
        </property>
+       <property name="frame">
+        <bool>true</bool>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
       </widget>
       <widget class="QLabel" name="label_8">
        <property name="geometry">
         <rect>
-         <x>10</x>
-         <y>275</y>
-         <width>81</width>
+         <x>0</x>
+         <y>55</y>
+         <width>91</width>
          <height>16</height>
         </rect>
        </property>
        <property name="text">
-        <string>Job type:</string>
-       </property>
-      </widget>
-     </widget>
-     <widget class="QGroupBox" name="group_execution">
-      <property name="enabled">
-       <bool>false</bool>
-      </property>
-      <property name="geometry">
-       <rect>
-        <x>0</x>
-        <y>305</y>
-        <width>431</width>
-        <height>231</height>
-       </rect>
-      </property>
-      <property name="title">
-       <string>Execution</string>
-      </property>
-      <property name="flat">
-       <bool>false</bool>
-      </property>
-      <widget class="QLineEdit" name="line_q">
-       <property name="geometry">
-        <rect>
-         <x>340</x>
-         <y>30</y>
-         <width>81</width>
-         <height>21</height>
-        </rect>
-       </property>
-       <property name="text">
-        <string/>
-       </property>
-       <property name="alignment">
-        <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
-       </property>
-      </widget>
-      <widget class="QLabel" name="label_2">
-       <property name="geometry">
-        <rect>
-         <x>260</x>
-         <y>25</y>
-         <width>71</width>
-         <height>21</height>
-        </rect>
-       </property>
-       <property name="text">
-        <string>Queue:</string>
+        <string>Mode:</string>
+       </property>
+       <property name="scaledContents">
+        <bool>false</bool>
        </property>
        <property name="alignment">
@@ -396,214 +582,11 @@
        </property>
       </widget>
-      <widget class="QLineEdit" name="line_pe">
-       <property name="geometry">
-        <rect>
-         <x>120</x>
-         <y>55</y>
-         <width>101</width>
-         <height>20</height>
-        </rect>
-       </property>
-       <property name="text">
-        <string/>
-       </property>
-      </widget>
-      <widget class="QLabel" name="label_3">
+      <widget class="QLabel" name="label_13">
        <property name="geometry">
         <rect>
          <x>0</x>
-         <y>55</y>
-         <width>111</width>
-         <height>16</height>
-        </rect>
-       </property>
-       <property name="text">
-        <string>Processing cores:</string>
-       </property>
-       <property name="alignment">
-        <set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
-       </property>
-      </widget>
-      <widget class="QLineEdit" name="line_tpn">
-       <property name="geometry">
-        <rect>
-         <x>340</x>
-         <y>55</y>
-         <width>61</width>
-         <height>21</height>
-        </rect>
-       </property>
-       <property name="text">
-        <string/>
-       </property>
-      </widget>
-      <widget class="QLabel" name="label_4">
-       <property name="geometry">
-        <rect>
-         <x>230</x>
-         <y>50</y>
-         <width>101</width>
-         <height>21</height>
-        </rect>
-       </property>
-       <property name="text">
-        <string>Tasks per node:</string>
-       </property>
-       <property name="alignment">
-        <set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
-       </property>
-      </widget>
-      <widget class="QLineEdit" name="line_account">
-       <property name="geometry">
-        <rect>
-         <x>340</x>
-         <y>80</y>
-         <width>81</width>
-         <height>20</height>
-        </rect>
-       </property>
-       <property name="text">
-        <string/>
-       </property>
-      </widget>
-      <widget class="QLabel" name="label_5">
-       <property name="geometry">
-        <rect>
-         <x>230</x>
-         <y>80</y>
-         <width>101</width>
-         <height>16</height>
-        </rect>
-       </property>
-       <property name="text">
-        <string>Project account:</string>
-       </property>
-       <property name="alignment">
-        <set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
-       </property>
-      </widget>
-      <widget class="QLabel" name="label_6">
-       <property name="geometry">
-        <rect>
-         <x>10</x>
-         <y>80</y>
-         <width>101</width>
-         <height>16</height>
-        </rect>
-       </property>
-       <property name="text">
-        <string>Wallclock time:</string>
-       </property>
-       <property name="alignment">
-        <set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
-       </property>
-      </widget>
-      <widget class="QLineEdit" name="line_time">
-       <property name="geometry">
-        <rect>
-         <x>120</x>
-         <y>80</y>
-         <width>101</width>
-         <height>20</height>
-        </rect>
-       </property>
-       <property name="text">
-        <string/>
-       </property>
-      </widget>
-      <widget class="QLabel" name="label_7">
-       <property name="geometry">
-        <rect>
-         <x>20</x>
-         <y>30</y>
+         <y>25</y>
          <width>91</width>
          <height>16</height>
-        </rect>
-       </property>
-       <property name="text">
-        <string>Configuration:</string>
-       </property>
-       <property name="scaledContents">
-        <bool>false</bool>
-       </property>
-       <property name="alignment">
-        <set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
-       </property>
-      </widget>
-      <widget class="QLineEdit" name="line_host">
-       <property name="geometry">
-        <rect>
-         <x>120</x>
-         <y>30</y>
-         <width>101</width>
-         <height>20</height>
-        </rect>
-       </property>
-       <property name="text">
-        <string/>
-       </property>
-      </widget>
-      <widget class="Line" name="line">
-       <property name="geometry">
-        <rect>
-         <x>10</x>
-         <y>105</y>
-         <width>431</width>
-         <height>20</height>
-        </rect>
-       </property>
-       <property name="orientation">
-        <enum>Qt::Horizontal</enum>
-       </property>
-      </widget>
-      <widget class="QCheckBox" name="check_restarts">
-       <property name="geometry">
-        <rect>
-         <x>10</x>
-         <y>120</y>
-         <width>121</width>
-         <height>23</height>
-        </rect>
-       </property>
-       <property name="text">
-        <string>Allow restarts</string>
-       </property>
-      </widget>
-      <widget class="QCheckBox" name="check_delete_tmp_files">
-       <property name="geometry">
-        <rect>
-         <x>10</x>
-         <y>140</y>
-         <width>281</width>
-         <height>23</height>
-        </rect>
-       </property>
-       <property name="text">
-        <string>Do not delete temporary directory at end</string>
-       </property>
-      </widget>
-      <widget class="QCheckBox" name="check_verbose">
-       <property name="geometry">
-        <rect>
-         <x>10</x>
-         <y>160</y>
-         <width>261</width>
-         <height>23</height>
-        </rect>
-       </property>
-       <property name="text">
-        <string>No prompt on confirmation (silent)</string>
-       </property>
-      </widget>
-      <widget class="QLabel" name="label_restart">
-       <property name="enabled">
-        <bool>false</bool>
-       </property>
-       <property name="geometry">
-        <rect>
-         <x>130</x>
-         <y>120</y>
-         <width>291</width>
-         <height>20</height>
         </rect>
        </property>
@@ -615,50 +598,335 @@
        </property>
        <property name="text">
-        <string/>
-       </property>
-      </widget>
-      <widget class="QCheckBox" name="check_cycfill">
-       <property name="geometry">
-        <rect>
-         <x>10</x>
+        <string>Selected job:</string>
+       </property>
+       <property name="scaledContents">
+        <bool>false</bool>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
+       </property>
+      </widget>
+      <widget class="QLabel" name="palm_logo">
+       <property name="geometry">
+        <rect>
+         <x>330</x>
          <y>180</y>
-         <width>261</width>
-         <height>21</height>
-        </rect>
-       </property>
-       <property name="text">
-        <string>Use cyclic fill method</string>
-       </property>
-      </widget>
-      <widget class="QCheckBox" name="check_svf">
-       <property name="geometry">
-        <rect>
-         <x>10</x>
-         <y>200</y>
-         <width>261</width>
-         <height>21</height>
-        </rect>
-       </property>
-       <property name="text">
-        <string>Read sky view factors from file</string>
+         <width>77</width>
+         <height>72</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>TextLabel</string>
+       </property>
+       <property name="scaledContents">
+        <bool>true</bool>
        </property>
       </widget>
      </widget>
-     <widget class="QLabel" name="palm_logo">
+     <widget class="QLabel" name="label_9">
       <property name="geometry">
        <rect>
-        <x>490</x>
-        <y>440</y>
-        <width>77</width>
-        <height>72</height>
+        <x>460</x>
+        <y>40</y>
+        <width>145</width>
+        <height>16</height>
        </rect>
       </property>
       <property name="text">
-       <string>TextLabel</string>
-      </property>
-      <property name="scaledContents">
+       <string>Browse at:</string>
+      </property>
+     </widget>
+     <widget class="QPushButton" name="push_create_set">
+      <property name="geometry">
+       <rect>
+        <x>560</x>
+        <y>630</y>
+        <width>131</width>
+        <height>24</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>Create set from job</string>
+      </property>
+     </widget>
+     <widget class="QPushButton" name="push_copy">
+      <property name="geometry">
+       <rect>
+        <x>460</x>
+        <y>630</y>
+        <width>91</width>
+        <height>24</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>Copy job</string>
+      </property>
+     </widget>
+     <widget class="QLineEdit" name="line_path">
+      <property name="enabled">
        <bool>true</bool>
       </property>
+      <property name="geometry">
+       <rect>
+        <x>530</x>
+        <y>35</y>
+        <width>351</width>
+        <height>23</height>
+       </rect>
+      </property>
+      <property name="readOnly">
+       <bool>true</bool>
+      </property>
      </widget>
+     <widget class="QGroupBox" name="group_browser">
+      <property name="geometry">
+       <rect>
+        <x>450</x>
+        <y>5</y>
+        <width>721</width>
+        <height>656</height>
+       </rect>
+      </property>
+      <property name="title">
+       <string>Browser</string>
+      </property>
+      <property name="alignment">
+       <set>Qt::AlignCenter</set>
+      </property>
+      <widget class="QListWidget" name="list_jobs">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>85</y>
+         <width>231</width>
+         <height>531</height>
+        </rect>
+       </property>
+       <property name="contextMenuPolicy">
+        <enum>Qt::NoContextMenu</enum>
+       </property>
+       <property name="alternatingRowColors">
+        <bool>true</bool>
+       </property>
+       <property name="sortingEnabled">
+        <bool>true</bool>
+       </property>
+      </widget>
+      <widget class="QListWidget" name="list_input">
+       <property name="geometry">
+        <rect>
+         <x>250</x>
+         <y>85</y>
+         <width>231</width>
+         <height>141</height>
+        </rect>
+       </property>
+       <property name="contextMenuPolicy">
+        <enum>Qt::CustomContextMenu</enum>
+       </property>
+       <property name="alternatingRowColors">
+        <bool>true</bool>
+       </property>
+       <property name="selectionMode">
+        <enum>QAbstractItemView::MultiSelection</enum>
+       </property>
+       <property name="sortingEnabled">
+        <bool>true</bool>
+       </property>
+      </widget>
+      <widget class="QListWidget" name="list_user">
+       <property name="geometry">
+        <rect>
+         <x>250</x>
+         <y>250</y>
+         <width>231</width>
+         <height>141</height>
+        </rect>
+       </property>
+       <property name="contextMenuPolicy">
+        <enum>Qt::CustomContextMenu</enum>
+       </property>
+       <property name="alternatingRowColors">
+        <bool>true</bool>
+       </property>
+       <property name="selectionMode">
+        <enum>QAbstractItemView::MultiSelection</enum>
+       </property>
+       <property name="sortingEnabled">
+        <bool>true</bool>
+       </property>
+      </widget>
+      <widget class="QLabel" name="label_11">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>65</y>
+         <width>121</width>
+         <height>16</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Available jobs:</string>
+       </property>
+      </widget>
+      <widget class="QLabel" name="label_10">
+       <property name="geometry">
+        <rect>
+         <x>250</x>
+         <y>65</y>
+         <width>74</width>
+         <height>16</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Input files:</string>
+       </property>
+      </widget>
+      <widget class="QLabel" name="label_12">
+       <property name="geometry">
+        <rect>
+         <x>250</x>
+         <y>230</y>
+         <width>156</width>
+         <height>16</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>User code:</string>
+       </property>
+      </widget>
+      <widget class="QPushButton" name="push_update">
+       <property name="geometry">
+        <rect>
+         <x>440</x>
+         <y>30</y>
+         <width>121</width>
+         <height>24</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Update</string>
+       </property>
+      </widget>
+      <widget class="QListWidget" name="list_output">
+       <property name="geometry">
+        <rect>
+         <x>490</x>
+         <y>85</y>
+         <width>221</width>
+         <height>566</height>
+        </rect>
+       </property>
+       <property name="contextMenuPolicy">
+        <enum>Qt::CustomContextMenu</enum>
+       </property>
+       <property name="alternatingRowColors">
+        <bool>true</bool>
+       </property>
+       <property name="selectionMode">
+        <enum>QAbstractItemView::MultiSelection</enum>
+       </property>
+       <property name="sortingEnabled">
+        <bool>true</bool>
+       </property>
+      </widget>
+      <widget class="QLabel" name="label_14">
+       <property name="geometry">
+        <rect>
+         <x>490</x>
+         <y>65</y>
+         <width>74</width>
+         <height>16</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Output files:</string>
+       </property>
+      </widget>
+      <widget class="QListWidget" name="list_monitoring">
+       <property name="geometry">
+        <rect>
+         <x>250</x>
+         <y>415</y>
+         <width>231</width>
+         <height>236</height>
+        </rect>
+       </property>
+       <property name="contextMenuPolicy">
+        <enum>Qt::CustomContextMenu</enum>
+       </property>
+       <property name="alternatingRowColors">
+        <bool>true</bool>
+       </property>
+       <property name="selectionMode">
+        <enum>QAbstractItemView::MultiSelection</enum>
+       </property>
+       <property name="sortingEnabled">
+        <bool>true</bool>
+       </property>
+      </widget>
+      <widget class="QLabel" name="label_15">
+       <property name="geometry">
+        <rect>
+         <x>250</x>
+         <y>395</y>
+         <width>156</width>
+         <height>16</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Monitoring files:</string>
+       </property>
+      </widget>
+     </widget>
+     <widget class="QGroupBox" name="group_history">
+      <property name="geometry">
+       <rect>
+        <x>10</x>
+        <y>5</y>
+        <width>431</width>
+        <height>381</height>
+       </rect>
+      </property>
+      <property name="title">
+       <string>History</string>
+      </property>
+      <property name="alignment">
+       <set>Qt::AlignCenter</set>
+      </property>
+      <widget class="QListWidget" name="list_jobname">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>50</y>
+         <width>411</width>
+         <height>321</height>
+        </rect>
+       </property>
+       <property name="alternatingRowColors">
+        <bool>true</bool>
+       </property>
+      </widget>
+      <widget class="QLabel" name="label">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>30</y>
+         <width>151</width>
+         <height>16</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Recently submitted jobs:</string>
+       </property>
+      </widget>
+     </widget>
+     <zorder>group_browser</zorder>
+     <zorder>group_execution</zorder>
+     <zorder>label_9</zorder>
+     <zorder>push_create_set</zorder>
+     <zorder>push_copy</zorder>
+     <zorder>line_path</zorder>
+     <zorder>group_history</zorder>
     </widget>
     <widget class="QWidget" name="tab_2">
@@ -672,7 +940,7 @@
       <property name="geometry">
        <rect>
-        <x>0</x>
+        <x>10</x>
         <y>5</y>
-        <width>501</width>
+        <width>511</width>
         <height>401</height>
        </rect>
@@ -680,4 +948,7 @@
       <property name="title">
        <string>Advanced settings</string>
+      </property>
+      <property name="alignment">
+       <set>Qt::AlignCenter</set>
       </property>
       <property name="flat">
@@ -967,5 +1238,5 @@
        <rect>
         <x>10</x>
-        <y>410</y>
+        <y>420</y>
         <width>401</width>
         <height>101</height>
@@ -973,5 +1244,8 @@
       </property>
       <property name="title">
-       <string/>
+       <string>Processor distribution</string>
+      </property>
+      <property name="alignment">
+       <set>Qt::AlignCenter</set>
       </property>
       <widget class="QLineEdit" name="line_PE_ocean">
@@ -1034,29 +1308,4 @@
        <property name="alignment">
         <set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
-       </property>
-      </widget>
-      <widget class="QLabel" name="label_coupled1">
-       <property name="geometry">
-        <rect>
-         <x>10</x>
-         <y>1</y>
-         <width>181</width>
-         <height>21</height>
-        </rect>
-       </property>
-       <property name="autoFillBackground">
-        <bool>false</bool>
-       </property>
-       <property name="text">
-        <string>Processor distribution</string>
-       </property>
-       <property name="scaledContents">
-        <bool>false</bool>
-       </property>
-       <property name="alignment">
-        <set>Qt::AlignBottom|Qt::AlignJustify</set>
-       </property>
-       <property name="wordWrap">
-        <bool>true</bool>
        </property>
       </widget>
@@ -1119,6 +1368,6 @@
      <x>0</x>
      <y>0</y>
-     <width>600</width>
-     <height>30</height>
+     <width>1185</width>
+     <height>19</height>
     </rect>
    </property>
@@ -1126,8 +1375,8 @@
     <property name="geometry">
      <rect>
-      <x>341</x>
-      <y>82</y>
-      <width>129</width>
-      <height>189</height>
+      <x>261</x>
+      <y>103</y>
+      <width>147</width>
+      <height>156</height>
      </rect>
     </property>
@@ -1157,5 +1406,4 @@
     </property>
     <addaction name="action_start_watchdog"/>
-    <addaction name="action_start_jobmanager"/>
    </widget>
    <addaction name="menuStart"/>
@@ -1235,5 +1483,4 @@
  <layoutdefault spacing="1" margin="11"/>
  <tabstops>
-  <tabstop>pushButton</tabstop>
   <tabstop>drop_job</tabstop>
   <tabstop>line_host</tabstop>
@@ -1279,5 +1526,5 @@
     <hint type="sourcelabel">
      <x>160</x>
-     <y>652</y>
+     <y>756</y>
     </hint>
     <hint type="destinationlabel">
@@ -1295,5 +1542,5 @@
     <hint type="sourcelabel">
      <x>73</x>
-     <y>652</y>
+     <y>756</y>
     </hint>
     <hint type="destinationlabel">
@@ -1310,6 +1557,6 @@
    <hints>
     <hint type="sourcelabel">
-     <x>226</x>
-     <y>361</y>
+     <x>238</x>
+     <y>406</y>
     </hint>
     <hint type="destinationlabel">
@@ -1320,16 +1567,656 @@
   </connection>
   <connection>
-   <sender>pushButton</sender>
+   <sender>drop_job</sender>
+   <signal>currentIndexChanged(QString)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>change_rc_list()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>276</x>
+     <y>406</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>334</x>
+     <y>356</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>check_restarts</sender>
+   <signal>stateChanged(int)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>change_rc_list()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>78</x>
+     <y>514</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1</x>
+     <y>530</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>check_delete_tmp_files</sender>
+   <signal>stateChanged(int)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>check_flags()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>82</x>
+     <y>534</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>3</x>
+     <y>562</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>check_verbose</sender>
+   <signal>stateChanged(int)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>check_flags()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>63</x>
+     <y>554</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>5</x>
+     <y>623</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>check_b</sender>
+   <signal>stateChanged(int)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>check_flags()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>434</x>
+     <y>134</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>599</x>
+     <y>67</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>check_F</sender>
+   <signal>stateChanged(int)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>check_flags()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>434</x>
+     <y>159</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>599</x>
+     <y>103</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>check_I</sender>
+   <signal>stateChanged(int)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>check_flags()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>454</x>
+     <y>184</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>599</x>
+     <y>129</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>check_k</sender>
+   <signal>stateChanged(int)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>check_flags()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>434</x>
+     <y>209</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>599</x>
+     <y>158</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>check_O</sender>
+   <signal>stateChanged(int)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>check_flags()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>434</x>
+     <y>234</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>599</x>
+     <y>188</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>check_x</sender>
+   <signal>stateChanged(int)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>check_flags()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>434</x>
+     <y>259</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>599</x>
+     <y>255</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>line_host</sender>
+   <signal>textEdited(QString)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>change_lineinput()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>169</x>
+     <y>421</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>26</x>
+     <y>362</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>line_pe</sender>
+   <signal>textEdited(QString)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>change_lineinput()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>166</x>
+     <y>446</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>5</x>
+     <y>440</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>line_time</sender>
+   <signal>textEdited(QString)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>change_lineinput()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>189</x>
+     <y>471</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>4</x>
+     <y>480</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>line_q</sender>
+   <signal>textEdited(QString)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>change_lineinput()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>398</x>
+     <y>422</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>507</x>
+     <y>387</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>line_account</sender>
+   <signal>textEdited(QString)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>change_lineinput()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>421</x>
+     <y>471</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>506</x>
+     <y>416</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>line_tpn</sender>
+   <signal>textEdited(QString)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>change_lineinput()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>396</x>
+     <y>447</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>505</x>
+     <y>447</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>line_m</sender>
+   <signal>textEdited(QString)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>change_lineinput()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>304</x>
+     <y>331</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>599</x>
+     <y>328</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>line_D</sender>
+   <signal>textEdited(QString)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>change_lineinput()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>414</x>
+     <y>381</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>599</x>
+     <y>396</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>line_s</sender>
+   <signal>textEdited(QString)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>change_lineinput()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>414</x>
+     <y>406</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>599</x>
+     <y>522</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>line_w</sender>
+   <signal>textEdited(QString)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>change_lineinput()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>414</x>
+     <y>431</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>599</x>
+     <y>612</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>line_user</sender>
+   <signal>textChanged(QString)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>change_lineinput()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>414</x>
+     <y>456</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>599</x>
+     <y>650</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>button_clear</sender>
    <signal>clicked()</signal>
    <receiver>MainWindow</receiver>
-   <slot>choosejob()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>57</x>
-     <y>120</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>535</x>
-     <y>0</y>
+   <slot>reset_window()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>299</x>
+     <y>756</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>599</x>
+     <y>689</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>line_M</sender>
+   <signal>textChanged(QString)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>change_lineinput()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>414</x>
+     <y>356</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>599</x>
+     <y>287</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>action_quit</sender>
+   <signal>triggered()</signal>
+   <receiver>MainWindow</receiver>
+   <slot>close()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>-1</x>
+     <y>-1</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>479</x>
+     <y>366</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>action_save</sender>
+   <signal>triggered()</signal>
+   <receiver>MainWindow</receiver>
+   <slot>save_to_file()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>-1</x>
+     <y>-1</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>479</x>
+     <y>366</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>action_last</sender>
+   <signal>triggered()</signal>
+   <receiver>MainWindow</receiver>
+   <slot>open_last()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>-1</x>
+     <y>-1</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>479</x>
+     <y>366</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>action_open</sender>
+   <signal>triggered()</signal>
+   <receiver>MainWindow</receiver>
+   <slot>open_from_file()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>-1</x>
+     <y>-1</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>479</x>
+     <y>366</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>action_help</sender>
+   <signal>triggered()</signal>
+   <receiver>MainWindow</receiver>
+   <slot>help()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>-1</x>
+     <y>-1</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>479</x>
+     <y>366</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>action_about</sender>
+   <signal>triggered()</signal>
+   <receiver>MainWindow</receiver>
+   <slot>about_gui()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>-1</x>
+     <y>-1</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>479</x>
+     <y>366</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>action_default</sender>
+   <signal>triggered()</signal>
+   <receiver>MainWindow</receiver>
+   <slot>save_default()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>-1</x>
+     <y>-1</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>479</x>
+     <y>366</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>line_jobname</sender>
+   <signal>textChanged(QString)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>change_lineinput()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>181</x>
+     <y>352</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>4</x>
+     <y>122</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>check_Z</sender>
+   <signal>stateChanged(int)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>check_flags()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>434</x>
+     <y>284</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>458</x>
+     <y>344</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>check_cycfill</sender>
+   <signal>stateChanged(int)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>change_rc_list()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>272</x>
+     <y>572</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>4</x>
+     <y>510</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>action_start_watchdog</sender>
+   <signal>triggered()</signal>
+   <receiver>MainWindow</receiver>
+   <slot>start_watchdog()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>-1</x>
+     <y>-1</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>458</x>
+     <y>344</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>check_svf</sender>
+   <signal>stateChanged(int)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>change_rc_list()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>174</x>
+     <y>592</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>596</x>
+     <y>494</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>push_update</sender>
+   <signal>clicked()</signal>
+   <receiver>MainWindow</receiver>
+   <slot>update_all()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>982</x>
+     <y>115</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>798</x>
+     <y>44</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>push_create_set</sender>
+   <signal>clicked()</signal>
+   <receiver>MainWindow</receiver>
+   <slot>create_set()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>762</x>
+     <y>687</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>863</x>
+     <y>634</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>push_copy</sender>
+   <signal>clicked()</signal>
+   <receiver>MainWindow</receiver>
+   <slot>copy_job()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>622</x>
+     <y>687</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>985</x>
+     <y>650</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>list_user</sender>
+   <signal>customContextMenuRequested(QPoint)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>openmenuuser()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>962</x>
+     <y>412</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1110</x>
+     <y>642</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>list_jobs</sender>
+   <signal>itemActivated(QListWidgetItem*)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>update_input()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>681</x>
+     <y>318</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>918</x>
+     <y>667</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>list_input</sender>
+   <signal>customContextMenuRequested(QPoint)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>openmenuinput()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>850</x>
+     <y>256</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1072</x>
+     <y>657</y>
     </hint>
    </hints>
@@ -1352,576 +2239,32 @@
   </connection>
   <connection>
-   <sender>drop_job</sender>
-   <signal>currentIndexChanged(QString)</signal>
-   <receiver>MainWindow</receiver>
-   <slot>change_rc_list()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>264</x>
-     <y>361</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>334</x>
-     <y>356</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>check_restarts</sender>
-   <signal>stateChanged(int)</signal>
-   <receiver>MainWindow</receiver>
-   <slot>change_rc_list()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>76</x>
-     <y>527</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>1</x>
-     <y>530</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>check_delete_tmp_files</sender>
-   <signal>stateChanged(int)</signal>
-   <receiver>MainWindow</receiver>
-   <slot>check_flags()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>80</x>
-     <y>547</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>3</x>
-     <y>562</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>check_verbose</sender>
-   <signal>stateChanged(int)</signal>
-   <receiver>MainWindow</receiver>
-   <slot>check_flags()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>61</x>
-     <y>567</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>5</x>
-     <y>623</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>check_b</sender>
-   <signal>stateChanged(int)</signal>
-   <receiver>MainWindow</receiver>
-   <slot>check_flags()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>434</x>
-     <y>139</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>599</x>
-     <y>67</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>check_F</sender>
-   <signal>stateChanged(int)</signal>
-   <receiver>MainWindow</receiver>
-   <slot>check_flags()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>434</x>
-     <y>164</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>599</x>
-     <y>103</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>check_I</sender>
-   <signal>stateChanged(int)</signal>
-   <receiver>MainWindow</receiver>
-   <slot>check_flags()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>454</x>
-     <y>189</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>599</x>
-     <y>129</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>check_k</sender>
-   <signal>stateChanged(int)</signal>
-   <receiver>MainWindow</receiver>
-   <slot>check_flags()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>434</x>
-     <y>214</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>599</x>
-     <y>158</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>check_O</sender>
-   <signal>stateChanged(int)</signal>
-   <receiver>MainWindow</receiver>
-   <slot>check_flags()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>434</x>
-     <y>239</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>599</x>
-     <y>188</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>check_x</sender>
-   <signal>stateChanged(int)</signal>
-   <receiver>MainWindow</receiver>
-   <slot>check_flags()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>434</x>
-     <y>282</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>599</x>
-     <y>255</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>line_host</sender>
-   <signal>textEdited(QString)</signal>
-   <receiver>MainWindow</receiver>
-   <slot>change_lineinput()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>127</x>
-     <y>434</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>26</x>
-     <y>362</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>line_pe</sender>
-   <signal>textEdited(QString)</signal>
-   <receiver>MainWindow</receiver>
-   <slot>change_lineinput()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>124</x>
-     <y>459</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>5</x>
-     <y>440</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>line_time</sender>
-   <signal>textEdited(QString)</signal>
-   <receiver>MainWindow</receiver>
-   <slot>change_lineinput()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>187</x>
-     <y>484</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>4</x>
-     <y>480</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>line_q</sender>
-   <signal>textEdited(QString)</signal>
-   <receiver>MainWindow</receiver>
-   <slot>change_lineinput()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>346</x>
-     <y>435</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>507</x>
-     <y>387</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>line_account</sender>
-   <signal>textEdited(QString)</signal>
-   <receiver>MainWindow</receiver>
-   <slot>change_lineinput()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>369</x>
-     <y>484</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>506</x>
-     <y>416</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>line_tpn</sender>
-   <signal>textEdited(QString)</signal>
-   <receiver>MainWindow</receiver>
-   <slot>change_lineinput()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>344</x>
-     <y>460</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>505</x>
-     <y>447</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>line_m</sender>
-   <signal>textEdited(QString)</signal>
-   <receiver>MainWindow</receiver>
-   <slot>change_lineinput()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>304</x>
-     <y>330</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>599</x>
-     <y>328</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>line_D</sender>
-   <signal>textEdited(QString)</signal>
-   <receiver>MainWindow</receiver>
-   <slot>change_lineinput()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>414</x>
-     <y>380</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>599</x>
-     <y>396</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>line_s</sender>
-   <signal>textEdited(QString)</signal>
-   <receiver>MainWindow</receiver>
-   <slot>change_lineinput()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>414</x>
-     <y>405</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>599</x>
-     <y>522</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>line_w</sender>
-   <signal>textEdited(QString)</signal>
-   <receiver>MainWindow</receiver>
-   <slot>change_lineinput()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>414</x>
-     <y>446</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>599</x>
-     <y>612</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>line_user</sender>
-   <signal>textChanged(QString)</signal>
-   <receiver>MainWindow</receiver>
-   <slot>change_lineinput()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>414</x>
-     <y>479</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>599</x>
-     <y>650</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>button_clear</sender>
-   <signal>clicked()</signal>
-   <receiver>MainWindow</receiver>
-   <slot>reset_window()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>299</x>
-     <y>654</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>599</x>
-     <y>689</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>line_M</sender>
-   <signal>textChanged(QString)</signal>
-   <receiver>MainWindow</receiver>
-   <slot>change_lineinput()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>414</x>
-     <y>355</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>599</x>
-     <y>287</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>action_quit</sender>
-   <signal>triggered()</signal>
-   <receiver>MainWindow</receiver>
-   <slot>close()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>-1</x>
-     <y>-1</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>479</x>
-     <y>366</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>action_save</sender>
-   <signal>triggered()</signal>
-   <receiver>MainWindow</receiver>
-   <slot>save_to_file()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>-1</x>
-     <y>-1</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>479</x>
-     <y>366</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>action_last</sender>
-   <signal>triggered()</signal>
-   <receiver>MainWindow</receiver>
-   <slot>open_last()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>-1</x>
-     <y>-1</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>479</x>
-     <y>366</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>action_open</sender>
-   <signal>triggered()</signal>
-   <receiver>MainWindow</receiver>
-   <slot>open_from_file()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>-1</x>
-     <y>-1</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>479</x>
-     <y>366</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>action_help</sender>
-   <signal>triggered()</signal>
-   <receiver>MainWindow</receiver>
-   <slot>help()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>-1</x>
-     <y>-1</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>479</x>
-     <y>366</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>action_about</sender>
-   <signal>triggered()</signal>
-   <receiver>MainWindow</receiver>
-   <slot>about_gui()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>-1</x>
-     <y>-1</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>479</x>
-     <y>366</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>action_default</sender>
-   <signal>triggered()</signal>
-   <receiver>MainWindow</receiver>
-   <slot>save_default()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>-1</x>
-     <y>-1</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>479</x>
-     <y>366</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>line_jobname</sender>
-   <signal>textChanged(QString)</signal>
-   <receiver>MainWindow</receiver>
-   <slot>change_lineinput()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>179</x>
-     <y>121</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>4</x>
-     <y>122</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>check_Z</sender>
-   <signal>stateChanged(int)</signal>
-   <receiver>MainWindow</receiver>
-   <slot>check_flags()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>434</x>
-     <y>307</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>458</x>
-     <y>344</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>check_cycfill</sender>
-   <signal>stateChanged(int)</signal>
-   <receiver>MainWindow</receiver>
-   <slot>change_rc_list()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>274</x>
-     <y>585</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>4</x>
-     <y>510</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>action_start_jobmanager</sender>
-   <signal>triggered()</signal>
-   <receiver>MainWindow</receiver>
-   <slot>start_jobmanager()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>-1</x>
-     <y>-1</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>458</x>
-     <y>344</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>action_start_watchdog</sender>
-   <signal>triggered()</signal>
-   <receiver>MainWindow</receiver>
-   <slot>start_watchdog()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>-1</x>
-     <y>-1</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>458</x>
-     <y>344</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>check_svf</sender>
-   <signal>stateChanged(int)</signal>
-   <receiver>MainWindow</receiver>
-   <slot>change_rc_list()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>172</x>
-     <y>593</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>596</x>
-     <y>494</y>
+   <sender>list_output</sender>
+   <signal>customContextMenuRequested(QPoint)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>openmenuoutput()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>1035</x>
+     <y>570</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1183</x>
+     <y>692</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>list_monitoring</sender>
+   <signal>customContextMenuRequested(QPoint)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>openmenumonitoring()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>891</x>
+     <y>534</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1182</x>
+     <y>495</y>
     </hint>
    </hints>
@@ -1947,4 +2290,12 @@
   <slot>start_watchdog()</slot>
   <slot>start_jobmanager()</slot>
+  <slot>update_all()</slot>
+  <slot>create_set()</slot>
+  <slot>copy_job()</slot>
+  <slot>openmenuuser()</slot>
+  <slot>update_input()</slot>
+  <slot>openmenuinput()</slot>
+  <slot>openmenuoutput()</slot>
+  <slot>openmenumonitoring()</slot>
  </slots>
 </ui>
