diff --git a/scripts/Interface/compile_sans_ui.py b/scripts/Interface/compile_sans_ui.py index 557c84c86f659f8a156fdbc9e7b9b25921f80ced..45b09da88a0b5a7bded37fb1ce8e241997cf3bf7 100644 --- a/scripts/Interface/compile_sans_ui.py +++ b/scripts/Interface/compile_sans_ui.py @@ -19,7 +19,6 @@ try: os.system("pyuic4 -o ui/sans/ui_eqsans_info.py ui/sans/eqsans_info.ui") os.system("pyuic4 -o ui/ui_cluster_status.py ui/cluster_status.ui") - os.system("pyuic4 -o ui/ui_cluster_details_dialog.py ui/cluster_details_dialog.ui") os.system("pyuic4 -o ui/ui_reduction_main.py ui/reduction_main.ui") os.system("pyuic4 -o ui/ui_hfir_output.py ui/hfir_output.ui") os.system("pyuic4 -o ui/ui_trans_direct_beam.py ui/trans_direct_beam.ui") diff --git a/scripts/Interface/reduction_application.py b/scripts/Interface/reduction_application.py index ed5b8c44be8dcb1b90c5934f9e2bda75517a4945..e6d7041da7f6711b9b9fcd31d19efebc16499010 100644 --- a/scripts/Interface/reduction_application.py +++ b/scripts/Interface/reduction_application.py @@ -14,8 +14,6 @@ try: import mantidplot # noqa IS_IN_MANTIDPLOT = True from mantid.kernel import ConfigService - from mantid.api import AlgorithmFactory - CLUSTER_ENABLED = "SubmitRemoteJob" in AlgorithmFactory.getRegisteredAlgorithms(True) except: import sip sip.setapi('QString',2) @@ -45,11 +43,10 @@ if IS_IN_MANTIDPLOT: WARNING_MESSAGE = "Please contact the Mantid team with the following message:\n\n\n" WARNING_MESSAGE += unicode(traceback.format_exc()) -from reduction_gui.instruments.instrument_factory import instrument_factory, INSTRUMENT_DICT # noqa -from reduction_gui.settings.application_settings import GeneralSettings # noqa -import ui.ui_reduction_main # noqa -import ui.ui_instrument_dialog # noqa -import ui.ui_cluster_details_dialog # noqa +from reduction_gui.instruments.instrument_factory import instrument_factory, INSTRUMENT_DICT # noqa +from reduction_gui.settings.application_settings import GeneralSettings # noqa +import ui.ui_reduction_main # noqa +import ui.ui_instrument_dialog # noqa class ReductionGUI(QtGui.QMainWindow, ui.ui_reduction_main.Ui_SANSReduction): @@ -111,7 +108,6 @@ class ReductionGUI(QtGui.QMainWindow, ui.ui_reduction_main.Ui_SANSReduction): # Event connections if not IS_IN_MANTIDPLOT: self.reduce_button.hide() - self.cluster_button.hide() self.connect(self.export_button, QtCore.SIGNAL("clicked()"), self._export) self.connect(self.reduce_button, QtCore.SIGNAL("clicked()"), self.reduce_clicked) self.connect(self.save_button, QtCore.SIGNAL("clicked()"), self._save) @@ -182,17 +178,6 @@ class ReductionGUI(QtGui.QMainWindow, ui.ui_reduction_main.Ui_SANSReduction): else: self.interface_chk.hide() - # Show the parallel reduction button if enabled - if self._interface.is_cluster_enabled() and IS_IN_MANTIDPLOT \ - and CLUSTER_ENABLED: - config = ConfigService.Instance() - if config.hasProperty("cluster.submission") \ - and config.getString("cluster.submission").lower()=='on': - self.cluster_button.show() - self.connect(self.cluster_button, QtCore.SIGNAL("clicked()"), self.cluster_clicked) - else: - self.cluster_button.hide() - if load_last: self._interface.load_last_reduction() else: @@ -267,14 +252,6 @@ class ReductionGUI(QtGui.QMainWindow, ui.ui_reduction_main.Ui_SANSReduction): self.tools_menu.addAction(instrAction) self.tools_menu.addAction(debugAction) - # Cluster submission details - if IS_IN_MANTIDPLOT and CLUSTER_ENABLED: - jobAction = QtGui.QAction("Remote submission details", self) - jobAction.setShortcut("Ctrl+R") - jobAction.setStatusTip("Set the cluster information for remote job submission") - self.connect(jobAction, QtCore.SIGNAL("triggered()"), self._cluster_details_dialog) - self.tools_menu.addAction(jobAction) - recent_files = [] for fname in self._recent_files: if fname != self._filename and QtCore.QFile.exists(fname) and fname not in recent_files: @@ -347,40 +324,6 @@ class ReductionGUI(QtGui.QMainWindow, ui.ui_reduction_main.Ui_SANSReduction): self.close() return False - def _cluster_details_dialog(self): - """ - Show dialog to get cluster submission details - """ - class ClusterDialog(QtGui.QDialog, ui.ui_cluster_details_dialog.Ui_Dialog): - def __init__(self, compute_resources=None): - QtGui.QDialog.__init__(self) - self.setupUi(self) - self.resource_combo.clear() - for res in compute_resources: - self.resource_combo.addItem(QtGui.QApplication.translate("Dialog", res, None, QtGui.QApplication.UnicodeUTF8)) - - # Fill out the defaults - dialog = ClusterDialog(self._compute_resources) - if self.general_settings.cluster_user is not None: - dialog.username_edit.setText(str(self.general_settings.cluster_user)) - dialog.pass_edit.setText(str(self.general_settings.cluster_pass)) - - dialog.nodes_box.setValue(int(self._number_of_nodes)) - dialog.cores_box.setValue(int(self._cores_per_node)) - for i in range(dialog.resource_combo.count()): - if dialog.resource_combo.itemText(i)==self.general_settings.compute_resource: - dialog.resource_combo.setCurrentIndex(i) - break - - dialog.exec_() - if dialog.result()==1: - self.general_settings.cluster_user = str(dialog.username_edit.text()) - self.general_settings.cluster_pass = str(dialog.pass_edit.text()) - self._cluster_details_set = True - self._number_of_nodes = int(dialog.nodes_box.value()) - self._cores_per_node = int(dialog.cores_box.value()) - self.general_settings.compute_resource = dialog.resource_combo.currentText() - def _clear_and_close(self): """ Clear all QSettings parameters diff --git a/scripts/Interface/reduction_gui/instruments/dgs_interface_dev.py b/scripts/Interface/reduction_gui/instruments/dgs_interface_dev.py index 6ae1574ab49567d634bf18881bcacda304713788..40bb05a93cfeb5d7dc7c198e23d289686705ba0b 100644 --- a/scripts/Interface/reduction_gui/instruments/dgs_interface_dev.py +++ b/scripts/Interface/reduction_gui/instruments/dgs_interface_dev.py @@ -4,7 +4,6 @@ from reduction_gui.widgets.inelastic.dgs_sample_setup import SampleSetupWidget from reduction_gui.widgets.inelastic.dgs_data_corrections import DataCorrectionsWidget from reduction_gui.widgets.inelastic.dgs_diagnose_detectors import DiagnoseDetectorsWidget from reduction_gui.widgets.inelastic.dgs_absolute_units import AbsoluteUnitsWidget -from reduction_gui.widgets.cluster_status import RemoteJobsWidget from reduction_gui.reduction.inelastic.dgs_reduction_script import DgsReductionScripter @@ -39,16 +38,4 @@ class DgsInterface(InstrumentInterface): self.attach(AbsoluteUnitsWidget(settings = self._settings, data_type = self.data_type)) - # Powder and Single Crystal conversion - #self.attach(PdAndScConversionWidget(settings = self._settings, - # data_type = self.data_type)) - - # Remote jobs status - if self.remote_resources_available(): - self.attach(RemoteJobsWidget(settings = self._settings)) - - def is_cluster_enabled(self): - """ - Returns true if the instrument is compatible with remote submission - """ - return True + return diff --git a/scripts/Interface/reduction_gui/instruments/diffraction_interface_dev.py b/scripts/Interface/reduction_gui/instruments/diffraction_interface_dev.py index 221d2373c7a3f8382514c26c9b76ab00174365a3..7494f87eabac1899ba6fbf2311f4c9d129a7a94c 100644 --- a/scripts/Interface/reduction_gui/instruments/diffraction_interface_dev.py +++ b/scripts/Interface/reduction_gui/instruments/diffraction_interface_dev.py @@ -3,7 +3,6 @@ from reduction_gui.instruments.interface import InstrumentInterface from reduction_gui.widgets.diffraction.diffraction_run_setup import RunSetupWidget from reduction_gui.widgets.diffraction.diffraction_adv_setup import AdvancedSetupWidget from reduction_gui.widgets.diffraction.diffraction_filter_setup import FilterSetupWidget -from reduction_gui.widgets.cluster_status import RemoteJobsWidget from reduction_gui.reduction.diffraction.diffraction_reduction_script import DiffractionReductionScripter @@ -34,13 +33,4 @@ class DiffractionInterface(InstrumentInterface): # Tab 3: Event filters setup self.attach(FilterSetupWidget(settings = self._settings, data_type = self.data_type)) - # Remote jobs status - if self.remote_resources_available(): - self.attach(RemoteJobsWidget(settings = self._settings)) return - - def is_cluster_enabled(self): - """ - Returns true if the instrument is compatible with remote submission - """ - return True diff --git a/scripts/Interface/reduction_gui/instruments/eqsans_interface_dev.py b/scripts/Interface/reduction_gui/instruments/eqsans_interface_dev.py index 98c163dde5373ee0a02bd3497f95062d0330c0ad..a903265f71161fdc6f250dfcc00c0faf4e383058 100644 --- a/scripts/Interface/reduction_gui/instruments/eqsans_interface_dev.py +++ b/scripts/Interface/reduction_gui/instruments/eqsans_interface_dev.py @@ -16,7 +16,6 @@ from reduction_gui.widgets.sans.sans_catalog import SANSCatalogWidget from reduction_gui.reduction.sans.eqsans_catalog import DataCatalog from reduction_gui.reduction.sans.eqsans_data_proxy import DataProxy -from reduction_gui.widgets.cluster_status import RemoteJobsWidget IS_IN_MANTIDPLOT = False try: @@ -64,20 +63,10 @@ class EQSANSInterface(InstrumentInterface): # Reduction output self.attach(OutputWidget(settings = self._settings)) - # Tabs that only make sense within MantidPlot - if IS_IN_MANTIDPLOT: - # Remote jobs status - if self.remote_resources_available(): - self.attach(RemoteJobsWidget(settings = self._settings)) + return def has_advanced_version(self): """ Returns true if the instrument has simple and advanced views """ return False - - def is_cluster_enabled(self): - """ - Returns true if the instrument is compatible with remote submission - """ - return True diff --git a/scripts/Interface/reduction_gui/instruments/interface.py b/scripts/Interface/reduction_gui/instruments/interface.py index aed97587986a091fdec3f2f062d52055d79a1e0b..f8137fa5652e4f2c56ca77e3da7c7b25b2e8a144 100644 --- a/scripts/Interface/reduction_gui/instruments/interface.py +++ b/scripts/Interface/reduction_gui/instruments/interface.py @@ -271,12 +271,6 @@ class InstrumentInterface(object): """ return False - def is_cluster_enabled(self): - """ - Returns true if the instrument is compatible with remote submission - """ - return False - def is_live_enabled(self): """ Returns true if the instrument interface includes a live data button diff --git a/scripts/Interface/reduction_gui/widgets/cluster_status.py b/scripts/Interface/reduction_gui/widgets/cluster_status.py deleted file mode 100644 index bd0777c0ba425b63332c5dd42c2bddaf9a3603f2..0000000000000000000000000000000000000000 --- a/scripts/Interface/reduction_gui/widgets/cluster_status.py +++ /dev/null @@ -1,273 +0,0 @@ -#pylint: disable=invalid-name -from __future__ import (absolute_import, division, print_function) -from PyQt4 import QtGui, QtCore -import sys -from functools import partial -from reduction_gui.settings.application_settings import GeneralSettings -from reduction_gui.widgets.base_widget import BaseWidget -from reduction_gui.widgets import util -import ui.ui_cluster_status - -from mantid.kernel import ConfigService, DateAndTime, Logger -from mantid.api import AlgorithmManager - -from reduction_gui.reduction.scripter import BaseScriptElement - - -class RemoteJobs(BaseScriptElement): - def __init__(self): - pass - - -class RemoteJobsWidget(BaseWidget): - """ - Widget that presents a list of remote jobs for the user - """ - ## Widget name - name = "Remote Jobs" - - copyAction = None - - def __init__(self, parent=None, state=None, settings=None): - super(RemoteJobsWidget, self).__init__(parent, state, settings) - - class DataFrame(QtGui.QFrame, ui.ui_cluster_status.Ui_Frame): - def __init__(self, parent=None): - QtGui.QFrame.__init__(self, parent) - self.setupUi(self) - - self._content = DataFrame(self) - self.initialize_content() - self._layout.addWidget(self._content) - - # General GUI settings - if settings is None: - settings = GeneralSettings() - self._settings = settings - - def initialize_content(self): - # Add functionality to copy and paste - self.copyAction = QtGui.QAction("Copy", self) - self.copyAction.setShortcut("Ctrl+C") - self.addAction(self.copyAction) - self.connect(self.copyAction, QtCore.SIGNAL("triggered()"), self.copyCells) - self._content.job_table.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) - self.connect(self._content.job_table, QtCore.SIGNAL("customContextMenuRequested(QPoint)"), self.tableWidgetContext) - - self.connect(self._content.refresh_button, QtCore.SIGNAL("clicked()"), self._update_content) - - # Set the time of the oldest displayed job to 2 days ago - self._content.date_time_edit.setDateTime(QtCore.QDateTime().currentDateTime().addDays(-2)) - - compute_resources = ConfigService.Instance().getFacility().computeResources() - self._content.resource_combo.clear() - for res in compute_resources: - self._content.resource_combo.addItem(QtGui.QApplication.translate("Dialog", res, None, QtGui.QApplication.UnicodeUTF8)) - - self._clear_table() - - def tableWidgetContext(self, point): - '''Create a menu for the tableWidget and associated actions''' - tw_menu = QtGui.QMenu("Menu", self) - tw_menu.addAction(self.copyAction) - tw_menu.exec_(self.mapToGlobal(point)) - - def copyCells(self): - indices = self._content.job_table.selectedIndexes() - if len(indices)==0: - return - - col_count = self._content.job_table.columnCount() - rows = [] - for r in indices: - if r.row() not in rows: - rows.append(r.row()) - - selected_text = "" - for row in rows: - for i in range(col_count): - data = self._content.job_table.item(row,i) - if data is not None: - selected_text += str(data.text()) - if i<col_count-1: - selected_text += '\t' - selected_text += '\n' - - QtGui.QApplication.clipboard().setText(selected_text) - - def paintEvent(self, event): - """ - Catch the paint events and update the credential info. - """ - super(RemoteJobsWidget, self).paintEvent(event) - self._fill_in_defaults() - - def _fill_in_defaults(self): - """ - Fill in the credentials boxes if we have the information - """ - if self._settings.compute_resource is not None: - for i in range(self._content.resource_combo.count()): - if self._content.resource_combo.itemText(i)==self._settings.compute_resource: - self._content.resource_combo.setCurrentIndex(i) - break - - if self._settings.cluster_user is not None \ - and self._settings.cluster_pass is not None: - self._content.username_edit.setText(self._settings.cluster_user) - self._content.password_edit.setText(self._settings.cluster_pass) - - def _clear_table(self): - """ - Clear the job table and set the headers - """ - self._content.job_table.clear() - headers = ["Job ID", "Title", "Status", "Start", "End", "Action"] - self._content.job_table.setColumnCount(len(headers)) - self._content.job_table.setHorizontalHeaderLabels(headers) - # Stretch the columns evenly - h = self._content.job_table.horizontalHeader() - h.setStretchLastSection(True) - h.setResizeMode(1) - - def _update_content(self): - """ - Get the job status from the compute resource and - update the job table content. - """ - self._fill_in_defaults() - - user = str(self._content.username_edit.text()) - pwd = str(self._content.password_edit.text()) - if len(user)==0 or len(pwd)==0: - util.set_valid(self._content.username_edit, False) - util.set_valid(self._content.password_edit, False) - return - else: - self._settings.cluster_user = user - self._settings.cluster_pass = pwd - util.set_valid(self._content.username_edit, True) - util.set_valid(self._content.password_edit, True) - # Note: here and in the following create() calls. Version 1 of - # the remote algorithms is guaranteed to work at SNS. Version - # 2 generalizes the remote algorithms (see tickets #9277 and - # #11126). While the v2 implementation for the remote job - # submission API has been refactored without changes, it would - # need to be tested before upgrading v1->v2 in this script. - alg = AlgorithmManager.create("Authenticate", 1) - alg.initialize() - alg.setProperty("ComputeResource", str(self._settings.compute_resource)) - alg.setProperty("UserName", str(self._settings.cluster_user)) - alg.setProperty("Password", str(self._settings.cluster_pass)) - alg.execute() - - alg = AlgorithmManager.create("QueryAllRemoteJobs", 1) - alg.initialize() - alg.setProperty("ComputeResource", str(self._settings.compute_resource)) - alg.execute() - job_id = alg.getProperty("JobId").value - job_status = alg.getProperty("JobStatusString").value - job_name = alg.getProperty("JobName").value - job_trans_id = alg.getProperty("TransID").value - - job_start = alg.getProperty("StartDate").value - job_end = alg.getProperty("CompletionDate").value - - job_list = zip(*(job_id, job_status, job_name, job_start, job_end, job_trans_id)) - - self._clear_table() - self._content.job_table.setSortingEnabled(False) - self._content.job_table.setRowCount(len(job_list)) - unavailable = DateAndTime(0) - unavailable.setToMinimum() - - for i in range(len(job_list)): - # Make sure that only recent jobs are displayed - oldest = DateAndTime(str(self._content.date_time_edit.dateTime().toString(QtCore.Qt.ISODate))) - end_time = job_list[i][4] - if end_time == '': - job_end = unavailable - else: - job_end = DateAndTime(end_time) - if job_end>unavailable and job_end<oldest: - self._content.job_table.setRowHidden(i, True) - continue - self._content.job_table.setRowHidden(i, False) - - # Job ID - item = QtGui.QTableWidgetItem(str(job_list[i][0])) - item.setFlags(QtCore.Qt.ItemIsSelectable |QtCore.Qt.ItemIsEnabled ) - self._content.job_table.setItem(i, 0, item) - job_id = str(job_list[i][0]) - - # Title - item = QtGui.QTableWidgetItem(str(job_list[i][2])) - item.setFlags(QtCore.Qt.ItemIsSelectable |QtCore.Qt.ItemIsEnabled ) - self._content.job_table.setItem(i, 1, item) - - # Status - item = QtGui.QTableWidgetItem(str(job_list[i][1])) - item.setFlags(QtCore.Qt.ItemIsSelectable |QtCore.Qt.ItemIsEnabled ) - self._content.job_table.setItem(i, 2, item) - is_running = str(job_list[i][1]).lower()=='running' - - # Start time - time_displayed = str(job_list[i][3]).replace('T', ' ') - if DateAndTime(job_list[i][3]) == unavailable: - time_displayed = '' - item = QtGui.QTableWidgetItem(time_displayed) - item.setFlags(QtCore.Qt.ItemIsSelectable |QtCore.Qt.ItemIsEnabled ) - self._content.job_table.setItem(i, 3, item) - - # Completion time - time_displayed = end_time.replace('T', ' ') - if job_end == unavailable: - time_displayed = '' - item = QtGui.QTableWidgetItem(time_displayed) - item.setFlags(QtCore.Qt.ItemIsSelectable |QtCore.Qt.ItemIsEnabled ) - self._content.job_table.setItem(i, 4, item) - - # create an cell widget - btn = QtGui.QPushButton(self._content.job_table) - if is_running: - btn.setText('Abort') - btn.setToolTip('Cleanly abort this job') - else: - btn.setText('Remove') - btn.setToolTip('Remove this job and its temporary files') - call_back = partial(self._remove_job, is_running=is_running, job_id=job_id, trans_id=job_list[i][5]) - self.connect(btn, QtCore.SIGNAL("clicked()"), call_back) - self._content.job_table.setCellWidget(i, 5, btn) - - self._content.job_table.setSortingEnabled(True) - self._content.job_table.sortItems(3, 1) - - def _remove_job(self, trans_id, job_id=None, is_running=False): - """ - Abort job and/or stop transaction - @param trans_id: remote transaction ID - @param job_id: remote job ID - @param is_running: True if the job is currently running - """ - if is_running: - try: - # At this point we are authenticated so just purge - alg = AlgorithmManager.create("AbortRemoteJob", 1) - alg.initialize() - alg.setProperty("ComputeResource", str(self._settings.compute_resource)) - alg.setProperty("JobID", job_id) - alg.execute() - except: - Logger("cluster_status").error("Problem aborting job: %s" % sys.exc_info()[1]) - try: - alg = AlgorithmManager.create("StopRemoteTransaction", 1) - alg.initialize() - alg.setProperty("ComputeResource", str(self._settings.compute_resource)) - alg.setProperty("TransactionID", trans_id) - alg.execute() - except: - Logger("cluster_status").error("Project stopping remote transaction: %s" % sys.exc_info()[1]) - self._update_content() - - def get_state(self): - return RemoteJobs() diff --git a/scripts/Interface/ui/CMakeLists.txt b/scripts/Interface/ui/CMakeLists.txt index 3b08fd2c6d3d6f00f94fcbe806bcc356e078a60a..bf4ef3c4c1c13192e082312b0d5fac6c621d985a 100644 --- a/scripts/Interface/ui/CMakeLists.txt +++ b/scripts/Interface/ui/CMakeLists.txt @@ -9,8 +9,6 @@ add_subdirectory(batchwidget) add_subdirectory(poldi) SET(UI_FILES -cluster_details_dialog.ui -cluster_status.ui data_catalog.ui hfir_output.ui instrument_dialog.ui diff --git a/scripts/Interface/ui/cluster_details_dialog.ui b/scripts/Interface/ui/cluster_details_dialog.ui deleted file mode 100644 index 01a74247d1ce8c8b9c4bd407a7bab547eef600a3..0000000000000000000000000000000000000000 --- a/scripts/Interface/ui/cluster_details_dialog.ui +++ /dev/null @@ -1,219 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>Dialog</class> - <widget class="QDialog" name="Dialog"> - <property name="windowModality"> - <enum>Qt::ApplicationModal</enum> - </property> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>439</width> - <height>433</height> - </rect> - </property> - <property name="sizePolicy"> - <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="windowTitle"> - <string>Dialog</string> - </property> - <property name="sizeGripEnabled"> - <bool>false</bool> - </property> - <property name="modal"> - <bool>true</bool> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_3"> - <item> - <widget class="QLabel" name="label_3"> - <property name="minimumSize"> - <size> - <width>160</width> - <height>0</height> - </size> - </property> - <property name="maximumSize"> - <size> - <width>160</width> - <height>16777215</height> - </size> - </property> - <property name="text"> - <string>Compute resource:</string> - </property> - </widget> - </item> - <item> - <widget class="QComboBox" name="resource_combo"/> - </item> - </layout> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_4"> - <item> - <widget class="QLabel" name="label_4"> - <property name="minimumSize"> - <size> - <width>160</width> - <height>0</height> - </size> - </property> - <property name="maximumSize"> - <size> - <width>160</width> - <height>16777215</height> - </size> - </property> - <property name="text"> - <string>Number of nodes:</string> - </property> - </widget> - </item> - <item> - <widget class="QSpinBox" name="nodes_box"/> - </item> - </layout> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_5"> - <item> - <widget class="QLabel" name="label_5"> - <property name="minimumSize"> - <size> - <width>160</width> - <height>0</height> - </size> - </property> - <property name="maximumSize"> - <size> - <width>160</width> - <height>16777215</height> - </size> - </property> - <property name="text"> - <string>Number of cores:</string> - </property> - </widget> - </item> - <item> - <widget class="QSpinBox" name="cores_box"/> - </item> - </layout> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_2"> - <item> - <widget class="QLabel" name="label_2"> - <property name="minimumSize"> - <size> - <width>160</width> - <height>0</height> - </size> - </property> - <property name="maximumSize"> - <size> - <width>160</width> - <height>16777215</height> - </size> - </property> - <property name="text"> - <string>Username:</string> - </property> - </widget> - </item> - <item> - <widget class="QLineEdit" name="username_edit"/> - </item> - </layout> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <widget class="QLabel" name="label"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="minimumSize"> - <size> - <width>160</width> - <height>0</height> - </size> - </property> - <property name="maximumSize"> - <size> - <width>160</width> - <height>16777215</height> - </size> - </property> - <property name="text"> - <string>Password:</string> - </property> - </widget> - </item> - <item> - <widget class="QLineEdit" name="pass_edit"> - <property name="echoMode"> - <enum>QLineEdit::Password</enum> - </property> - </widget> - </item> - </layout> - </item> - <item> - <widget class="QDialogButtonBox" name="buttonBox"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="standardButtons"> - <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> - </property> - </widget> - </item> - </layout> - </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>316</x> - <y>260</y> - </hint> - <hint type="destinationlabel"> - <x>286</x> - <y>274</y> - </hint> - </hints> - </connection> - </connections> -</ui> diff --git a/scripts/Interface/ui/cluster_status.ui b/scripts/Interface/ui/cluster_status.ui deleted file mode 100644 index 4396b771405f1a825f9b87de63d4f379efdcd1b8..0000000000000000000000000000000000000000 --- a/scripts/Interface/ui/cluster_status.ui +++ /dev/null @@ -1,170 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>Frame</class> - <widget class="QFrame" name="Frame"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>753</width> - <height>563</height> - </rect> - </property> - <property name="windowTitle"> - <string>Frame</string> - </property> - <property name="frameShape"> - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Raised</enum> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_5"> - <item> - <widget class="QLabel" name="label_3"> - <property name="minimumSize"> - <size> - <width>160</width> - <height>0</height> - </size> - </property> - <property name="maximumSize"> - <size> - <width>160</width> - <height>16777215</height> - </size> - </property> - <property name="text"> - <string>Compute resource:</string> - </property> - </widget> - </item> - <item> - <widget class="QComboBox" name="resource_combo"/> - </item> - </layout> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_4"> - <item> - <widget class="QTableWidget" name="job_table"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - </widget> - </item> - </layout> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <widget class="QLabel" name="label"> - <property name="text"> - <string>Username:</string> - </property> - </widget> - </item> - <item> - <widget class="QLineEdit" name="username_edit"> - <property name="toolTip"> - <string>Enter compute resource username</string> - </property> - <property name="inputMask"> - <string/> - </property> - <property name="text"> - <string/> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="label_2"> - <property name="text"> - <string>Password:</string> - </property> - </widget> - </item> - <item> - <widget class="QLineEdit" name="password_edit"> - <property name="toolTip"> - <string>Enter compute resource password</string> - </property> - <property name="inputMask"> - <string/> - </property> - <property name="text"> - <string/> - </property> - <property name="echoMode"> - <enum>QLineEdit::Password</enum> - </property> - </widget> - </item> - <item> - <spacer name="horizontalSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_2"> - <item> - <widget class="QLabel" name="label_4"> - <property name="text"> - <string>Show items after:</string> - </property> - </widget> - </item> - <item> - <widget class="QDateTimeEdit" name="date_time_edit"/> - </item> - <item> - <spacer name="horizontalSpacer_2"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QPushButton" name="refresh_button"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="toolTip"> - <string>Click to refresh the job list</string> - </property> - <property name="text"> - <string>Refresh</string> - </property> - </widget> - </item> - </layout> - </item> - </layout> - </widget> - <resources/> - <connections/> -</ui> diff --git a/scripts/Interface/ui/reduction_main.ui b/scripts/Interface/ui/reduction_main.ui index dd626115f467eb5cb3b93ebd0ac9f77ba2d92148..049229aa6663fe06f2c4d27f728ad1500a7672d2 100644 --- a/scripts/Interface/ui/reduction_main.ui +++ b/scripts/Interface/ui/reduction_main.ui @@ -125,22 +125,6 @@ p, li { white-space: pre-wrap; } </property> </widget> </item> - <item> - <widget class="QPushButton" name="cluster_button"> - <property name="minimumSize"> - <size> - <width>95</width> - <height>0</height> - </size> - </property> - <property name="toolTip"> - <string>Click to send the reduction job to a remote compute resource</string> - </property> - <property name="text"> - <string>Send cluster</string> - </property> - </widget> - </item> <item> <widget class="QPushButton" name="save_button"> <property name="enabled"> @@ -189,7 +173,7 @@ p, li { white-space: pre-wrap; } <x>0</x> <y>0</y> <width>1062</width> - <height>23</height> + <height>22</height> </rect> </property> <widget class="QMenu" name="file_menu">