diff --git a/.gitignore b/.gitignore index eafd6bd821fae3401c330577f0a4297ad31a8e7d..66a513df6264592497b095179cd329cc6196fc97 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,8 @@ __pycache__ -irods-basicGUI/logs/* \ No newline at end of file +irods-basicGUI/logs/* + +# Build pipeline +venv +build +dist +irods-iBridgesGui.spec \ No newline at end of file diff --git a/gui/dataTransfer.py b/gui/dataTransfer.py index 58560e3b48b34aa1a5836a33b6a4c34572f8fc4c..c332d9c803fb6a26a8346998b29ec7155fef891b 100644 --- a/gui/dataTransfer.py +++ b/gui/dataTransfer.py @@ -11,17 +11,19 @@ from irods.keywords import NO_PARA_OP_KW from utils.utils import getSize import os +from gui.ui_files.dataTransferState import Ui_dataTransferState # Loading symbol generator # http://www.ajaxload.info/#preview -class dataTransfer(QDialog): +class dataTransfer(QDialog, Ui_dataTransferState): finished = pyqtSignal(bool, object) def __init__(self, ic, upload, localFsPath, irodsColl, irodsTreeIdx = None, resource = None): super(dataTransfer, self).__init__() - loadUi("gui/ui-files/dataTransferState.ui", self) + super(dataTransfer, self).setupUi(self) + #loadUi("gui/ui-files/dataTransferState.ui", self) self.ic = ic self.localFsPath = localFsPath diff --git a/gui/elabUpload.py b/gui/elabUpload.py index a4e1c2ef3c4d0ac84ce740749039750b6311d697..1c5e0a6cc4cef6b9cfaee5b8759f5f7d2cd645fa 100644 --- a/gui/elabUpload.py +++ b/gui/elabUpload.py @@ -1,6 +1,6 @@ from utils.elabConnector import elabConnector from PyQt5 import QtCore, QtGui, QtWidgets -from PyQt5.QtWidgets import QMessageBox, QTableWidgetItem, QFileSystemModel +from PyQt5.QtWidgets import QMessageBox, QTableWidgetItem, QFileSystemModel, QWidget from PyQt5.QtCore import QObject, QThread, pyqtSignal from gui.checkableFsTree import checkableFsTreeModel @@ -9,30 +9,34 @@ from utils.utils import getSize, walkToDict from irods.exception import CATALOG_ALREADY_HAS_ITEM_BY_THAT_NAME import logging -class elabUpload(): - def __init__(self, widget, ic): - self.widget = widget +from gui.ui_files.tabELNData import Ui_tabELNData + +class elabUpload(QWidget, Ui_tabELNData): + def __init__(self, ic): + super(elabUpload, self).__init__() + super(elabUpload, self).setupUi(self) + self.elab = None self.coll = None self.ic = ic # Return errors to: - self.errorLabel = widget.errorLabel + self.errorLabel = self.errorLabel #Gathering Eln configuration - self.elnTokenInput = widget.elnTokenInput - self.elnGroupTable = widget.elnGroupTable - self.elnExperimentTable = widget.elnExperimentTable + self.elnTokenInput = self.elnTokenInput + self.elnGroupTable = self.elnGroupTable + self.elnExperimentTable = self.elnExperimentTable #Config ok check - self.groupIdLabel = widget.groupIdLabel - self.experimentIdLabel = widget.experimentIdLabel + self.groupIdLabel = self.groupIdLabel + self.experimentIdLabel = self.experimentIdLabel #Selecting and uploading local files and folders - self.dirmodel = checkableFsTreeModel(widget.localFsTable) - widget.localFsTable.setModel(self.dirmodel) - self.localFsTable = widget.localFsTable + self.dirmodel = checkableFsTreeModel(self.localFsTable) + self.localFsTable.setModel(self.dirmodel) + self.localFsTable = self.localFsTable - self.elnUploadButton = widget.elnUploadButton + self.elnUploadButton = self.elnUploadButton #Showing result - self.elnPreviewBrowser = widget.elnPreviewBrowser - self.elnIrodsPath = widget.elnIrodsPath + self.elnPreviewBrowser = self.elnPreviewBrowser + self.elnIrodsPath = self.elnIrodsPath #defining events and listeners self.elnTokenInput.returnPressed.connect(self.connectElab) @@ -57,12 +61,12 @@ class elabUpload(): row = row + 1 self.elnGroupTable.resizeColumnsToContents() self.loadLocalFileView() - self.widget.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) + self.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) except Exception as e: logging.info("elabUpload: "+repr(e)) self.errorLabel.setText( "ELN ERROR: "+repr(e)+"\n Your permissions for your current active group might be blocked.") - self.widget.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) + self.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) return def selectExperiment(self, expId): @@ -77,7 +81,7 @@ class elabUpload(): def loadExperiments(self): self.errorLabel.clear() self.elnExperimentTable.setRowCount(0) - self.widget.setCursor(QtGui.QCursor(QtCore.Qt.WaitCursor)) + self.setCursor(QtGui.QCursor(QtCore.Qt.WaitCursor)) row = self.elnGroupTable.currentRow() if row > -1: groupId = self.elnGroupTable.item(row, 0).text() @@ -104,11 +108,11 @@ class elabUpload(): logging.info("ElabUpload groupId "+str(groupId)+": "+repr(error)) self.errorLabel.setText( "ELN ERROR: "+repr(e)+"\n You might not have permissions for that group.") - self.widget.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) + self.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) return self.elnExperimentTable.resizeColumnsToContents() - self.widget.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) + self.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) def loadLocalFileView(self): @@ -264,28 +268,32 @@ class Worker(QObject): logging.info("ElabUpload data upload and annotation worker: "+repr(e)) print(repr(e)) - self.annotateElab() + self.annotateElab({ "file size": str(self.size) + "MB" }) - def annotateElab(self): + def annotateElab(self, metadata): self.errorLabel.setText("Linking data to Elabjournal experiment.") if self.ic.davrods and "yoda" in self.ic.session.host: self.elab.addMetadata( self.ic.davrods+'/'+self.coll.path.split('home/')[1].strip(), + meta=metadata, title='Data in iRODS') elif self.ic.davrods and "surfsara.nl" in self.ic.session.host: self.elab.addMetadata( self.ic.davrods+'/'+self.coll.path.split( self.ic.session.zone)[1].strip('/'), + meta=metadata, title='Data in iRODS') elif self.ic.davrods: self.elab.addMetadata( self.ic.davrods+'/'+self.coll.path.strip('/'), + meta=metadata, title='Data in iRODS') else: self.elab.addMetadata('{'+self.ic.session.host+', \n'\ +self.ic.session.zone+', \n'\ +self.ic.session.username+', \n'\ +str(self.ic.session.port)+'}\n'+ - self.coll.path, title='Data in iRODS') + self.coll.path, meta=metadata, + title='Data in iRODS') diff --git a/gui/irodsBrowser.py b/gui/irodsBrowser.py index d16dafede962f419170e790fd4bbd4a7d7208486..100a110b76a4c6ae6655ae3bf60dc77a1b9e893a 100644 --- a/gui/irodsBrowser.py +++ b/gui/irodsBrowser.py @@ -1,5 +1,5 @@ from PyQt5 import QtWidgets -from PyQt5.QtWidgets import QDialog, QFileDialog, QApplication, QMainWindow, QMessageBox, QPushButton +from PyQt5.QtWidgets import QDialog, QFileDialog, QApplication, QMainWindow, QMessageBox, QPushButton, QWidget from PyQt5.uic import loadUi from PyQt5 import QtCore from PyQt5 import QtGui @@ -7,52 +7,52 @@ from PyQt5 import QtGui from gui.popupWidgets import irodsCreateCollection from utils.utils import walkToDict, getDownloadDir import logging +import sys from irods.exception import CollectionDoesNotExist, NetworkException +from gui.ui_files.tabBrowser import Ui_tabBrowser -import sys - +class irodsBrowser(QWidget, Ui_tabBrowser): + def __init__ (self, ic): + super(irodsBrowser, self).__init__() + super(irodsBrowser, self).setupUi(self) -class irodsBrowser(): - def __init__ (self, widget, ic): - self.ic = ic - self.widget = widget - self.widget.viewTabs.setCurrentIndex(0) + self.viewTabs.setCurrentIndex(0) #Browser table - self.widget.collTable.setColumnWidth(1,399) - self.widget.collTable.setColumnWidth(2,199) - self.widget.collTable.setColumnWidth(3,399) - self.widget.collTable.setColumnWidth(0,20) + self.collTable.setColumnWidth(1,399) + self.collTable.setColumnWidth(2,199) + self.collTable.setColumnWidth(3,399) + self.collTable.setColumnWidth(0,20) #Metadata table - self.widget.metadataTable.setColumnWidth(0,199) - self.widget.metadataTable.setColumnWidth(1,199) - self.widget.metadataTable.setColumnWidth(2,199) + self.metadataTable.setColumnWidth(0,199) + self.metadataTable.setColumnWidth(1,199) + self.metadataTable.setColumnWidth(2,199) #ACL table - self.widget.aclTable.setColumnWidth(0,299) - self.widget.aclTable.setColumnWidth(1,299) + self.aclTable.setColumnWidth(0,299) + self.aclTable.setColumnWidth(1,299) #if user is not admin nor datasteward, hide ACL buttons try: userType, userGroups = self.ic.getUserInfo() except NetworkException: - self.widget.errorLabel.setText( + self.errorLabel.setText( "IRODS NETWORK ERROR: No Connection, please check network") if "rodsadmin" not in userType and \ "datastewards" not in userGroups and \ "training" not in userGroups: - self.widget.aclAddButton.hide() - self.widget.aclBox.setEnabled(False) - self.widget.recurseBox.setEnabled(False) + self.aclAddButton.hide() + self.aclBox.setEnabled(False) + self.recurseBox.setEnabled(False) #Resource table - self.widget.resourceTable.setColumnWidth(0,500) - self.widget.resourceTable.setColumnWidth(1,90) + self.resourceTable.setColumnWidth(0,500) + self.resourceTable.setColumnWidth(1,90) #iRODS defaults try: @@ -61,7 +61,7 @@ class irodsBrowser(): self.irodsRoot = self.ic.session.collections.get( "/"+ic.session.zone+"/home/"+ic.session.username) except NetworkException: - self.widget.errorLabel.setText( + self.errorLabel.setText( "IRODS NETWORK ERROR: No Connection, please check network") self.resetPath() @@ -71,65 +71,65 @@ class irodsBrowser(): def browse(self): #update main table when iRODS paht is changed upon 'Enter' - self.widget.inputPath.returnPressed.connect(self.loadTable) - self.widget.homeButton.clicked.connect(self.resetPath) + self.inputPath.returnPressed.connect(self.loadTable) + self.homeButton.clicked.connect(self.resetPath) #quick data upload and download (files only) - self.widget.UploadButton.clicked.connect(self.fileUpload) - self.widget.DownloadButton.clicked.connect(self.fileDownload) + self.UploadButton.clicked.connect(self.fileUpload) + self.DownloadButton.clicked.connect(self.fileDownload) #new collection - self.widget.createCollButton.clicked.connect(self.createCollection) - self.widget.dataDeleteButton.clicked.connect(self.deleteData) - self.widget.loadDeleteSelectionButton.clicked.connect(self.loadSelection) + self.createCollButton.clicked.connect(self.createCollection) + self.dataDeleteButton.clicked.connect(self.deleteData) + self.loadDeleteSelectionButton.clicked.connect(self.loadSelection) #functionality to lower tabs for metadata, acls and resources - self.widget.collTable.doubleClicked.connect(self.updatePath) - self.widget.collTable.clicked.connect(self.fillInfo) - self.widget.metadataTable.clicked.connect(self.editMetadata) - self.widget.aclTable.clicked.connect(self.editACL) + self.collTable.doubleClicked.connect(self.updatePath) + self.collTable.clicked.connect(self.fillInfo) + self.metadataTable.clicked.connect(self.editMetadata) + self.aclTable.clicked.connect(self.editACL) #actions to update iCat entries of metadata and acls - self.widget.metaAddButton.clicked.connect(self.addIcatMeta) - self.widget.metaUpdateButton.clicked.connect(self.updateIcatMeta) - self.widget.metaDeleteButton.clicked.connect(self.deleteIcatMeta) - self.widget.aclAddButton.clicked.connect(self.updateIcatAcl) + self.metaAddButton.clicked.connect(self.addIcatMeta) + self.metaUpdateButton.clicked.connect(self.updateIcatMeta) + self.metaDeleteButton.clicked.connect(self.deleteIcatMeta) + self.aclAddButton.clicked.connect(self.updateIcatAcl) # Util functions def __clearErrorLabel(self): - self.widget.errorLabel.clear() + self.errorLabel.clear() def __clearViewTabs(self): - self.widget.aclTable.setRowCount(0) - self.widget.metadataTable.setRowCount(0) - self.widget.resourceTable.setRowCount(0) - self.widget.previewBrowser.clear() + self.aclTable.setRowCount(0) + self.metadataTable.setRowCount(0) + self.resourceTable.setRowCount(0) + self.previewBrowser.clear() def __fillResc(self, value, path): - self.widget.resourceTable.setRowCount(0) + self.resourceTable.setRowCount(0) newPath = "/"+path.strip("/")+"/"+value.strip("/") if not value.endswith("/") and self.ic.session.data_objects.exists(newPath): resources = self.ic.listResources() - self.widget.resourceTable.setRowCount(len(resources)) + self.resourceTable.setRowCount(len(resources)) obj = self.ic.session.data_objects.get( "/"+path.strip("/")+"/"+value.strip("/") ) replicas = [resc.resource_name for resc in obj.replicas] for i in range(len(resources)): - self.widget.resourceTable.setItem(i, 0, + self.resourceTable.setItem(i, 0, QtWidgets.QTableWidgetItem(resources[i])) if resources[i] in replicas: item = QtWidgets.QTableWidgetItem() item.setCheckState(QtCore.Qt.Checked) item.setFlags(QtCore.Qt.ItemIsEnabled) - self.widget.resourceTable.setItem(i, 1, item) - self.widget.resourceTable.resizeColumnsToContents() + self.resourceTable.setItem(i, 1, item) + self.resourceTable.resizeColumnsToContents() def __fillACLs(self, value, path): - self.widget.aclTable.setRowCount(0) - self.widget.aclUserField.clear() - self.widget.aclZoneField.clear() - self.widget.aclBox.setCurrentText("----") + self.aclTable.setRowCount(0) + self.aclUserField.clear() + self.aclZoneField.clear() + self.aclBox.setCurrentText("----") newPath = "/"+path.strip("/")+"/"+value.strip("/") acls = [] @@ -144,22 +144,22 @@ class irodsBrowser(): ) acls = self.ic.session.permissions.get(item) - self.widget.aclTable.setRowCount(len(acls)) + self.aclTable.setRowCount(len(acls)) row = 0 for acl in acls: - self.widget.aclTable.setItem(row, 0, QtWidgets.QTableWidgetItem(acl.user_name)) - self.widget.aclTable.setItem(row, 1,QtWidgets.QTableWidgetItem(acl.user_zone)) - self.widget.aclTable.setItem(row, 2, + self.aclTable.setItem(row, 0, QtWidgets.QTableWidgetItem(acl.user_name)) + self.aclTable.setItem(row, 1,QtWidgets.QTableWidgetItem(acl.user_zone)) + self.aclTable.setItem(row, 2, QtWidgets.QTableWidgetItem(acl.access_name.split(' ')[0].replace('modify', 'write'))) row = row+1 - self.widget.aclTable.resizeColumnsToContents() + self.aclTable.resizeColumnsToContents() def __fillMetadata(self, value, path): - self.widget.metaKeyField.clear() - self.widget.metaValueField.clear() - self.widget.metaUnitsField.clear() + self.metaKeyField.clear() + self.metaValueField.clear() + self.metaUnitsField.clear() newPath = "/"+path.strip("/")+"/"+value.strip("/") metadata = [] @@ -173,17 +173,17 @@ class irodsBrowser(): "/"+path.strip("/")+"/"+value.strip("/") ) metadata = obj.metadata.items() - self.widget.metadataTable.setRowCount(len(metadata)) + self.metadataTable.setRowCount(len(metadata)) row = 0 for item in metadata: - self.widget.metadataTable.setItem(row, 0, + self.metadataTable.setItem(row, 0, QtWidgets.QTableWidgetItem(item.name)) - self.widget.metadataTable.setItem(row, 1, + self.metadataTable.setItem(row, 1, QtWidgets.QTableWidgetItem(item.value)) - self.widget.metadataTable.setItem(row, 2, + self.metadataTable.setItem(row, 2, QtWidgets.QTableWidgetItem(item.units)) row = row+1 - self.widget.metadataTable.resizeColumnsToContents() + self.metadataTable.resizeColumnsToContents() def __fillPreview(self, value, path): @@ -198,7 +198,7 @@ class irodsBrowser(): [o.name for o in coll.data_objects] previewString = '\n'.join(content) - self.widget.previewBrowser.append(previewString) + self.previewBrowser.append(previewString) elif self.ic.session.data_objects.exists(newPath): # object # get mimetype mimetype = value.split(".")[len(value.split("."))-1] @@ -212,15 +212,15 @@ class irodsBrowser(): for i in range(20): out.append(readObj.read(50)) previewString = ''.join([line.decode('utf-8') for line in out]) - self.widget.previewBrowser.append(previewString) + self.previewBrowser.append(previewString) except Exception as e: - self.widget.previewBrowser.append( - "No Preview for: " + "/"+self.widget.inputPath.text().strip("/")+"/"+value.strip("/")) - self.widget.previewBrowser.append(repr(e)) - self.widget.previewBrowser.append("Storage resource might be down.") + self.previewBrowser.append( + "No Preview for: " + "/"+self.inputPath.text().strip("/")+"/"+value.strip("/")) + self.previewBrowser.append(repr(e)) + self.previewBrowser.append("Storage resource might be down.") else: - self.widget.previewBrowser.append( - "No Preview for: " + "/"+self.widget.inputPath.text().strip("/")+"/"+value.strip("/")) + self.previewBrowser.append( + "No Preview for: " + "/"+self.inputPath.text().strip("/")+"/"+value.strip("/")) def loadTable(self): @@ -228,39 +228,39 @@ class irodsBrowser(): try: self.__clearErrorLabel() self.__clearViewTabs() - newPath = "/"+self.widget.inputPath.text().strip("/") + newPath = "/"+self.inputPath.text().strip("/") if self.ic.session.collections.exists(newPath): coll = self.ic.session.collections.get(newPath) - self.widget.collTable.setRowCount(len(coll.data_objects)+len(coll.subcollections)) + self.collTable.setRowCount(len(coll.data_objects)+len(coll.subcollections)) row = 0 for subcoll in coll.subcollections: - self.widget.collTable.setItem(row, 1, QtWidgets.QTableWidgetItem(subcoll.name+"/")) - self.widget.collTable.setItem(row, 2, QtWidgets.QTableWidgetItem("")) - self.widget.collTable.setItem(row, 3, QtWidgets.QTableWidgetItem("")) - self.widget.collTable.setItem(row, 0, QtWidgets.QTableWidgetItem("")) + self.collTable.setItem(row, 1, QtWidgets.QTableWidgetItem(subcoll.name+"/")) + self.collTable.setItem(row, 2, QtWidgets.QTableWidgetItem("")) + self.collTable.setItem(row, 3, QtWidgets.QTableWidgetItem("")) + self.collTable.setItem(row, 0, QtWidgets.QTableWidgetItem("")) row = row+1 for obj in coll.data_objects: - self.widget.collTable.setItem(row, 1, QtWidgets.QTableWidgetItem(obj.name)) - self.widget.collTable.setItem( + self.collTable.setItem(row, 1, QtWidgets.QTableWidgetItem(obj.name)) + self.collTable.setItem( row, 2, QtWidgets.QTableWidgetItem(str(obj.size))) - self.widget.collTable.setItem( + self.collTable.setItem( row, 3, QtWidgets.QTableWidgetItem(str(obj.checksum))) - self.widget.collTable.setItem( + self.collTable.setItem( row, 4, QtWidgets.QTableWidgetItem(str(obj.modify_time))) - self.widget.collTable.setItem(row, 0, QtWidgets.QTableWidgetItem("")) + self.collTable.setItem(row, 0, QtWidgets.QTableWidgetItem("")) row = row+1 - self.widget.collTable.resizeColumnsToContents() + self.collTable.resizeColumnsToContents() else: - self.widget.collTable.setRowCount(0) - self.widget.errorLabel.setText("Collection does not exist.") + self.collTable.setRowCount(0) + self.errorLabel.setText("Collection does not exist.") except NetworkException: logging.exception("Something went wrong") - self.widget.errorLabel.setText( + self.errorLabel.setText( "IRODS NETWORK ERROR: No Connection, please check network") def resetPath(self): - self.widget.inputPath.setText(self.irodsRoot.path) + self.inputPath.setText(self.irodsRoot.path) self.loadTable() @@ -269,13 +269,13 @@ class irodsBrowser(): self.__clearErrorLabel() col = index.column() row = index.row() - if self.widget.collTable.item(row, 0).text() != '': - parent = self.widget.collTable.item(row, 0).text() + if self.collTable.item(row, 0).text() != '': + parent = self.collTable.item(row, 0).text() else: - parent = self.widget.inputPath.text() - value = self.widget.collTable.item(row, 1).text() + parent = self.inputPath.text() + value = self.collTable.item(row, 1).text() if value.endswith("/"): #collection - self.widget.inputPath.setText("/"+parent.strip("/")+"/"+value.strip("/")) + self.inputPath.setText("/"+parent.strip("/")+"/"+value.strip("/")) self.loadTable() @@ -283,19 +283,18 @@ class irodsBrowser(): def fillInfo(self, index): self.__clearErrorLabel() self.__clearViewTabs() - - self.widget.metadataTable.setRowCount(0) - self.widget.aclTable.setRowCount(0) - self.widget.resourceTable.setRowCount(0) + self.metadataTable.setRowCount(0) + self.aclTable.setRowCount(0) + self.resourceTable.setRowCount(0) col = index.column() row = index.row() self.currentBrowserRow = row - value = self.widget.collTable.item(row, col).text() - if self.widget.collTable.item(row, 0).text() != '': - path = self.widget.collTable.item(row, 0).text() + value = self.collTable.item(row, col).text() + if self.collTable.item(row, 0).text() != '': + path = self.collTable.item(row, 0).text() else: - path = self.widget.inputPath.text() + path = self.inputPath.text() self.__clearViewTabs() try: self.__fillPreview(value, path) @@ -304,17 +303,17 @@ class irodsBrowser(): self.__fillResc(value, path) except Exception as e: logging.info('ERROR in Browser',exc_info=True) - self.widget.errorLabel.setText(repr(e)) + self.errorLabel.setText(repr(e)) def loadSelection(self): #loads selection from main table into delete tab - self.widget.setCursor(QtGui.QCursor(QtCore.Qt.WaitCursor)) - self.widget.deleteSelectionBrowser.clear() - parent = self.widget.inputPath.text() - row = self.widget.collTable.currentRow() + self.setCursor(QtGui.QCursor(QtCore.Qt.WaitCursor)) + self.deleteSelectionBrowser.clear() + parent = self.inputPath.text() + row = self.collTable.currentRow() if row > -1: - cell = self.widget.collTable.item(row, 1).text() + cell = self.collTable.item(row, 1).text() path = "/"+parent.strip("/")+"/"+cell.strip("/") try: if self.ic.session.collections.exists(path): @@ -322,30 +321,30 @@ class irodsBrowser(): elif self.ic.session.data_objects.exists(path): irodsDict = {self.ic.session.data_objects.get(path).path: []} else: - self.widget.errorLabel.setText("Load: nothing selected.") + self.errorLabel.setText("Load: nothing selected.") pass for key in list(irodsDict.keys())[:20]: - self.widget.deleteSelectionBrowser.append(key) + self.deleteSelectionBrowser.append(key) if len(irodsDict[key]) > 0: for item in irodsDict[key]: - self.widget.deleteSelectionBrowser.append('\t'+item) - self.widget.deleteSelectionBrowser.append('...') + self.deleteSelectionBrowser.append('\t'+item) + self.deleteSelectionBrowser.append('...') except NetworkException: - self.widget.errorLabel.setText( + self.errorLabel.setText( "IRODS NETWORK ERROR: No Connection, please check network") - self.widget.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) - self.widget.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) + self.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) + self.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) def deleteData(self): #Deletes all data in the deleteSelectionBrowser - self.widget.errorLabel.clear() - data = self.widget.deleteSelectionBrowser.toPlainText().split('\n') + self.errorLabel.clear() + data = self.deleteSelectionBrowser.toPlainText().split('\n') if data[0] != '': deleteItem = data[0].strip() quit_msg = "Delete all data in \n\n"+deleteItem+'\n' - reply = QMessageBox.question(self.widget, 'Message', quit_msg, QMessageBox.Yes, QMessageBox.No) + reply = QMessageBox.question(self, 'Message', quit_msg, QMessageBox.Yes, QMessageBox.No) if reply == QMessageBox.Yes: try: if self.ic.session.collections.exists(deleteItem): @@ -353,15 +352,15 @@ class irodsBrowser(): else: item = self.ic.session.data_objects.get(deleteItem) self.ic.deleteData(item) - self.widget.deleteSelectionBrowser.clear() + self.deleteSelectionBrowser.clear() self.loadTable() - self.widget.errorLabel.clear() + self.errorLabel.clear() except Exception as error: - self.widget.errorLabel.setText("ERROR DELETE DATA: "+repr(error)) + self.errorLabel.setText("ERROR DELETE DATA: "+repr(error)) def createCollection(self): - parent = "/"+self.widget.inputPath.text().strip("/") + parent = "/"+self.inputPath.text().strip("/") creteCollWidget = irodsCreateCollection(parent, self.ic) creteCollWidget.exec_() self.loadTable() @@ -369,121 +368,121 @@ class irodsBrowser(): def fileUpload(self): from utils.utils import getSize - dialog = QFileDialog(self.widget) - fileSelect = QFileDialog.getOpenFileName(self.widget, + dialog = QFileDialog(self) + fileSelect = QFileDialog.getOpenFileName(self, "Open File", "","All Files (*);;Python Files (*.py)") size = getSize([fileSelect[0]]) - buttonReply = QMessageBox.question(self.widget, 'Message Box', "Upload " + fileSelect[0], + buttonReply = QMessageBox.question(self, 'Message Box', "Upload " + fileSelect[0], QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if buttonReply == QMessageBox.Yes: try: - parentColl = self.ic.session.collections.get("/"+self.widget.inputPath.text().strip("/")) + parentColl = self.ic.session.collections.get("/"+self.inputPath.text().strip("/")) print("Upload "+fileSelect[0]+" to "+parentColl.path+" on resource "+self.ic.defaultResc) self.ic.uploadData(fileSelect[0], parentColl, None, size, force=True) self.loadTable() except NetworkException: - self.widget.errorLabel.setText( + self.errorLabel.setText( "IRODS NETWORK ERROR: No Connection, please check network") except Exception as error: print("ERROR upload :", fileSelect[0], "failed; \n\t", repr(error)) - self.widget.errorLabel.setText(repr(error)) + self.errorLabel.setText(repr(error)) else: pass def fileDownload(self): #If table is filled - if self.widget.collTable.item(self.currentBrowserRow, 1) != None: - objName = self.widget.collTable.item(self.currentBrowserRow, 1).text() - if self.widget.collTable.item(self.currentBrowserRow, 0).text() == '': - parent = self.widget.inputPath.text() + if self.collTable.item(self.currentBrowserRow, 1) != None: + objName = self.collTable.item(self.currentBrowserRow, 1).text() + if self.collTable.item(self.currentBrowserRow, 0).text() == '': + parent = self.inputPath.text() else: - parent = self.widget.collTable.item(self.currentBrowserRow, 0).text() + parent = self.collTable.item(self.currentBrowserRow, 0).text() try: if self.ic.session.data_objects.exists(parent+'/'+objName): downloadDir = getDownloadDir() - buttonReply = QMessageBox.question(self.widget, + buttonReply = QMessageBox.question(self, 'Message Box', 'Download\n'+parent+'/'+objName+'\tto\n'+downloadDir) if buttonReply == QMessageBox.Yes: obj = self.ic.session.data_objects.get(parent+'/'+objName) self.ic.downloadData(obj, downloadDir, obj.size) - self.widget.errorLabel.setText("File downloaded to: "+downloadDir) + self.errorLabel.setText("File downloaded to: "+downloadDir) except NetworkException: - self.widget.errorLabel.setText( + self.errorLabel.setText( "IRODS NETWORK ERROR: No Connection, please check network") except Exception as error: print("ERROR download :", parent+'/'+objName, "failed; \n\t", repr(error)) - self.widget.errorLabel.setText(repr(error)) + self.errorLabel.setText(repr(error)) #@QtCore.pyqtSlot(QtCore.QModelIndex) def editMetadata(self, index): self.__clearErrorLabel() - self.widget.metaValueField.clear() - self.widget.metaUnitsField.clear() + self.metaValueField.clear() + self.metaUnitsField.clear() row = index.row() - key = self.widget.metadataTable.item(row, 0).text() - value = self.widget.metadataTable.item(row, 1).text() - units = self.widget.metadataTable.item(row, 2).text() - self.widget.metaKeyField.setText(key) - self.widget.metaValueField.setText(value) - self.widget.metaUnitsField.setText(units) + key = self.metadataTable.item(row, 0).text() + value = self.metadataTable.item(row, 1).text() + units = self.metadataTable.item(row, 2).text() + self.metaKeyField.setText(key) + self.metaValueField.setText(value) + self.metaUnitsField.setText(units) self.currentMetadata = (key, value, units) #@QtCore.pyqtSlot(QtCore.QModelIndex) def editACL(self, index): self.__clearErrorLabel() - self.widget.aclUserField.clear() - self.widget.aclZoneField.clear() - self.widget.aclBox.setCurrentText("----") + self.aclUserField.clear() + self.aclZoneField.clear() + self.aclBox.setCurrentText("----") row = index.row() - user = self.widget.aclTable.item(row, 0).text() - zone = self.widget.aclTable.item(row, 1).text() - acl = self.widget.aclTable.item(row, 2).text() - self.widget.aclUserField.setText(user) - self.widget.aclZoneField.setText(zone) - self.widget.aclBox.setCurrentText(acl) + user = self.aclTable.item(row, 0).text() + zone = self.aclTable.item(row, 1).text() + acl = self.aclTable.item(row, 2).text() + self.aclUserField.setText(user) + self.aclZoneField.setText(zone) + self.aclBox.setCurrentText(acl) self.currentAcl = (user, acl) def updateIcatAcl(self): - self.widget.errorLabel.clear() - user = self.widget.aclUserField.text() - rights = self.widget.aclBox.currentText() - recursive = self.widget.recurseBox.currentText() == 'True' - if self.widget.collTable.item(self.currentBrowserRow, 0).text() == '': - parent = self.widget.inputPath.text() + self.errorLabel.clear() + user = self.aclUserField.text() + rights = self.aclBox.currentText() + recursive = self.recurseBox.currentText() == 'True' + if self.collTable.item(self.currentBrowserRow, 0).text() == '': + parent = self.inputPath.text() else: - parent = self.widget.collTable.item(self.currentBrowserRow, 0).text() - cell = self.widget.collTable.item(self.currentBrowserRow, 1).text() - zone = self.widget.aclZoneField.text() + parent = self.collTable.item(self.currentBrowserRow, 0).text() + cell = self.collTable.item(self.currentBrowserRow, 1).text() + zone = self.aclZoneField.text() try: self.ic.setPermissions(rights, user, "/"+parent.strip("/")+"/"+cell.strip("/"), zone, recursive) self.__fillACLs(cell, parent) except NetworkException: - self.widget.errorLabel.setText( + self.errorLabel.setText( "IRODS NETWORK ERROR: No Connection, please check network") except Exception as error: - self.widget.errorLabel.setText(repr(error)) + self.errorLabel.setText(repr(error)) def updateIcatMeta(self): - self.widget.errorLabel.clear() - newKey = self.widget.metaKeyField.text() - newVal = self.widget.metaValueField.text() - newUnits = self.widget.metaUnitsField.text() + self.errorLabel.clear() + newKey = self.metaKeyField.text() + newVal = self.metaValueField.text() + newUnits = self.metaUnitsField.text() try: if not (newKey == "" or newVal == ""): - if self.widget.collTable.item(self.currentBrowserRow, 0).text() == '': - parent = self.widget.inputPath.text() + if self.collTable.item(self.currentBrowserRow, 0).text() == '': + parent = self.inputPath.text() else: - parent = self.widget.collTable.item(self.currentBrowserRow, 0).text() + parent = self.collTable.item(self.currentBrowserRow, 0).text() - cell = self.widget.collTable.item(self.currentBrowserRow, 1).text() + cell = self.collTable.item(self.currentBrowserRow, 1).text() if cell.endswith("/"): item = self.ic.session.collections.get("/"+parent.strip("/")+"/"+cell.strip("/")) else: @@ -493,25 +492,25 @@ class irodsBrowser(): self.__fillResc(cell, parent) except NetworkException: - self.widget.errorLabel.setText( + self.errorLabel.setText( "IRODS NETWORK ERROR: No Connection, please check network") except Exception as error: - self.widget.errorLabel.setText(repr(error)) + self.errorLabel.setText(repr(error)) def addIcatMeta(self): - self.widget.errorLabel.clear() - newKey = self.widget.metaKeyField.text() - newVal = self.widget.metaValueField.text() - newUnits = self.widget.metaUnitsField.text() + self.errorLabel.clear() + newKey = self.metaKeyField.text() + newVal = self.metaValueField.text() + newUnits = self.metaUnitsField.text() if not (newKey == "" or newVal == ""): try: - if self.widget.collTable.item(self.currentBrowserRow, 0).text() == '': - parent = self.widget.inputPath.text() + if self.collTable.item(self.currentBrowserRow, 0).text() == '': + parent = self.inputPath.text() else: - parent = self.widget.collTable.item(self.currentBrowserRow, 0).text() + parent = self.collTable.item(self.currentBrowserRow, 0).text() - cell = self.widget.collTable.item(self.currentBrowserRow, 1).text() + cell = self.collTable.item(self.currentBrowserRow, 1).text() if cell.endswith("/"): item = self.ic.session.collections.get("/"+parent.strip("/")+"/"+cell.strip("/")) else: @@ -520,26 +519,26 @@ class irodsBrowser(): self.__fillMetadata(cell, parent) self.__fillResc(cell, parent) except NetworkException: - self.widget.errorLabel.setText( + self.errorLabel.setText( "IRODS NETWORK ERROR: No Connection, please check network") except Exception as error: - self.widget.errorLabel.setText(repr(error)) + self.errorLabel.setText(repr(error)) def deleteIcatMeta(self): - self.widget.errorLabel.clear() - key = self.widget.metaKeyField.text() - val = self.widget.metaValueField.text() - units = self.widget.metaUnitsField.text() + self.errorLabel.clear() + key = self.metaKeyField.text() + val = self.metaValueField.text() + units = self.metaUnitsField.text() try: if not (key == "" or val == ""): - if self.widget.collTable.item(self.currentBrowserRow, 0).text() == '': - parent = self.widget.inputPath.text() + if self.collTable.item(self.currentBrowserRow, 0).text() == '': + parent = self.inputPath.text() else: - parent = self.widget.collTable.item(self.currentBrowserRow, 0).text() + parent = self.collTable.item(self.currentBrowserRow, 0).text() - cell = self.widget.collTable.item(self.currentBrowserRow, 1).text() + cell = self.collTable.item(self.currentBrowserRow, 1).text() if cell.endswith("/"): item = self.ic.session.collections.get("/"+parent.strip("/")+"/"+cell.strip("/")) else: @@ -547,9 +546,9 @@ class irodsBrowser(): self.ic.deleteMetadata([item], key, val, units) self.__fillMetadata(cell, parent) except NetworkException: - self.widget.errorLabel.setText( + self.errorLabel.setText( "IRODS NETWORK ERROR: No Connection, please check network") except Exception as error: - self.widget.errorLabel.setText(repr(error)) + self.errorLabel.setText(repr(error)) diff --git a/gui/irodsCreateTicket.py b/gui/irodsCreateTicket.py index 8678c334fda1c3539497103193836f2fb98668df..3fbe1e5993ff66479e8874fdfa8e764906c76412 100644 --- a/gui/irodsCreateTicket.py +++ b/gui/irodsCreateTicket.py @@ -1,64 +1,68 @@ from PyQt5 import QtGui, QtCore +from PyQt5.QtWidgets import QWidget + from gui.irodsTreeView import IrodsModel +from gui.ui_files.tabTicketCreate import Ui_tabticketCreate -class irodsCreateTicket(): - def __init__(self, widget, ic, ienv): - self.ic = ic - self.widget = widget +class irodsCreateTicket(QWidget, Ui_tabticketCreate): + def __init__(self, ic, ienv): + super(irodsCreateTicket, self).__init__() + super(irodsCreateTicket, self).setupUi(self) - self.irodsmodel = IrodsModel(ic, self.widget.irodsFsTreeView) - self.widget.irodsFsTreeView.setModel(self.irodsmodel) + self.ic = ic + self.irodsmodel = IrodsModel(ic, self.irodsFsTreeView) + self.irodsFsTreeView.setModel(self.irodsmodel) self.irodsRootColl = '/'+ic.session.zone self.irodsmodel.setHorizontalHeaderLabels([self.irodsRootColl, 'Level', 'iRODS ID', 'parent ID', 'type']) - self.widget.irodsFsTreeView.expanded.connect(self.irodsmodel.refreshSubTree) - self.widget.irodsFsTreeView.clicked.connect(self.irodsmodel.refreshSubTree) + self.irodsFsTreeView.expanded.connect(self.irodsmodel.refreshSubTree) + self.irodsFsTreeView.clicked.connect(self.irodsmodel.refreshSubTree) self.irodsmodel.initTree() - self.widget.irodsFsTreeView.setHeaderHidden(True) - self.widget.irodsFsTreeView.header().setDefaultSectionSize(180) - self.widget.irodsFsTreeView.setColumnHidden(1, True) - self.widget.irodsFsTreeView.setColumnHidden(2, True) - self.widget.irodsFsTreeView.setColumnHidden(3, True) - self.widget.irodsFsTreeView.setColumnHidden(4, True) + self.irodsFsTreeView.setHeaderHidden(True) + self.irodsFsTreeView.header().setDefaultSectionSize(180) + self.irodsFsTreeView.setColumnHidden(1, True) + self.irodsFsTreeView.setColumnHidden(2, True) + self.irodsFsTreeView.setColumnHidden(3, True) + self.irodsFsTreeView.setColumnHidden(4, True) - self.widget.createTicketButton.clicked.connect(self.createTicket) + self.createTicketButton.clicked.connect(self.createTicket) def createTicket(self): - self.widget.infoLabel.clear() - self.widget.ticketInfoBrowser.clear() - self.widget.setCursor(QtGui.QCursor(QtCore.Qt.WaitCursor)) - self.widget.createTicketButton.setEnabled(False) + self.infoLabel.clear() + self.ticketInfoBrowser.clear() + self.setCursor(QtGui.QCursor(QtCore.Qt.WaitCursor)) + self.createTicketButton.setEnabled(False) #gather info idx, path = self.irodsmodel.get_checked() if path == None or self.ic.session.data_objects.exists(path): - self.widget.infoLabel.setText("ERROR: Please select a collection.") - self.widget.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) - self.widget.createTicketButton.setEnabled(True) + self.infoLabel.setText("ERROR: Please select a collection.") + self.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) + self.createTicketButton.setEnabled(True) return acls = [(acl.user_name, acl.access_name) for acl in self.ic.getPermissions(path)] if (self.ic.session.username, "own") in acls: - date = self.widget.calendar.selectedDate() + date = self.calendar.selectedDate() #format of time string for irods: 2012-05-07.23:00:00 expiryString = str(date.toPyDate())+'.23:59:59' ticket, expiryDate = self.ic.createTicket(path, expiryString) - self.widget.ticketInfoBrowser.append("iRODS server: \t"+self.ic.session.host) - self.widget.ticketInfoBrowser.append("iRODS path:\t"+path) - self.widget.ticketInfoBrowser.append("iRODS Ticket:\t"+ticket) + self.ticketInfoBrowser.append("iRODS server: \t"+self.ic.session.host) + self.ticketInfoBrowser.append("iRODS path:\t"+path) + self.ticketInfoBrowser.append("iRODS Ticket:\t"+ticket) if self.ic.__name__ == "irodsConnector": - self.widget.ticketInfoBrowser.append("Expiry date:\tNot set (linux only)") + self.ticketInfoBrowser.append("Expiry date:\tNot set (linux only)") else: - self.widget.ticketInfoBrowser.append("Expiry date:\t"+expiryDate) + self.ticketInfoBrowser.append("Expiry date:\t"+expiryDate) else: - self.widget.infoLabel.setText("ERROR: Insufficient rights, you need to be owner.") - self.widget.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) - self.widget.createTicketButton.setEnabled(True) + self.infoLabel.setText("ERROR: Insufficient rights, you need to be owner.") + self.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) + self.createTicketButton.setEnabled(True) return - self.widget.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) - self.widget.createTicketButton.setEnabled(True) + self.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) + self.createTicketButton.setEnabled(True) diff --git a/gui/irodsDataCompression.py b/gui/irodsDataCompression.py index 8d4860452d4418f5d0ed3fe3abf5660fb6819517..7598c08bf72888dfa7995b70e934a573bafba4f0 100644 --- a/gui/irodsDataCompression.py +++ b/gui/irodsDataCompression.py @@ -1,18 +1,19 @@ -from gui.irodsTreeView import IrodsModel -from gui.popupWidgets import irodsIndexPopup - -from PyQt5.QtWidgets import QMessageBox -from PyQt5.uic import loadUi +from PyQt5.QtWidgets import QMessageBox, QWidget from PyQt5.QtCore import QObject, QThread, pyqtSlot, pyqtSignal from PyQt5 import QtGui, QtCore - from os import path, getcwd import json +import sys -class irodsDataCompression(): - def __init__(self, widget, ic, ienv): +from gui.irodsTreeView import IrodsModel +from gui.popupWidgets import irodsIndexPopup +from gui.ui_files.tabDataCompression import Ui_tabDataCompression + +class irodsDataCompression(QWidget, Ui_tabDataCompression): + def __init__(self, ic, ienv): + super(irodsDataCompression, self).__init__() + super(irodsDataCompression, self).setupUi(self) self.ic = ic - self.widget = widget self.ienv = ienv rescs = self.ic.listResources() if ic.defaultResc not in rescs: @@ -21,41 +22,46 @@ class irodsDataCompression(): +'\nDataCompression view not setup.') return - ruleFiles = [path.join(getcwd(),'rules/tarCollection.r'), - path.join(getcwd(),'rules/tarReadIndex.r'), - path.join(getcwd(),'rules/tarExtract.r')] + if getattr(sys, 'frozen', False): + self.basefolder = path.join(path.dirname(path.realpath(sys.argv[0])), path.pardir) + else: + self.basefolder = path.dirname(path.realpath(sys.argv[0])) + + ruleFiles = [path.join(self.basefolder,'rules/tarCollection.r'), + path.join(self.basefolder,'rules/tarReadIndex.r'), + path.join(self.basefolder,'rules/tarExtract.r')] for rule in ruleFiles: if not path.isfile(rule): self.infoPopup('ERROR rules not configured:\n'+rule\ +'\nDataCompression view not setup.') return - self.widget.irodsZoneLabel1.setText("/"+self.ic.session.zone+":") - self.widget.irodsZoneLabel2.setText("/"+self.ic.session.zone+":") + self.irodsZoneLabel1.setText("/"+self.ic.session.zone+":") + self.irodsZoneLabel2.setText("/"+self.ic.session.zone+":") self.irodsRootColl = '/'+ic.session.zone - index = self.widget.decompressRescButton.findText(ic.defaultResc) - self.widget.decompressRescButton.setCurrentIndex(index) + index = self.decompressRescButton.findText(ic.defaultResc) + self.decompressRescButton.setCurrentIndex(index) #irodsCollectionTree - self.collectionTreeModel = self.setupFsTree(self.widget.irodsCollectionTree) - self.widget.irodsCollectionTree.expanded.connect(self.collectionTreeModel.refreshSubTree) - #self.widget.irodsCollectionTree.clicked.connect(self.collectionTreeModel.refreshSubTree) + self.collectionTreeModel = self.setupFsTree(self.irodsCollectionTree) + self.irodsCollectionTree.expanded.connect(self.collectionTreeModel.refreshSubTree) + #self.irodsCollectionTree.clicked.connect(self.collectionTreeModel.refreshSubTree) #irodsCompressionTree - self.compressionTreeModel = self.setupFsTree(self.widget.irodsCompressionTree) - self.widget.irodsCompressionTree.expanded.connect(self.compressionTreeModel.refreshSubTree) - #self.widget.irodsCompressionTree.clicked.connect(self.compressionTreeModel.refreshSubTree) + self.compressionTreeModel = self.setupFsTree(self.irodsCompressionTree) + self.irodsCompressionTree.expanded.connect(self.compressionTreeModel.refreshSubTree) + #self.irodsCompressionTree.clicked.connect(self.compressionTreeModel.refreshSubTree) #resource buttons - self.setupResourceButton(self.widget.compressRescButton) - self.setupResourceButton(self.widget.decompressRescButton) + self.setupResourceButton(self.compressRescButton) + self.setupResourceButton(self.decompressRescButton) #Create/Unpack/Index buttons - self.widget.createButton.clicked.connect(self.createDataBundle) - self.widget.unpackButton.clicked.connect(self.unpackDataBundle) - self.widget.indexButton.clicked.connect(self.getIndex) + self.createButton.clicked.connect(self.createDataBundle) + self.unpackButton.clicked.connect(self.unpackDataBundle) + self.indexButton.clicked.connect(self.getIndex) def infoPopup(self, message): - QMessageBox.information(self.widget, 'Information', message) + QMessageBox.information(self, 'Information', message) def setupFsTree(self, treeView): @@ -87,39 +93,39 @@ class irodsDataCompression(): button.setCurrentIndex(index) def enableButtons(self, enable): - self.widget.compressRescButton.setEnabled(enable) - self.widget.decompressRescButton.setEnabled(enable) + self.compressRescButton.setEnabled(enable) + self.decompressRescButton.setEnabled(enable) #Create/Unpack/Index buttons - self.widget.createButton.setEnabled(enable) - self.widget.unpackButton.setEnabled(enable) - self.widget.indexButton.setEnabled(enable) + self.createButton.setEnabled(enable) + self.unpackButton.setEnabled(enable) + self.indexButton.setEnabled(enable) def createDataBundle(self): - self.widget.setCursor(QtGui.QCursor(QtCore.Qt.WaitCursor)) + self.setCursor(QtGui.QCursor(QtCore.Qt.WaitCursor)) self.enableButtons(False) - self.widget.createStatusLabel.clear() - ruleFile = path.join(getcwd(),'rules/tarCollection.r') + self.createStatusLabel.clear() + ruleFile = path.join(self.basefolder,'rules/tarCollection.r') idx, source = self.collectionTreeModel.get_checked() if not self.ic.session.collections.exists(source): - self.widget.createStatusLabel.setText("ERROR: No collection selected.") - self.widget.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) + self.createStatusLabel.setText("ERROR: No collection selected.") + self.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) self.enableButtons(True) return #data bundling only allowed for collections in home/user if len(source.split('/')) < 5: - self.widget.createStatusLabel.setText( + self.createStatusLabel.setText( "ERROR: Selected collection is not a user collection.") - self.widget.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) + self.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) self.enableButtons(True) return - compress = self.widget.compressCheckBox.isChecked() - remove = self.widget.removeCheckBox.isChecked() - migrateResc = self.widget.compressRescButton.currentText() + compress = self.compressCheckBox.isChecked() + remove = self.removeCheckBox.isChecked() + migrateResc = self.compressRescButton.currentText() params = { '*coll': '"'+source+'"', '*resource': '"'+migrateResc+'"', @@ -128,7 +134,7 @@ class irodsDataCompression(): } self.threadCreate = QThread() - self.widget.createStatusLabel.setText("STATUS: compressing "+source) + self.createStatusLabel.setText("STATUS: compressing "+source) self.worker = dataBundleCreateExtract(self.ic, ruleFile, params, "create") self.worker.moveToThread(self.threadCreate) self.threadCreate.started.connect(self.worker.run) @@ -140,55 +146,55 @@ class irodsDataCompression(): def dataCreateExtractFinished(self, success, message, operation): - self.widget.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) + self.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) self.enableButtons(True) stdout, stderr = message if success and operation == "create": idx, source = self.collectionTreeModel.get_checked() - self.widget.createStatusLabel.setText("STATUS: Created " + str(stdout)) + self.createStatusLabel.setText("STATUS: Created " + str(stdout)) parentIdx = self.collectionTreeModel.getParentIdx(idx) self.collectionTreeModel.refreshSubTree(parentIdx) elif not success and operation == "create": - self.widget.createStatusLabel.setText("ERROR: Create failed: " + str(stderr)) + self.createStatusLabel.setText("ERROR: Create failed: " + str(stderr)) elif success and operation == "extract": idx, source = self.compressionTreeModel.get_checked() stdout, stderr = message - self.widget.unpackStatusLabel.setText("STATUS: Extracted " + str(stdout)) + self.unpackStatusLabel.setText("STATUS: Extracted " + str(stdout)) parentIdx = self.compressionTreeModel.getParentIdx(idx) self.compressionTreeModel.refreshSubTree(parentIdx) elif not success and operation == "extract": - self.widget.unpackStatusLabel.setText("ERROR: Create failed: " + str(stderr)) + self.unpackStatusLabel.setText("ERROR: Create failed: " + str(stderr)) def unpackDataBundle(self): - self.widget.setCursor(QtGui.QCursor(QtCore.Qt.WaitCursor)) + self.setCursor(QtGui.QCursor(QtCore.Qt.WaitCursor)) idx, source = self.compressionTreeModel.get_checked() if not idx or (not source.endswith(".irods.tar") and not source.endswith(".irods.zip")): - self.widget.unpackStatusLabel.setText("ERROR: No *.irods.tar or *.irods.zip selected") - self.widget.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) + self.unpackStatusLabel.setText("ERROR: No *.irods.tar or *.irods.zip selected") + self.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) return extractPath = path.dirname(source)+'/'+path.basename(source).split('.irods')[0] if self.ic.session.collections.exists(extractPath): extractColl = self.ic.session.collections.get(extractPath) if extractColl.subcollections != [] or extractColl.data_objects != []: - self.widget.unpackStatusLabel.setText("ERROR: Destination not empty: "+extractPath) - self.widget.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) + self.unpackStatusLabel.setText("ERROR: Destination not empty: "+extractPath) + self.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) return self.enableButtons(False) - self.widget.unpackStatusLabel.clear() - ruleFile = path.join(getcwd(),'rules/tarExtract.r') + self.unpackStatusLabel.clear() + ruleFile = path.join(self.basefolder,'rules/tarExtract.r') - migrateResc = self.widget.decompressRescButton.currentText() + migrateResc = self.decompressRescButton.currentText() params = { '*obj': '"'+source+'"', '*resource': '"'+migrateResc+'"', } self.threadExtract = QThread() - self.widget.unpackStatusLabel.setText("STATUS: extracting "+source) + self.unpackStatusLabel.setText("STATUS: extracting "+source) self.worker = dataBundleCreateExtract(self.ic, ruleFile, params, "extract") self.worker.moveToThread(self.threadExtract) self.threadExtract.started.connect(self.worker.run) @@ -200,23 +206,23 @@ class irodsDataCompression(): def getIndex(self): - self.widget.unpackStatusLabel.clear() - ruleFile = path.join(getcwd(),'rules/tarReadIndex.r') + self.unpackStatusLabel.clear() + ruleFile = path.join(self.basefolder,'rules/tarReadIndex.r') idx, source = self.compressionTreeModel.get_checked() if source == None: - self.widget.unpackStatusLabel.setText("ERROR: No *.irods.tar or *.irods.zip selected") + self.unpackStatusLabel.setText("ERROR: No *.irods.tar or *.irods.zip selected") return if not source.endswith(".irods.tar") and not source.endswith(".irods.zip"): - self.widget.unpackStatusLabel.setText("ERROR: No *.irods.tar or *.irods.zip selected") + self.unpackStatusLabel.setText("ERROR: No *.irods.tar or *.irods.zip selected") return params = { '*path': '"'+source+'"' } stdout, stderr = self.ic.executeRule(ruleFile, params) - self.widget.unpackStatusLabel.setText("INFO: Loaded Index of "+source) - indexPopup = irodsIndexPopup(self.ic, stdout[1:], source, self.widget.unpackStatusLabel) + self.unpackStatusLabel.setText("INFO: Loaded Index of "+source) + indexPopup = irodsIndexPopup(self.ic, stdout[1:], source, self.unpackStatusLabel) indexPopup.exec_() diff --git a/gui/irodsInfo.py b/gui/irodsInfo.py index 6b00abc59174cf52ebedcf828c3c2d745482cb8e..2a4da6e61aa03d10c3a136db04be0b4a0e028fac 100644 --- a/gui/irodsInfo.py +++ b/gui/irodsInfo.py @@ -2,36 +2,36 @@ from PyQt5 import QtWidgets from PyQt5 import QtCore from PyQt5 import QtGui -class irodsInfo(): - def __init__(self, widget, ic): +from gui.ui_files.tabInfo import Ui_tabInfo +class irodsInfo(QtWidgets.QWidget, Ui_tabInfo): + def __init__(self, ic): + super(irodsInfo, self).__init__() + super(irodsInfo, self).setupUi(self) self.ic = ic - self.widget = widget - - self.widget.refreshButton.clicked.connect(self.refreshInfo) + self.refreshButton.clicked.connect(self.refreshInfo) self.refreshInfo() def refreshInfo(self): - - self.widget.rescTable.setRowCount(0) - self.widget.setCursor(QtGui.QCursor(QtCore.Qt.WaitCursor)) + self.rescTable.setRowCount(0) + self.setCursor(QtGui.QCursor(QtCore.Qt.WaitCursor)) #irods Zone - self.widget.zoneLabel.setText(self.ic.session.zone) + self.zoneLabel.setText(self.ic.session.zone) #irods user - self.widget.userLabel.setText(self.ic.session.username) + self.userLabel.setText(self.ic.session.username) #irods user type and groups userType, userGroups = self.ic.getUserInfo() groupNames = [x for x in userGroups if not isinstance(x, int)] - self.widget.typeLabel.setText(userType[0]) - self.widget.groupsLabel.setText('\n'.join(groupNames)) + self.typeLabel.setText(userType[0]) + self.groupsLabel.setText('\n'.join(groupNames)) #defaul resource - self.widget.rescLabel.setText(self.ic.defaultResc) + self.rescLabel.setText(self.ic.defaultResc) #irods server and version - self.widget.serverLabel.setText(self.ic.session.host) - self.widget.versionLabel.setText( + self.serverLabel.setText(self.ic.session.host) + self.versionLabel.setText( '.'.join(str(num) for num in self.ic.session.server_version)) #irods resources resourceNames = self.ic.listResources() @@ -43,13 +43,13 @@ class irodsInfo(): else: resources.append((name, "no information")) - self.widget.rescTable.setRowCount(len(resources)) + self.rescTable.setRowCount(len(resources)) row = 0 for rescName, rescSize in resources: resc = self.ic.getResource(rescName) - self.widget.rescTable.setItem(row, 0, QtWidgets.QTableWidgetItem(rescName)) - self.widget.rescTable.setItem(row, 1, QtWidgets.QTableWidgetItem(rescSize)) - self.widget.rescTable.setItem(row, 2, QtWidgets.QTableWidgetItem(resc.status)) + self.rescTable.setItem(row, 0, QtWidgets.QTableWidgetItem(rescName)) + self.rescTable.setItem(row, 1, QtWidgets.QTableWidgetItem(rescSize)) + self.rescTable.setItem(row, 2, QtWidgets.QTableWidgetItem(resc.status)) row = row + 1 - self.widget.rescTable.resizeColumnsToContents() - self.widget.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) + self.rescTable.resizeColumnsToContents() + self.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) diff --git a/gui/irodsSearch.py b/gui/irodsSearch.py index bd1d1d98ea2b303b1a9a5bdc0616b2a3554efec6..97d35939da130dcfc21a323d06eb75b6c0bb9b95 100644 --- a/gui/irodsSearch.py +++ b/gui/irodsSearch.py @@ -2,13 +2,17 @@ from PyQt5 import QtWidgets, QtGui, QtCore from PyQt5.QtWidgets import QDialog, QMessageBox from PyQt5.uic import loadUi import os + from utils.utils import getDownloadDir +from gui.ui_files.searchDialog import Ui_searchDialog import logging -class irodsSearch(QDialog): + +class irodsSearch(QDialog, Ui_searchDialog): def __init__(self, ic, collTable): super(irodsSearch, self).__init__() - loadUi("gui/ui-files/searchDialog.ui", self) + super(irodsSearch, self).setupUi(self) + #loadUi("gui/ui-files/searchDialog.ui", self) self.ic = ic self.keys = [self.key1, self.key2, self.key3, self.key4, self.key5] self.vals = [self.val1, self.val2, self.val3, self.val4, self.val5] diff --git a/gui/irodsTicketLogin.py b/gui/irodsTicketLogin.py index ed2858d5c2a1e2a81d4d9d00337f00f7023e13ed..7b7e4ec0563edd8c4f5c7c1e47c27af9acaee66c 100644 --- a/gui/irodsTicketLogin.py +++ b/gui/irodsTicketLogin.py @@ -1,47 +1,49 @@ from PyQt5 import QtWidgets -from PyQt5.QtWidgets import QMainWindow, QHeaderView, QMessageBox +from PyQt5.QtWidgets import QMainWindow, QHeaderView, QMessageBox, QWidget from PyQt5 import QtCore -from PyQt5.uic import loadUi +import os + from utils.irodsConnectorAnonymous import irodsConnectorAnonymous from gui.checkableFsTree import checkableFsTreeModel from gui.popupWidgets import createDirectory from gui.dataTransfer import dataTransfer +from gui.ui_files.tabTicketAccess import Ui_tabTicketAccess -import os -class irodsTicketLogin(): - def __init__(self, widget): +class irodsTicketLogin(QWidget, Ui_tabTicketAccess): + def __init__(self): + super(irodsTicketLogin, self).__init__() + super(irodsTicketLogin, self).setupUi(self) self.ic = None self.coll = None - self.widget = widget # QTreeViews - self.dirmodel = checkableFsTreeModel(self.widget.localFsTreeView) - self.widget.localFsTreeView.setModel(self.dirmodel) + self.dirmodel = checkableFsTreeModel(self.localFsTreeView) + self.localFsTreeView.setModel(self.dirmodel) # Hide all columns except the Name - self.widget.localFsTreeView.setColumnHidden(1, True) - self.widget.localFsTreeView.setColumnHidden(2, True) - self.widget.localFsTreeView.setColumnHidden(3, True) - self.widget.localFsTreeView.header().setSectionResizeMode(QHeaderView.ResizeToContents) + self.localFsTreeView.setColumnHidden(1, True) + self.localFsTreeView.setColumnHidden(2, True) + self.localFsTreeView.setColumnHidden(3, True) + self.localFsTreeView.header().setSectionResizeMode(QHeaderView.ResizeToContents) home_location = QtCore.QStandardPaths.standardLocations( QtCore.QStandardPaths.HomeLocation)[0] index = self.dirmodel.setRootPath(home_location) - self.widget.localFsTreeView.setCurrentIndex(index) + self.localFsTreeView.setCurrentIndex(index) self.dirmodel.initial_expand() - self.widget.connectButton.clicked.connect(self.irodsSession) - self.widget.homeButton.clicked.connect(self.loadTable) - self.widget.createDirectoryButton.clicked.connect(self.createFolder) - self.widget.downloadButton.clicked.connect(self.download) - self.widget.downloadAllButton.clicked.connect(self.downloadAll) - self.widget.collTable.doubleClicked.connect(self.browse) - self.widget.collTable.clicked.connect(self.fillInfo) + self.connectButton.clicked.connect(self.irodsSession) + self.homeButton.clicked.connect(self.loadTable) + self.createDirectoryButton.clicked.connect(self.createFolder) + self.downloadButton.clicked.connect(self.download) + self.downloadAllButton.clicked.connect(self.downloadAll) + self.collTable.doubleClicked.connect(self.browse) + self.collTable.clicked.connect(self.fillInfo) self.enableButtons(False) - self.widget.connectButton.setEnabled(True) + self.connectButton.setEnabled(True) def irodsSession(self): - self.widget.infoLabel.clear() + self.infoLabel.clear() host = self.widget.serverEdit.text().strip() path = self.widget.pathEdit.text().strip() token = self.widget.ticketEdit.text().strip() @@ -52,56 +54,56 @@ class irodsTicketLogin(): self.loadTable() self.enableButtons(True) except Exception as e: - self.widget.infoLabel.setText("LOGIN ERROR: Check ticket and iRODS path.\n"+repr(e)) + self.infoLabel.setText("LOGIN ERROR: Check ticket and iRODS path.\n"+repr(e)) def enableButtons(self, enable): - self.widget.connectButton.setEnabled(enable) - self.widget.homeButton.setEnabled(enable) - self.widget.createDirectoryButton.setEnabled(enable) - self.widget.downloadButton.setEnabled(enable) - self.widget.downloadAllButton.setEnabled(enable) - self.widget.localFsTreeView.setEnabled(enable) + self.connectButton.setEnabled(enable) + self.homeButton.setEnabled(enable) + self.createDirectoryButton.setEnabled(enable) + self.downloadButton.setEnabled(enable) + self.downloadAllButton.setEnabled(enable) + self.localFsTreeView.setEnabled(enable) def loadTable(self, update = None): - self.widget.infoLabel.clear() + self.infoLabel.clear() if self.coll == None: - self.widget.infoLabel.setText("No data avalaible. Check ticket and iRODS path.") + self.infoLabel.setText("No data avalaible. Check ticket and iRODS path.") return if update == None or update == False: update = self.coll - self.widget.collTable.setRowCount(0) - self.widget.collTable.setRowCount(len(update.subcollections)+len(update.data_objects)) + self.collTable.setRowCount(0) + self.collTable.setRowCount(len(update.subcollections)+len(update.data_objects)) row = 0 for subcoll in update.subcollections: - self.widget.collTable.setItem(row, 0, + self.collTable.setItem(row, 0, QtWidgets.QTableWidgetItem(os.path.dirname(subcoll.path))) - self.widget.collTable.setItem(row, 1, + self.collTable.setItem(row, 1, QtWidgets.QTableWidgetItem(subcoll.name+"/")) - self.widget.collTable.setItem(1, 2, QtWidgets.QTableWidgetItem("")) - self.widget.collTable.setItem(1, 3, QtWidgets.QTableWidgetItem("")) + self.collTable.setItem(1, 2, QtWidgets.QTableWidgetItem("")) + self.collTable.setItem(1, 3, QtWidgets.QTableWidgetItem("")) row = row + 1 for obj in update.data_objects: - self.widget.collTable.setItem(row, 0, + self.collTable.setItem(row, 0, QtWidgets.QTableWidgetItem(os.path.dirname(obj.path))) - self.widget.collTable.setItem(row, 1, QtWidgets.QTableWidgetItem(obj.name)) - self.widget.collTable.setItem(row, 2, QtWidgets.QTableWidgetItem(str(obj.size))) - self.widget.collTable.setItem(row, 3, QtWidgets.QTableWidgetItem(str(obj.checksum))) - self.widget.collTable.setItem(row, 4, + self.collTable.setItem(row, 1, QtWidgets.QTableWidgetItem(obj.name)) + self.collTable.setItem(row, 2, QtWidgets.QTableWidgetItem(str(obj.size))) + self.collTable.setItem(row, 3, QtWidgets.QTableWidgetItem(str(obj.checksum))) + self.collTable.setItem(row, 4, QtWidgets.QTableWidgetItem(str(obj.modify_time))) row = row+1 - self.widget.collTable.resizeColumnsToContents() + self.collTable.resizeColumnsToContents() def browse(self, index): - self.widget.infoLabel.clear() + self.infoLabel.clear() col = index.column() row = index.row() - if self.widget.collTable.item(row, 0).text() != '': - path = self.widget.collTable.item(row, 0).text() - item = self.widget.collTable.item(row, 1).text() + if self.collTable.item(row, 0).text() != '': + path = self.collTable.item(row, 0).text() + item = self.collTable.item(row, 1).text() if item.endswith('/'): item = item[:-1] if self.ic.session.collections.exists(path+'/'+item): @@ -110,16 +112,16 @@ class irodsTicketLogin(): def fillInfo(self, index): - self.widget.previewBrowser.clear() - self.widget.metadataTable.setRowCount(0) + self.previewBrowser.clear() + self.metadataTable.setRowCount(0) row = index.row() - value = self.widget.collTable.item(row, 1).text() - path = self.widget.collTable.item(row, 0).text() + value = self.collTable.item(row, 1).text() + path = self.collTable.item(row, 0).text() try: self.__fillPreview(value, path) self.__fillMetadata(value, path) except Exception as e: - self.widget.infoLabel.setText(repr(e)) + self.infoLabel.setText(repr(e)) raise @@ -132,7 +134,7 @@ class irodsTicketLogin(): ['\n', 'Data:', '-----------------']+\ [o.name for o in coll.data_objects] previewString = '\n'.join(content) - self.widget.previewBrowser.append(previewString) + self.previewBrowser.append(previewString) else: # object subcoll = self.ic.session.collections.get(path) obj = [o for o in subcoll.data_objects if o.name == value][0] @@ -145,13 +147,13 @@ class irodsTicketLogin(): for i in range(20): out.append(readObj.read(50)) previewString = ''.join([line.decode('utf-8') for line in out]) - self.widget.previewBrowser.append(previewString) + self.previewBrowser.append(previewString) except Exception as e: - self.widget.previewBrowser.append(obj.path) - self.widget.previewBrowser.append(repr(e)) - self.widget.previewBrowser.append("Storage resource might be down.") + self.previewBrowser.append(obj.path) + self.previewBrowser.append(repr(e)) + self.previewBrowser.append("Storage resource might be down.") else: - self.widget.previewBrowser.append("No preview for "+obj.path) + self.previewBrowser.append("No preview for "+obj.path) def __fillMetadata(self, value, path): @@ -166,24 +168,24 @@ class irodsTicketLogin(): subcoll = self.ic.session.collections.get(path) obj = [o for o in subcoll.data_objects if o.name == value][0] metadata = obj.metadata.items() - self.widget.metadataTable.setRowCount(len(metadata)) + self.metadataTable.setRowCount(len(metadata)) row = 0 for item in metadata: - self.widget.metadataTable.setItem(row, 0, + self.metadataTable.setItem(row, 0, QtWidgets.QTableWidgetItem(item.name)) - self.widget.metadataTable.setItem(row, 1, + self.metadataTable.setItem(row, 1, QtWidgets.QTableWidgetItem(item.value)) - self.widget.metadataTable.setItem(row, 2, + self.metadataTable.setItem(row, 2, QtWidgets.QTableWidgetItem(item.units)) row = row+1 - self.widget.metadataTable.resizeColumnsToContents() + self.metadataTable.resizeColumnsToContents() def createFolder(self): - self.widget.infoLabel.clear() + self.infoLabel.clear() parent = self.dirmodel.get_checked() if parent == None: - self.widget.infoLabel.setText("No parent folder selected.") + self.infoLabel.setText("No parent folder selected.") else: createDirWidget = createDirectory(parent) createDirWidget.exec_() @@ -197,28 +199,28 @@ class irodsTicketLogin(): def download(self, allData = False): #irods data self.enableButtons(False) - self.widget.infoLabel.clear() + self.infoLabel.clear() if allData: collPath = os.path.dirname(self.coll.path) dataName = self.coll.name.strip('/') - elif self.widget.collTable.selectedIndexes(): - row = self.widget.collTable.selectedIndexes()[0].row() + elif self.collTable.selectedIndexes(): + row = self.collTable.selectedIndexes()[0].row() if row == -1: - self.widget.infoLabel.setText("No iRODS data selected.") + self.infoLabel.setText("No iRODS data selected.") self.enableButtons(True) return else: - collPath = self.widget.collTable.item(row, 0).text() - dataName = self.widget.collTable.item(row, 1).text().strip('/') + collPath = self.collTable.item(row, 0).text() + dataName = self.collTable.item(row, 1).text().strip('/') else: - self.widget.infoLabel.setText("No iRODS data selected.") + self.infoLabel.setText("No iRODS data selected.") self.enableButtons(True) return #fielsystem data destination = self.dirmodel.get_checked() if destination == None or os.path.isfile(destination): - self.widget.infoLabel.setText("No download folder selected.") + self.infoLabel.setText("No download folder selected.") self.enableButtons(True) return @@ -235,7 +237,7 @@ class irodsTicketLogin(): #Refreshes iRODS sub tree ad irodsIdx (set "None" if to skip) #Saves upload parameters if check box is set if succes == True: - self.widget.infoLabel.setText("INFO UPLOAD/DOWLOAD: completed.") + self.infoLabel.setText("INFO UPLOAD/DOWLOAD: completed.") self.uploadWindow = None # Release self.enableButtons(True) diff --git a/gui/irodsUpDownload.py b/gui/irodsUpDownload.py index 53435e7fce4b8db14b577ad9fe619c7a040b1de0..37e92e2d60c799b086827cc85d81272ea38fbf60 100644 --- a/gui/irodsUpDownload.py +++ b/gui/irodsUpDownload.py @@ -1,109 +1,111 @@ -from PyQt5.QtWidgets import QMainWindow, QHeaderView, QMessageBox +from PyQt5.QtWidgets import QMainWindow, QHeaderView, QMessageBox, QWidget from PyQt5 import QtCore import os +from utils.utils import getSize, saveIenv from gui.checkableFsTree import checkableFsTreeModel from gui.irodsTreeView import IrodsModel -from utils.utils import getSize, saveIenv from gui.continousUpload import contUpload - from gui.popupWidgets import irodsCreateCollection, createDirectory from gui.dataTransfer import dataTransfer +from gui.ui_files.tabUpDownload import Ui_tabUpDownload + +class irodsUpDownload(QWidget, Ui_tabUpDownload): + def __init__(self, ic, ienv): + super(irodsUpDownload, self).__init__() + super(irodsUpDownload, self).setupUi(self) -class irodsUpDownload(): - def __init__(self, widget, ic, ienv): self.ic = ic - self.widget = widget self.ienv = ienv self.syncing = False # syncing or not rescs = self.ic.listResources() # QTreeViews - self.dirmodel = checkableFsTreeModel(self.widget.localFsTreeView) - self.widget.localFsTreeView.setModel(self.dirmodel) + self.dirmodel = checkableFsTreeModel(self.localFsTreeView) + self.localFsTreeView.setModel(self.dirmodel) # Hide all columns except the Name - self.widget.localFsTreeView.setColumnHidden(1, True) - self.widget.localFsTreeView.setColumnHidden(2, True) - self.widget.localFsTreeView.setColumnHidden(3, True) - self.widget.localFsTreeView.header().setSectionResizeMode(QHeaderView.ResizeToContents) + self.localFsTreeView.setColumnHidden(1, True) + self.localFsTreeView.setColumnHidden(2, True) + self.localFsTreeView.setColumnHidden(3, True) + self.localFsTreeView.header().setSectionResizeMode(QHeaderView.ResizeToContents) home_location = QtCore.QStandardPaths.standardLocations( QtCore.QStandardPaths.HomeLocation)[0] index = self.dirmodel.setRootPath(home_location) - self.widget.localFsTreeView.setCurrentIndex(index) + self.localFsTreeView.setCurrentIndex(index) self.dirmodel.initial_expand() # iRODS zone info - self.widget.irodsZoneLabel.setText("/"+self.ic.session.zone+":") + self.irodsZoneLabel.setText("/"+self.ic.session.zone+":") # iRODS tree - self.irodsmodel = IrodsModel(ic, self.widget.irodsFsTreeView) - self.widget.irodsFsTreeView.setModel(self.irodsmodel) + self.irodsmodel = IrodsModel(ic, self.irodsFsTreeView) + self.irodsFsTreeView.setModel(self.irodsmodel) self.irodsRootColl = '/'+ic.session.zone self.irodsmodel.setHorizontalHeaderLabels([self.irodsRootColl, 'Level', 'iRODS ID', 'parent ID', 'type']) - self.widget.irodsFsTreeView.expanded.connect(self.irodsmodel.refreshSubTree) - self.widget.irodsFsTreeView.clicked.connect(self.irodsmodel.refreshSubTree) + self.irodsFsTreeView.expanded.connect(self.irodsmodel.refreshSubTree) + self.irodsFsTreeView.clicked.connect(self.irodsmodel.refreshSubTree) self.irodsmodel.initTree() - self.widget.irodsFsTreeView.setHeaderHidden(True) - self.widget.irodsFsTreeView.header().setDefaultSectionSize(180) - self.widget.irodsFsTreeView.setColumnHidden(1, True) - self.widget.irodsFsTreeView.setColumnHidden(2, True) - self.widget.irodsFsTreeView.setColumnHidden(3, True) - self.widget.irodsFsTreeView.setColumnHidden(4, True) + self.irodsFsTreeView.setHeaderHidden(True) + self.irodsFsTreeView.header().setDefaultSectionSize(180) + self.irodsFsTreeView.setColumnHidden(1, True) + self.irodsFsTreeView.setColumnHidden(2, True) + self.irodsFsTreeView.setColumnHidden(3, True) + self.irodsFsTreeView.setColumnHidden(4, True) # Buttons - self.widget.UploadButton.clicked.connect(self.upload) - self.widget.DownloadButton.clicked.connect(self.download) - #self.widget.ContUplBut.clicked.connect(self.cont_upload) - self.widget.ContUplBut.setHidden(True) #fFor first release hide special buttons - self.widget.uplSetGB_2.setHidden(True) - self.widget.createFolderButton.clicked.connect(self.createFolder) - self.widget.createCollButton.clicked.connect(self.createCollection) + self.UploadButton.clicked.connect(self.upload) + self.DownloadButton.clicked.connect(self.download) + #self.ContUplBut.clicked.connect(self.cont_upload) + self.ContUplBut.setHidden(True) #fFor first release hide special buttons + self.uplSetGB_2.setHidden(True) + self.createFolderButton.clicked.connect(self.createFolder) + self.createCollButton.clicked.connect(self.createCollection) # Resource selector available_resources = self.ic.listResources() - self.widget.resourceBox.clear() - self.widget.resourceBox.addItems(available_resources) + self.resourceBox.clear() + self.resourceBox.addItems(available_resources) if ("default_resource_name" in ienv) and \ (ienv["default_resource_name"] != "") and \ (ienv["default_resource_name"] in available_resources): - index = self.widget.resourceBox.findText(ienv["default_resource_name"]) - self.widget.resourceBox.setCurrentIndex(index) + index = self.resourceBox.findText(ienv["default_resource_name"]) + self.resourceBox.setCurrentIndex(index) # Continious upload settings if ienv["irods_host"] in ["scomp1461.wur.nl", "npec-icat.irods.surfsara.nl"]: - #self.widget.uplSetGB_2.setVisible(True) + #self.uplSetGB_2.setVisible(True) if ("ui_remLocalcopy" in ienv): - self.widget.rLocalcopyCB.setChecked(ienv["ui_remLocalcopy"]) + self.rLocalcopyCB.setChecked(ienv["ui_remLocalcopy"]) if ("ui_uplMode" in ienv): uplMode = ienv["ui_uplMode"] if uplMode == "f500": - self.widget.uplF500RB.setChecked(True) + self.uplF500RB.setChecked(True) elif uplMode == "meta": - self.widget.uplMetaRB.setChecked(True) + self.uplMetaRB.setChecked(True) else: - self.widget.uplAllRB.setChecked(True) - #self.widget.rLocalcopyCB.stateChanged.connect(self.saveUIset) - #self.widget.uplF500RB.toggled.connect(self.saveUIset) - #self.widget.uplMetaRB.toggled.connect(self.saveUIset) - #self.widget.uplAllRB.toggled.connect(self.saveUIset) + self.uplAllRB.setChecked(True) + #self.rLocalcopyCB.stateChanged.connect(self.saveUIset) + #self.uplF500RB.toggled.connect(self.saveUIset) + #self.uplMetaRB.toggled.connect(self.saveUIset) + #self.uplAllRB.toggled.connect(self.saveUIset) else: - self.widget.uplSetGB_2.hide() - self.widget.ContUplBut.hide() + self.uplSetGB_2.hide() + self.ContUplBut.hide() def enableButtons(self, enable): - self.widget.UploadButton.setEnabled(enable) - self.widget.DownloadButton.setEnabled(enable) - self.widget.ContUplBut.setEnabled(enable) - self.widget.uplSetGB_2.setEnabled(enable) - self.widget.createFolderButton.setEnabled(enable) - self.widget.createCollButton.setEnabled(enable) - self.widget.localFsTreeView.setEnabled(enable) - self.widget.localFsTreeView.setEnabled(enable) + self.UploadButton.setEnabled(enable) + self.DownloadButton.setEnabled(enable) + self.ContUplBut.setEnabled(enable) + self.uplSetGB_2.setEnabled(enable) + self.createFolderButton.setEnabled(enable) + self.createCollButton.setEnabled(enable) + self.localFsTreeView.setEnabled(enable) + self.localFsTreeView.setEnabled(enable) def infoPopup(self, message): @@ -117,15 +119,15 @@ class irodsUpDownload(): def getResource(self): - return self.widget.resourceBox.currentText() + return self.resourceBox.currentText() def getRemLocalCopy(self): - return self.widget.rLocalcopyCB.isChecked() + return self.rLocalcopyCB.isChecked() def getUplMode(self): - if self.widget.uplF500RB.isChecked(): + if self.uplF500RB.isChecked(): uplMode = "f500" - elif self.widget.uplMetaRB.isChecked(): + elif self.uplMetaRB.isChecked(): uplMode = "meta" else: # Default uplMode = "all" @@ -135,7 +137,7 @@ class irodsUpDownload(): def createFolder(self): parent = self.dirmodel.get_checked() if parent == None: - self.widget.errorLabel.setText("No parent folder selected.") + self.errorLabel.setText("No parent folder selected.") else: createDirWidget = createDirectory(parent) createDirWidget.exec_() @@ -145,7 +147,7 @@ class irodsUpDownload(): def createCollection(self): idx, parent = self.irodsmodel.get_checked() if parent == None: - self.widget.errorLabel.setText("No parent collection selected.") + self.errorLabel.setText("No parent collection selected.") else: creteCollWidget = irodsCreateCollection(parent, self.ic) creteCollWidget.exec_() @@ -155,15 +157,15 @@ class irodsUpDownload(): # Upload a file/folder to IRODS and refresh the TreeView def upload(self): self.enableButtons(False) - self.widget.errorLabel.clear() + self.errorLabel.clear() (fsSource, irodsDestIdx, irodsDestPath) = self.getPathsFromTrees() if fsSource == None or irodsDestPath == None: - self.widget.errorLabel.setText( + self.errorLabel.setText( "ERROR Up/Download: Please select source and destination.") self.enableButtons(True) return if not self.ic.session.collections.exists(irodsDestPath): - self.widget.errorLabel.setText( + self.errorLabel.setText( "ERROR UPLOAD: iRODS destination is file, must be collection.") self.enableButtons(True) return @@ -180,25 +182,25 @@ class irodsUpDownload(): if succes == True: if irodsIdx != None: self.irodsmodel.refreshSubTree(irodsIdx) - if self.widget.saveSettings.isChecked(): + if self.saveSettings.isChecked(): print("FINISH UPLOAD/DOWNLOAD: saving ui parameters.") self.saveUIset() - self.widget.errorLabel.setText("INFO UPLOAD/DOWLOAD: completed.") + self.errorLabel.setText("INFO UPLOAD/DOWLOAD: completed.") self.uploadWindow = None # Release self.enableButtons(True) def download(self): self.enableButtons(False) - self.widget.errorLabel.clear() + self.errorLabel.clear() (fsDest, irodsSourceIdx, irodsSourcePath) = self.getPathsFromTrees() if fsDest == None or irodsSourcePath == None: - self.widget.errorLabel.setText( + self.errorLabel.setText( "ERROR Up/Download: Please select source and destination.") self.enableButtons(True) return if os.path.isfile(fsDest): - self.widget.errorLabel.setText( + self.errorLabel.setText( "ERROR DOWNLOAD: Local Destination is file, must be folder.") self.enableButtons(True) return diff --git a/gui/mainmenu.py b/gui/mainmenu.py index f731212f3412d081c39446665e5d2652cc4ed94e..a6d49b7a9cbe61b04add50816951f3fc696f9bf6 100644 --- a/gui/mainmenu.py +++ b/gui/mainmenu.py @@ -1,9 +1,10 @@ from PyQt5 import QtWidgets -from PyQt5.QtWidgets import QDialog, QFileDialog, QApplication, QMainWindow, QMessageBox, QPushButton +from PyQt5.QtWidgets import QDialog, QFileDialog, QApplication, QMainWindow, QMessageBox, QPushButton, QWidget from PyQt5.uic import loadUi from PyQt5 import QtCore from PyQt5 import QtGui + from gui.popupWidgets import irodsCreateCollection from gui.irodsBrowser import irodsBrowser from gui.elabUpload import elabUpload @@ -16,11 +17,15 @@ from gui.irodsTicketLogin import irodsTicketLogin from utils.utils import saveIenv import sys +from gui.ui_files.MainMenu import Ui_MainWindow + -class mainmenu(QMainWindow): +class mainmenu(QMainWindow, Ui_MainWindow): def __init__(self, widget, ic, ienv): super(mainmenu, self).__init__() - loadUi("gui/ui-files/MainMenu.ui", self) + super(mainmenu, self).setupUi(self) + #loadUi("gui/ui_files/MainMenu.ui", self) + self.ic = ic self.widget = widget #stackedWidget self.ienv = ienv @@ -32,9 +37,9 @@ class mainmenu(QMainWindow): if not ienv or not ic: self.actionSearch.setEnabled(False) self.actionSaveConfig.setEnabled(False) - ticketAccessWidget = loadUi("gui/ui-files/tabTicketAccess.ui") - self.tabWidget.addTab(ticketAccessWidget, "Ticket Access") - self.ticketAccessTab = irodsTicketLogin(ticketAccessWidget) + self.ticketAccessTab = irodsTicketLogin() + #ticketAccessWidget = loadUi("gui/ui_files/tabTicketAccess.ui") + self.tabWidget.addTab(self.ticketAccessTab, "Ticket Access") else: self.actionSearch.triggered.connect(self.search) @@ -42,41 +47,36 @@ class mainmenu(QMainWindow): #self.actionExportMetadata.triggered.connect(self.exportMeta) #needed for Search - self.browserWidget = loadUi("gui/ui-files/tabBrowser.ui") - self.tabWidget.addTab(self.browserWidget, "Browser") - self.irodsBrowser = irodsBrowser(self.browserWidget, ic) - + self.irodsBrowser = irodsBrowser(ic) + self.tabWidget.addTab(self.irodsBrowser, "Browser") if ("ui_tabs" in ienv) and (ienv["ui_tabs"] != ""): - # Setup up/download tab, index 1 if ("tabUpDownload" in ienv["ui_tabs"]): - updownloadWidget = loadUi("gui/ui-files/tabUpDownload.ui") - self.tabWidget.addTab(updownloadWidget, "Up and Download") - self.updownload = irodsUpDownload(updownloadWidget, ic, self.ienv) + self.updownload = irodsUpDownload(ic, self.ienv) + self.tabWidget.addTab(self.updownload, "Up and Download") # Elabjournal tab, index 2 if ("tabELNData" in ienv["ui_tabs"]): - elabUploadWidget = loadUi("gui/ui-files/tabELNData.ui") - self.tabWidget.addTab(elabUploadWidget, "ELN Data upload") - self.elnTab = elabUpload(elabUploadWidget, ic) + self.elnTab = elabUpload(ic) + #elabUploadWidget = loadUi("gui/ui_files/tabELNData.ui") + self.tabWidget.addTab(self.elnTab, "ELN Data upload") # Data compression tab, index 3 if ("tabDataCompression" in ienv["ui_tabs"]): - dataCompressWidget = loadUi("gui/ui-files/tabDataCompression.ui") - self.tabWidget.addTab(dataCompressWidget, "Compress/bundle data") - self.compressionTab = irodsDataCompression(dataCompressWidget, ic, self.ienv) + self.compressionTab = irodsDataCompression(ic, self.ienv) + #dataCompressWidget = loadUi("gui/ui_files/tabDataCompression.ui") + self.tabWidget.addTab(self.compressionTab, "Compress/bundle data") # Grant access by tickets, index 4 if ("tabCreateTicket" in ienv["ui_tabs"]): - createTicketWidget = loadUi("gui/ui-files/tabTicketCreate.ui") - self.tabWidget.addTab(createTicketWidget, "Create access tokens") - self.createTicket = irodsCreateTicket(createTicketWidget, ic, self.ienv) + self.createTicket = irodsCreateTicket(ic, self.ienv) + #createTicketWidget = loadUi("gui/ui_files/tabTicketCreate.ui") + self.tabWidget.addTab(self.createTicket, "Create access tokens") #general info - self.infoWidget = loadUi("gui/ui-files/tabInfo.ui") - self.tabWidget.addTab(self.infoWidget, "Info") - self.irodsInfo = irodsInfo(self.infoWidget, ic) - + self.irodsInfo = irodsInfo(ic) + #self.infoWidget = loadUi("gui/ui_files/tabInfo.ui") + self.tabWidget.addTab(self.irodsInfo, "Info") self.tabWidget.setCurrentIndex(0) #connect functions @@ -110,7 +110,7 @@ class mainmenu(QMainWindow): pass def search(self): - search = irodsSearch(self.ic, self.browserWidget.collTable) + search = irodsSearch(self.ic, self.irodsBrowser.collTable) search.exec_() diff --git a/gui/popupWidgets.py b/gui/popupWidgets.py index b74b6242177077bf42dc007558d5f8795bff5283..c1b7c5a6de7f8020edd555bb00848151dfdef115 100644 --- a/gui/popupWidgets.py +++ b/gui/popupWidgets.py @@ -10,10 +10,14 @@ import json import datetime import logging -class irodsCreateCollection(QDialog): +from gui.ui_files.createCollection import Ui_createCollection +from gui.ui_files.irodsIndexPopup import Ui_irodsIndexPopup + +class irodsCreateCollection(QDialog, Ui_createCollection): def __init__(self, parent, ic): super(irodsCreateCollection, self).__init__() - loadUi("gui/ui-files/createCollection.ui", self) + super(irodsCreateCollection, self).setupUi(self) + #loadUi("gui/ui-files/createCollection.ui", self) self.setWindowTitle("Create iRODS collection") self.ic = ic self.parent = parent @@ -33,10 +37,11 @@ class irodsCreateCollection(QDialog): self.errorLabel.setText("ERROR: insufficient rights.") -class createDirectory(QDialog): +class createDirectory(QDialog, Ui_createCollection): def __init__(self, parent): super(createDirectory, self).__init__() - loadUi("gui/ui-files/createCollection.ui", self) + super(createDirectory, self).setupUi(self) + #loadUi("gui/ui-files/createCollection.ui", self) self.setWindowTitle("Create directory") self.parent = parent self.label.setText(self.parent+os.sep) @@ -55,10 +60,11 @@ class createDirectory(QDialog): self.errorLabel.setText("ERROR: insufficient rights.") -class irodsIndexPopup(QDialog): +class irodsIndexPopup(QDialog, Ui_irodsIndexPopup): def __init__(self, ic, irodsTarIndexFileList, tarFilePath, statusLabel): super(irodsIndexPopup, self).__init__() - loadUi("gui/ui-files/irodsIndexPopup.ui", self) + super(irodsIndexPopup, self).setupUi(self) + #loadUi("gui/ui-files/irodsIndexPopup.ui", self) self.setWindowTitle("iRODS Tar/Zip index.") self.indexLabel.setText("Index of " + tarFilePath + ":") self.tabWidget.setCurrentIndex(0) diff --git a/gui/ui_files/MainMenu.py b/gui/ui_files/MainMenu.py new file mode 100644 index 0000000000000000000000000000000000000000..6d780061453d8aa0577abc400701fdf79baa804f --- /dev/null +++ b/gui/ui_files/MainMenu.py @@ -0,0 +1,115 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'D:\irods-clientsb\gui\ui_files\MainMenu.ui' +# +# Created by: PyQt5 UI code generator 5.15.4 +# +# WARNING: Any manual changes made to this file will be lost when pyuic5 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt5 import QtCore, QtGui, QtWidgets + + +class Ui_MainWindow(object): + def setupUi(self, MainWindow): + MainWindow.setObjectName("MainWindow") + MainWindow.resize(1300, 850) + MainWindow.setMinimumSize(QtCore.QSize(1300, 850)) + MainWindow.setStyleSheet("QWidget\n" +"{\n" +" color: rgb(86, 184, 139);\n" +" background-color: rgb(54, 54, 54);\n" +" selection-background-color: rgb(58, 152, 112);\n" +"}\n" +"\n" +"QLabel#globalErrorLabel\n" +"{\n" +" color: rgb(217, 174, 23);\n" +"}\n" +"\n" +"QTabBar::tab:top:selected {\n" +" background-color: rgb(58, 152, 112);\n" +" color: rgb(54, 54, 54);\n" +"}\n" +"") + self.centralwidget = QtWidgets.QWidget(MainWindow) + self.centralwidget.setStyleSheet("") + self.centralwidget.setObjectName("centralwidget") + self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget) + self.verticalLayout.setObjectName("verticalLayout") + self.tabWidget = QtWidgets.QTabWidget(self.centralwidget) + self.tabWidget.setMinimumSize(QtCore.QSize(600, 300)) + self.tabWidget.setObjectName("tabWidget") + self.verticalLayout.addWidget(self.tabWidget) + self.globalErrorLabel = QtWidgets.QLabel(self.centralwidget) + self.globalErrorLabel.setStyleSheet("") + self.globalErrorLabel.setText("") + self.globalErrorLabel.setObjectName("globalErrorLabel") + self.verticalLayout.addWidget(self.globalErrorLabel) + MainWindow.setCentralWidget(self.centralwidget) + self.menubar = QtWidgets.QMenuBar(MainWindow) + self.menubar.setGeometry(QtCore.QRect(0, 0, 1300, 21)) + self.menubar.setObjectName("menubar") + self.menuMenu = QtWidgets.QMenu(self.menubar) + font = QtGui.QFont() + font.setPointSize(13) + font.setBold(False) + font.setWeight(50) + self.menuMenu.setFont(font) + self.menuMenu.setObjectName("menuMenu") + self.menuOptions = QtWidgets.QMenu(self.menubar) + font = QtGui.QFont() + font.setPointSize(13) + self.menuOptions.setFont(font) + self.menuOptions.setObjectName("menuOptions") + MainWindow.setMenuBar(self.menubar) + self.statusbar = QtWidgets.QStatusBar(MainWindow) + self.statusbar.setObjectName("statusbar") + MainWindow.setStatusBar(self.statusbar) + self.actionCloseSession = QtWidgets.QAction(MainWindow) + font = QtGui.QFont() + self.actionCloseSession.setFont(font) + self.actionCloseSession.setObjectName("actionCloseSession") + self.actionExit = QtWidgets.QAction(MainWindow) + font = QtGui.QFont() + self.actionExit.setFont(font) + self.actionExit.setObjectName("actionExit") + self.actionSearch = QtWidgets.QAction(MainWindow) + font = QtGui.QFont() + self.actionSearch.setFont(font) + self.actionSearch.setObjectName("actionSearch") + self.actionSaveConfig = QtWidgets.QAction(MainWindow) + font = QtGui.QFont() + self.actionSaveConfig.setFont(font) + self.actionSaveConfig.setObjectName("actionSaveConfig") + self.menuMenu.addAction(self.actionCloseSession) + self.menuMenu.addAction(self.actionExit) + self.menuOptions.addAction(self.actionSearch) + self.menuOptions.addAction(self.actionSaveConfig) + self.menubar.addAction(self.menuMenu.menuAction()) + self.menubar.addAction(self.menuOptions.menuAction()) + + self.retranslateUi(MainWindow) + self.tabWidget.setCurrentIndex(-1) + QtCore.QMetaObject.connectSlotsByName(MainWindow) + + def retranslateUi(self, MainWindow): + _translate = QtCore.QCoreApplication.translate + MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) + self.menuMenu.setTitle(_translate("MainWindow", "Menu")) + self.menuOptions.setTitle(_translate("MainWindow", "Options")) + self.actionCloseSession.setText(_translate("MainWindow", "Close Session")) + self.actionExit.setText(_translate("MainWindow", "Exit")) + self.actionSearch.setText(_translate("MainWindow", "Search")) + self.actionSaveConfig.setText(_translate("MainWindow", "Save configuration")) + + +if __name__ == "__main__": + import sys + app = QtWidgets.QApplication(sys.argv) + MainWindow = QtWidgets.QMainWindow() + ui = Ui_MainWindow() + ui.setupUi(MainWindow) + MainWindow.show() + sys.exit(app.exec_()) diff --git a/gui/ui-files/MainMenu.ui b/gui/ui_files/MainMenu.ui similarity index 100% rename from gui/ui-files/MainMenu.ui rename to gui/ui_files/MainMenu.ui diff --git a/gui/ui_files/createCollection.py b/gui/ui_files/createCollection.py new file mode 100644 index 0000000000000000000000000000000000000000..3ae10c78692fb53cccb28b8b374576d2180f57f6 --- /dev/null +++ b/gui/ui_files/createCollection.py @@ -0,0 +1,74 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'D:\irods-clientsb\gui\ui_files\createCollection.ui' +# +# Created by: PyQt5 UI code generator 5.15.4 +# +# WARNING: Any manual changes made to this file will be lost when pyuic5 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt5 import QtCore, QtGui, QtWidgets + + +class Ui_createCollection(object): + def setupUi(self, createCollection): + createCollection.setObjectName("createCollection") + createCollection.resize(500, 200) + createCollection.setMinimumSize(QtCore.QSize(500, 200)) + createCollection.setMaximumSize(QtCore.QSize(500, 200)) + createCollection.setStyleSheet("QWidget\n" +"{\n" +" color: rgb(86, 184, 139);\n" +" background-color: rgb(54, 54, 54);\n" +"}\n" +"\n" +"QLabel#errorLabel\n" +"{\n" +" color: rgb(217, 174, 23);\n" +"}") + self.verticalLayout = QtWidgets.QVBoxLayout(createCollection) + self.verticalLayout.setObjectName("verticalLayout") + self.horizontalLayout = QtWidgets.QHBoxLayout() + self.horizontalLayout.setObjectName("horizontalLayout") + self.label = QtWidgets.QLabel(createCollection) + self.label.setObjectName("label") + self.horizontalLayout.addWidget(self.label) + spacerItem = QtWidgets.QSpacerItem(10, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout.addItem(spacerItem) + self.collPathLine = QtWidgets.QLineEdit(createCollection) + self.collPathLine.setObjectName("collPathLine") + self.horizontalLayout.addWidget(self.collPathLine) + self.verticalLayout.addLayout(self.horizontalLayout) + self.errorLabel = QtWidgets.QLabel(createCollection) + self.errorLabel.setStyleSheet("") + self.errorLabel.setText("") + self.errorLabel.setObjectName("errorLabel") + self.verticalLayout.addWidget(self.errorLabel) + spacerItem1 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) + self.verticalLayout.addItem(spacerItem1) + self.buttonBox = QtWidgets.QDialogButtonBox(createCollection) + self.buttonBox.setOrientation(QtCore.Qt.Horizontal) + self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok) + self.buttonBox.setObjectName("buttonBox") + self.verticalLayout.addWidget(self.buttonBox) + + self.retranslateUi(createCollection) + self.buttonBox.accepted.connect(createCollection.accept) + self.buttonBox.rejected.connect(createCollection.reject) + QtCore.QMetaObject.connectSlotsByName(createCollection) + + def retranslateUi(self, createCollection): + _translate = QtCore.QCoreApplication.translate + createCollection.setWindowTitle(_translate("createCollection", "New Collection")) + self.label.setText(_translate("createCollection", "iRODS path /")) + + +if __name__ == "__main__": + import sys + app = QtWidgets.QApplication(sys.argv) + createCollection = QtWidgets.QDialog() + ui = Ui_createCollection() + ui.setupUi(createCollection) + createCollection.show() + sys.exit(app.exec_()) diff --git a/gui/ui-files/createCollection.ui b/gui/ui_files/createCollection.ui similarity index 94% rename from gui/ui-files/createCollection.ui rename to gui/ui_files/createCollection.ui index 10ae8953fc34c4ad582ca1c6d60cb20dee78391e..4ce3653246505bcd017f92741d1b9d647d23dbd1 100644 --- a/gui/ui-files/createCollection.ui +++ b/gui/ui_files/createCollection.ui @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> - <class>Dialog</class> - <widget class="QDialog" name="Dialog"> + <class>createCollection</class> + <widget class="QDialog" name="createCollection"> <property name="geometry"> <rect> <x>0</x> @@ -111,7 +111,7 @@ QLabel#errorLabel <connection> <sender>buttonBox</sender> <signal>accepted()</signal> - <receiver>Dialog</receiver> + <receiver>createCollection</receiver> <slot>accept()</slot> <hints> <hint type="sourcelabel"> @@ -127,7 +127,7 @@ QLabel#errorLabel <connection> <sender>buttonBox</sender> <signal>rejected()</signal> - <receiver>Dialog</receiver> + <receiver>createCollection</receiver> <slot>reject()</slot> <hints> <hint type="sourcelabel"> diff --git a/gui/ui_files/dataTransferState.py b/gui/ui_files/dataTransferState.py new file mode 100644 index 0000000000000000000000000000000000000000..4eb9ff04c50c6f4eb54edc0379cc0ef006230292 --- /dev/null +++ b/gui/ui_files/dataTransferState.py @@ -0,0 +1,107 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'D:\irods-clientsb\gui\ui_files\dataTransferState.ui' +# +# Created by: PyQt5 UI code generator 5.15.4 +# +# WARNING: Any manual changes made to this file will be lost when pyuic5 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt5 import QtCore, QtGui, QtWidgets + + +class Ui_dataTransferState(object): + def setupUi(self, dataTransferState): + dataTransferState.setObjectName("dataTransferState") + dataTransferState.resize(443, 206) + dataTransferState.setStyleSheet("QWidget\n" +"{\n" +" color: rgb(86, 184, 139);\n" +" background-color: rgb(54, 54, 54);\n" +" selection-background-color: rgb(58, 152, 112);\n" +"}") + self.gridLayout_2 = QtWidgets.QGridLayout(dataTransferState) + self.gridLayout_2.setObjectName("gridLayout_2") + self.groupBox = QtWidgets.QGroupBox(dataTransferState) + self.groupBox.setTitle("") + self.groupBox.setObjectName("groupBox") + self.gridLayout = QtWidgets.QGridLayout(self.groupBox) + self.gridLayout.setObjectName("gridLayout") + self.cancelBtn = QtWidgets.QPushButton(self.groupBox) + self.cancelBtn.setObjectName("cancelBtn") + self.gridLayout.addWidget(self.cancelBtn, 1, 3, 1, 1) + self.confirmBtn = QtWidgets.QPushButton(self.groupBox) + self.confirmBtn.setObjectName("confirmBtn") + self.gridLayout.addWidget(self.confirmBtn, 1, 4, 1, 1) + self.statusLbl = QtWidgets.QLabel(self.groupBox) + self.statusLbl.setObjectName("statusLbl") + self.gridLayout.addWidget(self.statusLbl, 0, 3, 1, 1) + self.gridLayout_2.addWidget(self.groupBox, 4, 0, 1, 4) + self.verticalLayout = QtWidgets.QVBoxLayout() + self.verticalLayout.setObjectName("verticalLayout") + self.loadingLbl = QtWidgets.QLabel(dataTransferState) + self.loadingLbl.setMinimumSize(QtCore.QSize(100, 100)) + self.loadingLbl.setText("") + self.loadingLbl.setObjectName("loadingLbl") + self.verticalLayout.addWidget(self.loadingLbl) + self.gridLayout_2.addLayout(self.verticalLayout, 0, 2, 4, 2) + self.horizontalLayout_2 = QtWidgets.QHBoxLayout() + self.horizontalLayout_2.setObjectName("horizontalLayout_2") + self.numDiffLabel = QtWidgets.QLabel(dataTransferState) + self.numDiffLabel.setObjectName("numDiffLabel") + self.horizontalLayout_2.addWidget(self.numDiffLabel) + self.ChecksumLbl = QtWidgets.QLabel(dataTransferState) + self.ChecksumLbl.setFrameShape(QtWidgets.QFrame.NoFrame) + self.ChecksumLbl.setObjectName("ChecksumLbl") + self.horizontalLayout_2.addWidget(self.ChecksumLbl) + spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout_2.addItem(spacerItem) + self.ChecksumSizeLbl = QtWidgets.QLabel(dataTransferState) + self.ChecksumSizeLbl.setObjectName("ChecksumSizeLbl") + self.horizontalLayout_2.addWidget(self.ChecksumSizeLbl) + spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout_2.addItem(spacerItem1) + self.gridLayout_2.addLayout(self.horizontalLayout_2, 0, 0, 2, 1) + self.horizontalLayout = QtWidgets.QHBoxLayout() + self.horizontalLayout.setObjectName("horizontalLayout") + self.numAddLabel = QtWidgets.QLabel(dataTransferState) + self.numAddLabel.setObjectName("numAddLabel") + self.horizontalLayout.addWidget(self.numAddLabel) + self.newFiles = QtWidgets.QLabel(dataTransferState) + self.newFiles.setObjectName("newFiles") + self.horizontalLayout.addWidget(self.newFiles) + spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout.addItem(spacerItem2) + self.newFSizeLbl = QtWidgets.QLabel(dataTransferState) + self.newFSizeLbl.setObjectName("newFSizeLbl") + self.horizontalLayout.addWidget(self.newFSizeLbl) + spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout.addItem(spacerItem3) + self.gridLayout_2.addLayout(self.horizontalLayout, 2, 0, 2, 1) + + self.retranslateUi(dataTransferState) + QtCore.QMetaObject.connectSlotsByName(dataTransferState) + + def retranslateUi(self, dataTransferState): + _translate = QtCore.QCoreApplication.translate + dataTransferState.setWindowTitle(_translate("dataTransferState", "Dialog")) + self.cancelBtn.setText(_translate("dataTransferState", "Cancel")) + self.confirmBtn.setText(_translate("dataTransferState", "Upload")) + self.statusLbl.setText(_translate("dataTransferState", "Loading")) + self.numDiffLabel.setText(_translate("dataTransferState", "0")) + self.ChecksumLbl.setText(_translate("dataTransferState", "Items to update (overwrite)")) + self.ChecksumSizeLbl.setText(_translate("dataTransferState", "0")) + self.numAddLabel.setText(_translate("dataTransferState", "0")) + self.newFiles.setText(_translate("dataTransferState", "New items ")) + self.newFSizeLbl.setText(_translate("dataTransferState", "0")) + + +if __name__ == "__main__": + import sys + app = QtWidgets.QApplication(sys.argv) + dataTransferState = QtWidgets.QDialog() + ui = Ui_dataTransferState() + ui.setupUi(dataTransferState) + dataTransferState.show() + sys.exit(app.exec_()) diff --git a/gui/ui-files/dataTransferState.ui b/gui/ui_files/dataTransferState.ui similarity index 98% rename from gui/ui-files/dataTransferState.ui rename to gui/ui_files/dataTransferState.ui index d97ab256d3d43112c13f4dfb82831c3913e48f96..905ebd7d01d54636c5cc7e25357f53b107391224 100644 --- a/gui/ui-files/dataTransferState.ui +++ b/gui/ui_files/dataTransferState.ui @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> - <class>Dialog</class> - <widget class="QDialog" name="Dialog"> + <class>dataTransferState</class> + <widget class="QDialog" name="dataTransferState"> <property name="geometry"> <rect> <x>0</x> diff --git a/gui/ui_files/irodsIndexPopup.py b/gui/ui_files/irodsIndexPopup.py new file mode 100644 index 0000000000000000000000000000000000000000..fc947a5b51dec5c1edf27d5666e67ba06d40a1c3 --- /dev/null +++ b/gui/ui_files/irodsIndexPopup.py @@ -0,0 +1,163 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'D:\irods-clientsb\gui\ui_files\irodsIndexPopup.ui' +# +# Created by: PyQt5 UI code generator 5.15.4 +# +# WARNING: Any manual changes made to this file will be lost when pyuic5 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt5 import QtCore, QtGui, QtWidgets + + +class Ui_irodsIndexPopup(object): + def setupUi(self, irodsIndexPopup): + irodsIndexPopup.setObjectName("irodsIndexPopup") + irodsIndexPopup.resize(1000, 480) + irodsIndexPopup.setStyleSheet("QWidget\n" +"{\n" +" color: rgb(86, 184, 139);\n" +" background-color: rgb(54, 54, 54);\n" +" selection-background-color: rgb(58, 152, 112);\n" +"}\n" +"\n" +"QTabWidget\n" +"{\n" +" background-color: rgb(54, 54, 54);\n" +" selection-background-color: rgb(58, 152, 112);\n" +"}\n" +"\n" +"QTabBar::tab:top:selected {\n" +" background-color: rgb(58, 152, 112);\n" +" color: rgb(54, 54, 54);\n" +"}\n" +"\n" +"QTableWidget\n" +"{\n" +"background-color: rgb(85, 87, 83);\n" +"selection-background-color: rgb(58, 152, 112);\n" +"}\n" +"\n" +"QLabel#indexLabel\n" +"{\n" +" background-color: rgb(85, 87, 83);\n" +"}\n" +"\n" +"QLabel#collLabel\n" +"{\n" +" background-color: rgb(85, 87, 83);\n" +"}\n" +"\n" +"QLabel#errorLabel\n" +"{\n" +" color: rgb(217, 174, 23);\n" +"}\n" +"\n" +"QPushButton#closeButton\n" +"{\n" +" background-color: rgb(54, 54, 54);\n" +" color: rgb(58, 152, 112);\n" +"}") + self.verticalLayout = QtWidgets.QVBoxLayout(irodsIndexPopup) + self.verticalLayout.setObjectName("verticalLayout") + self.tabWidget = QtWidgets.QTabWidget(irodsIndexPopup) + self.tabWidget.setStyleSheet("") + self.tabWidget.setObjectName("tabWidget") + self.tab_2 = QtWidgets.QWidget() + self.tab_2.setObjectName("tab_2") + self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.tab_2) + self.verticalLayout_3.setObjectName("verticalLayout_3") + spacerItem = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Maximum) + self.verticalLayout_3.addItem(spacerItem) + self.collLabel = QtWidgets.QLabel(self.tab_2) + self.collLabel.setText("") + self.collLabel.setObjectName("collLabel") + self.verticalLayout_3.addWidget(self.collLabel) + spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Maximum) + self.verticalLayout_3.addItem(spacerItem1) + self.dataObjectTable = QtWidgets.QTableWidget(self.tab_2) + self.dataObjectTable.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents) + self.dataObjectTable.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) + self.dataObjectTable.setSelectionMode(QtWidgets.QAbstractItemView.MultiSelection) + self.dataObjectTable.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) + self.dataObjectTable.setObjectName("dataObjectTable") + self.dataObjectTable.setColumnCount(4) + self.dataObjectTable.setRowCount(0) + item = QtWidgets.QTableWidgetItem() + self.dataObjectTable.setHorizontalHeaderItem(0, item) + item = QtWidgets.QTableWidgetItem() + self.dataObjectTable.setHorizontalHeaderItem(1, item) + item = QtWidgets.QTableWidgetItem() + self.dataObjectTable.setHorizontalHeaderItem(2, item) + item = QtWidgets.QTableWidgetItem() + self.dataObjectTable.setHorizontalHeaderItem(3, item) + self.verticalLayout_3.addWidget(self.dataObjectTable) + self.tabWidget.addTab(self.tab_2, "") + self.tab = QtWidgets.QWidget() + self.tab.setObjectName("tab") + self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.tab) + self.verticalLayout_2.setObjectName("verticalLayout_2") + spacerItem2 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Maximum) + self.verticalLayout_2.addItem(spacerItem2) + self.indexLabel = QtWidgets.QLabel(self.tab) + self.indexLabel.setText("") + self.indexLabel.setObjectName("indexLabel") + self.verticalLayout_2.addWidget(self.indexLabel) + spacerItem3 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Maximum) + self.verticalLayout_2.addItem(spacerItem3) + self.textBrowser = QtWidgets.QTextBrowser(self.tab) + self.textBrowser.setObjectName("textBrowser") + self.verticalLayout_2.addWidget(self.textBrowser) + self.tabWidget.addTab(self.tab, "") + self.verticalLayout.addWidget(self.tabWidget) + self.horizontalLayout = QtWidgets.QHBoxLayout() + self.horizontalLayout.setObjectName("horizontalLayout") + spacerItem4 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout.addItem(spacerItem4) + self.extractButton = QtWidgets.QPushButton(irodsIndexPopup) + self.extractButton.setObjectName("extractButton") + self.horizontalLayout.addWidget(self.extractButton) + self.closeButton = QtWidgets.QPushButton(irodsIndexPopup) + font = QtGui.QFont() + font.setBold(True) + font.setWeight(75) + self.closeButton.setFont(font) + self.closeButton.setDefault(True) + self.closeButton.setObjectName("closeButton") + self.horizontalLayout.addWidget(self.closeButton) + self.verticalLayout.addLayout(self.horizontalLayout) + self.errorLabel = QtWidgets.QLabel(irodsIndexPopup) + self.errorLabel.setText("") + self.errorLabel.setObjectName("errorLabel") + self.verticalLayout.addWidget(self.errorLabel) + + self.retranslateUi(irodsIndexPopup) + self.tabWidget.setCurrentIndex(1) + QtCore.QMetaObject.connectSlotsByName(irodsIndexPopup) + + def retranslateUi(self, irodsIndexPopup): + _translate = QtCore.QCoreApplication.translate + irodsIndexPopup.setWindowTitle(_translate("irodsIndexPopup", "Form")) + item = self.dataObjectTable.horizontalHeaderItem(0) + item.setText(_translate("irodsIndexPopup", "Name")) + item = self.dataObjectTable.horizontalHeaderItem(1) + item.setText(_translate("irodsIndexPopup", "Owner")) + item = self.dataObjectTable.horizontalHeaderItem(2) + item.setText(_translate("irodsIndexPopup", "Size")) + item = self.dataObjectTable.horizontalHeaderItem(3) + item.setText(_translate("irodsIndexPopup", "Creation Date")) + self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("irodsIndexPopup", "Data Objects")) + self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("irodsIndexPopup", "JSON")) + self.extractButton.setText(_translate("irodsIndexPopup", "Extract Selected")) + self.closeButton.setText(_translate("irodsIndexPopup", "Close")) + + +if __name__ == "__main__": + import sys + app = QtWidgets.QApplication(sys.argv) + irodsIndexPopup = QtWidgets.QWidget() + ui = Ui_irodsIndexPopup() + ui.setupUi(irodsIndexPopup) + irodsIndexPopup.show() + sys.exit(app.exec_()) diff --git a/gui/ui-files/irodsIndexPopup.ui b/gui/ui_files/irodsIndexPopup.ui similarity index 98% rename from gui/ui-files/irodsIndexPopup.ui rename to gui/ui_files/irodsIndexPopup.ui index 1e2e0fd3f5b72d7bb8871bdffec78d59f3813035..eb0db47e887ecc392e0f0abbfc6280db5b69f7d1 100644 --- a/gui/ui-files/irodsIndexPopup.ui +++ b/gui/ui_files/irodsIndexPopup.ui @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> - <class>Form</class> - <widget class="QWidget" name="Form"> + <class>irodsIndexPopup</class> + <widget class="QWidget" name="irodsIndexPopup"> <property name="geometry"> <rect> <x>0</x> diff --git a/gui/ui_files/irodsLogin.py b/gui/ui_files/irodsLogin.py new file mode 100644 index 0000000000000000000000000000000000000000..b37abdd6a8ee15f8c509b7b9c6caf0bea71afc96 --- /dev/null +++ b/gui/ui_files/irodsLogin.py @@ -0,0 +1,149 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'D:\irods-clientsb\gui\ui_files\irodsLogin.ui' +# +# Created by: PyQt5 UI code generator 5.15.4 +# +# WARNING: Any manual changes made to this file will be lost when pyuic5 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt5 import QtCore, QtGui, QtWidgets + + +class Ui_irodsLogin(object): + def setupUi(self, irodsLogin): + irodsLogin.setObjectName("irodsLogin") + irodsLogin.resize(770, 332) + irodsLogin.setMinimumSize(QtCore.QSize(770, 320)) + irodsLogin.setStyleSheet("QWidget\n" +"{\n" +" background-color: rgb(54, 54, 54);\n" +" color: rgb(86, 184, 139);\n" +"}\n" +"\n" +"QLineEdit\n" +"{\n" +" background-color: rgb(85, 87, 83);\n" +"}\n" +"\n" +"QRadioButton\n" +"{\n" +" border-bottom-color: rgb(206, 92, 0);\n" +"}\n" +"\n" +"QLabel#passError, QLabel#envError, QLabel#icommandsError\n" +"{\n" +" color: rgb(217, 174, 23);\n" +"}") + self.gridLayoutWidget = QtWidgets.QWidget(irodsLogin) + self.gridLayoutWidget.setGeometry(QtCore.QRect(10, 10, 741, 251)) + self.gridLayoutWidget.setObjectName("gridLayoutWidget") + self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget) + self.gridLayout.setContentsMargins(0, 0, 0, 0) + self.gridLayout.setObjectName("gridLayout") + self.labelTitle = QtWidgets.QLabel(self.gridLayoutWidget) + font = QtGui.QFont() + font.setPointSize(20) + font.setBold(True) + font.setWeight(75) + self.labelTitle.setFont(font) + self.labelTitle.setObjectName("labelTitle") + self.gridLayout.addWidget(self.labelTitle, 0, 0, 1, 1) + self.selectIcommandsButton = QtWidgets.QRadioButton(self.gridLayoutWidget) + font = QtGui.QFont() + font.setPointSize(13) + self.selectIcommandsButton.setFont(font) + self.selectIcommandsButton.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor)) + self.selectIcommandsButton.setStyleSheet("") + self.selectIcommandsButton.setObjectName("selectIcommandsButton") + self.gridLayout.addWidget(self.selectIcommandsButton, 2, 0, 1, 1) + self.passError = QtWidgets.QLabel(self.gridLayoutWidget) + self.passError.setStyleSheet("") + self.passError.setText("") + self.passError.setObjectName("passError") + self.gridLayout.addWidget(self.passError, 10, 2, 1, 1) + self.envFileLable = QtWidgets.QLabel(self.gridLayoutWidget) + self.envFileLable.setObjectName("envFileLable") + self.gridLayout.addWidget(self.envFileLable, 6, 0, 1, 1) + self.passwordLabel = QtWidgets.QLabel(self.gridLayoutWidget) + self.passwordLabel.setObjectName("passwordLabel") + self.gridLayout.addWidget(self.passwordLabel, 9, 0, 1, 1) + spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.gridLayout.addItem(spacerItem, 1, 0, 1, 1) + self.envError = QtWidgets.QLabel(self.gridLayoutWidget) + self.envError.setMaximumSize(QtCore.QSize(16777215, 16777215)) + self.envError.setStyleSheet("") + self.envError.setText("") + self.envError.setObjectName("envError") + self.gridLayout.addWidget(self.envError, 8, 2, 1, 1) + self.standardButton = QtWidgets.QRadioButton(self.gridLayoutWidget) + font = QtGui.QFont() + font.setPointSize(13) + self.standardButton.setFont(font) + self.standardButton.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor)) + self.standardButton.setStyleSheet("") + self.standardButton.setChecked(True) + self.standardButton.setObjectName("standardButton") + self.gridLayout.addWidget(self.standardButton, 4, 0, 1, 1) + self.icommandsError = QtWidgets.QLabel(self.gridLayoutWidget) + self.icommandsError.setStyleSheet("") + self.icommandsError.setText("") + self.icommandsError.setObjectName("icommandsError") + self.gridLayout.addWidget(self.icommandsError, 2, 2, 1, 1) + spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Maximum) + self.gridLayout.addItem(spacerItem1, 5, 0, 1, 1) + self.envbox = QtWidgets.QComboBox(self.gridLayoutWidget) + self.envbox.setObjectName("envbox") + self.gridLayout.addWidget(self.envbox, 6, 1, 1, 2) + self.passwordField = QtWidgets.QLineEdit(self.gridLayoutWidget) + self.passwordField.setStyleSheet("background-color: rgb(85, 87, 83);") + self.passwordField.setText("") + self.passwordField.setClearButtonEnabled(True) + self.passwordField.setObjectName("passwordField") + self.gridLayout.addWidget(self.passwordField, 9, 1, 1, 2) + self.horizontalLayoutWidget = QtWidgets.QWidget(irodsLogin) + self.horizontalLayoutWidget.setGeometry(QtCore.QRect(10, 260, 741, 61)) + self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget") + self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget) + self.horizontalLayout.setContentsMargins(0, 0, 0, 0) + self.horizontalLayout.setObjectName("horizontalLayout") + self.ticketButton = QtWidgets.QPushButton(self.horizontalLayoutWidget) + self.ticketButton.setObjectName("ticketButton") + self.horizontalLayout.addWidget(self.ticketButton) + spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout.addItem(spacerItem2) + self.connectButton = QtWidgets.QPushButton(self.horizontalLayoutWidget) + font = QtGui.QFont() + font.setPointSize(13) + font.setBold(True) + font.setWeight(75) + self.connectButton.setFont(font) + self.connectButton.setAutoDefault(True) + self.connectButton.setDefault(True) + self.connectButton.setObjectName("connectButton") + self.horizontalLayout.addWidget(self.connectButton) + + self.retranslateUi(irodsLogin) + QtCore.QMetaObject.connectSlotsByName(irodsLogin) + + def retranslateUi(self, irodsLogin): + _translate = QtCore.QCoreApplication.translate + irodsLogin.setWindowTitle(_translate("irodsLogin", "Dialog")) + self.labelTitle.setText(_translate("irodsLogin", "iRODS Login")) + self.selectIcommandsButton.setText(_translate("irodsLogin", "Up-/Download with icommands (linux only.):")) + self.envFileLable.setText(_translate("irodsLogin", " iRODS environment file:")) + self.passwordLabel.setText(_translate("irodsLogin", " Password")) + self.standardButton.setText(_translate("irodsLogin", "Standard Up-/Download")) + self.ticketButton.setText(_translate("irodsLogin", "Login with ticket")) + self.connectButton.setText(_translate("irodsLogin", "Connect")) + + +if __name__ == "__main__": + import sys + app = QtWidgets.QApplication(sys.argv) + irodsLogin = QtWidgets.QDialog() + ui = Ui_irodsLogin() + ui.setupUi(irodsLogin) + irodsLogin.show() + sys.exit(app.exec_()) diff --git a/gui/ui-files/irodsLogin.ui b/gui/ui_files/irodsLogin.ui similarity index 98% rename from gui/ui-files/irodsLogin.ui rename to gui/ui_files/irodsLogin.ui index b029755e1ada8a74124dfe426d29a3dabc9918b7..08164eaf3e0ec5c7d7593b6180edaefb875f2139 100644 --- a/gui/ui-files/irodsLogin.ui +++ b/gui/ui_files/irodsLogin.ui @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> - <class>Dialog</class> - <widget class="QDialog" name="Dialog"> + <class>irodsLogin</class> + <widget class="QDialog" name="irodsLogin"> <property name="geometry"> <rect> <x>0</x> diff --git a/gui/ui_files/searchDialog.py b/gui/ui_files/searchDialog.py new file mode 100644 index 0000000000000000000000000000000000000000..dbc1a8c51dcc156d1b9e3f9b9167b52c12eb9926 --- /dev/null +++ b/gui/ui_files/searchDialog.py @@ -0,0 +1,236 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'D:\irods-clientsb\gui\ui_files\searchDialog.ui' +# +# Created by: PyQt5 UI code generator 5.15.4 +# +# WARNING: Any manual changes made to this file will be lost when pyuic5 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt5 import QtCore, QtGui, QtWidgets + + +class Ui_searchDialog(object): + def setupUi(self, searchDialog): + searchDialog.setObjectName("searchDialog") + searchDialog.resize(800, 800) + searchDialog.setMinimumSize(QtCore.QSize(800, 800)) + searchDialog.setStyleSheet("QWidget\n" +"{\n" +" color: rgb(86, 184, 139);\n" +" background-color: rgb(54, 54, 54);\n" +" selection-background-color: rgb(58, 152, 112);\n" +"}\n" +"\n" +"QTableWidget\n" +"{\n" +"background-color: rgb(85, 87, 83);\n" +"selection-background-color: rgb(58, 152, 112);\n" +"}\n" +"\n" +"QLineEdit\n" +"{\n" +"background-color: rgb(85, 87, 83);\n" +"}\n" +"\n" +"QPushButton:disabled{\n" +" background-color: rgb(136, 138, 133);\n" +"}\n" +"\n" +"QPushButton#downloadButton, QPushButton#selectSearchButton, QPushButton#startSearchButton\n" +"{\n" +" color: rgb(54, 54, 54);\n" +" background-color: rgb(58, 152, 112);\n" +"}\n" +"\n" +"QPushButton#searchExitButton\n" +"{\n" +"color: rgb(58, 152, 112);\n" +"background-color: rgb(54, 54, 54);\n" +"}\n" +"\n" +"QLabel#errorLabel\n" +"{\n" +" color: rgb(217, 174, 23);\n" +"}\n" +"") + self.verticalLayout_2 = QtWidgets.QVBoxLayout(searchDialog) + self.verticalLayout_2.setObjectName("verticalLayout_2") + self.gridLayout = QtWidgets.QGridLayout() + self.gridLayout.setObjectName("gridLayout") + self.val5 = QtWidgets.QLineEdit(searchDialog) + self.val5.setObjectName("val5") + self.gridLayout.addWidget(self.val5, 7, 1, 1, 1) + self.key4 = QtWidgets.QLineEdit(searchDialog) + self.key4.setStyleSheet("") + self.key4.setObjectName("key4") + self.gridLayout.addWidget(self.key4, 6, 0, 1, 1) + self.key1 = QtWidgets.QLineEdit(searchDialog) + self.key1.setStyleSheet("") + self.key1.setObjectName("key1") + self.gridLayout.addWidget(self.key1, 3, 0, 1, 1) + self.val4 = QtWidgets.QLineEdit(searchDialog) + self.val4.setObjectName("val4") + self.gridLayout.addWidget(self.val4, 6, 1, 1, 1) + self.key5 = QtWidgets.QLineEdit(searchDialog) + self.key5.setStyleSheet("") + self.key5.setObjectName("key5") + self.gridLayout.addWidget(self.key5, 7, 0, 1, 1) + self.label_4 = QtWidgets.QLabel(searchDialog) + self.label_4.setObjectName("label_4") + self.gridLayout.addWidget(self.label_4, 2, 1, 1, 1) + self.val1 = QtWidgets.QLineEdit(searchDialog) + self.val1.setObjectName("val1") + self.gridLayout.addWidget(self.val1, 3, 1, 1, 1) + self.key2 = QtWidgets.QLineEdit(searchDialog) + self.key2.setStyleSheet("") + self.key2.setObjectName("key2") + self.gridLayout.addWidget(self.key2, 4, 0, 1, 1) + self.val2 = QtWidgets.QLineEdit(searchDialog) + self.val2.setObjectName("val2") + self.gridLayout.addWidget(self.val2, 4, 1, 1, 1) + self.key3 = QtWidgets.QLineEdit(searchDialog) + self.key3.setStyleSheet("") + self.key3.setText("") + self.key3.setObjectName("key3") + self.gridLayout.addWidget(self.key3, 5, 0, 1, 1) + self.val3 = QtWidgets.QLineEdit(searchDialog) + self.val3.setObjectName("val3") + self.gridLayout.addWidget(self.val3, 5, 1, 1, 1) + self.label_3 = QtWidgets.QLabel(searchDialog) + self.label_3.setObjectName("label_3") + self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1) + self.verticalLayout_2.addLayout(self.gridLayout) + self.label_2 = QtWidgets.QLabel(searchDialog) + self.label_2.setObjectName("label_2") + self.verticalLayout_2.addWidget(self.label_2) + self.pathPattern = QtWidgets.QLineEdit(searchDialog) + self.pathPattern.setStyleSheet("") + self.pathPattern.setText("") + self.pathPattern.setObjectName("pathPattern") + self.verticalLayout_2.addWidget(self.pathPattern) + self.label = QtWidgets.QLabel(searchDialog) + self.label.setObjectName("label") + self.verticalLayout_2.addWidget(self.label) + self.objPattern = QtWidgets.QLineEdit(searchDialog) + self.objPattern.setStyleSheet("") + self.objPattern.setObjectName("objPattern") + self.verticalLayout_2.addWidget(self.objPattern) + self.label_5 = QtWidgets.QLabel(searchDialog) + self.label_5.setObjectName("label_5") + self.verticalLayout_2.addWidget(self.label_5) + self.checksumPattern = QtWidgets.QLineEdit(searchDialog) + self.checksumPattern.setStyleSheet("") + self.checksumPattern.setText("") + self.checksumPattern.setObjectName("checksumPattern") + self.verticalLayout_2.addWidget(self.checksumPattern) + spacerItem = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) + self.verticalLayout_2.addItem(spacerItem) + self.startSearchButton = QtWidgets.QPushButton(searchDialog) + font = QtGui.QFont() + font.setBold(True) + font.setWeight(75) + self.startSearchButton.setFont(font) + self.startSearchButton.setStyleSheet("") + self.startSearchButton.setDefault(True) + self.startSearchButton.setObjectName("startSearchButton") + self.verticalLayout_2.addWidget(self.startSearchButton) + spacerItem1 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) + self.verticalLayout_2.addItem(spacerItem1) + self.verticalLayout = QtWidgets.QVBoxLayout() + self.verticalLayout.setObjectName("verticalLayout") + self.horizontalLayout = QtWidgets.QHBoxLayout() + self.horizontalLayout.setObjectName("horizontalLayout") + self.label_6 = QtWidgets.QLabel(searchDialog) + font = QtGui.QFont() + font.setPointSize(13) + font.setBold(True) + font.setWeight(75) + self.label_6.setFont(font) + self.label_6.setObjectName("label_6") + self.horizontalLayout.addWidget(self.label_6) + self.verticalLayout.addLayout(self.horizontalLayout) + self.searchResultTable = QtWidgets.QTableWidget(searchDialog) + self.searchResultTable.setStyleSheet("") + self.searchResultTable.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents) + self.searchResultTable.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) + self.searchResultTable.setSelectionMode(QtWidgets.QAbstractItemView.MultiSelection) + self.searchResultTable.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) + self.searchResultTable.setObjectName("searchResultTable") + self.searchResultTable.setColumnCount(3) + self.searchResultTable.setRowCount(0) + item = QtWidgets.QTableWidgetItem() + self.searchResultTable.setHorizontalHeaderItem(0, item) + item = QtWidgets.QTableWidgetItem() + self.searchResultTable.setHorizontalHeaderItem(1, item) + item = QtWidgets.QTableWidgetItem() + self.searchResultTable.setHorizontalHeaderItem(2, item) + self.verticalLayout.addWidget(self.searchResultTable) + spacerItem2 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) + self.verticalLayout.addItem(spacerItem2) + self.horizontalLayout_2 = QtWidgets.QHBoxLayout() + self.horizontalLayout_2.setObjectName("horizontalLayout_2") + self.selectSearchButton = QtWidgets.QPushButton(searchDialog) + font = QtGui.QFont() + font.setBold(True) + font.setWeight(75) + self.selectSearchButton.setFont(font) + self.selectSearchButton.setStyleSheet("") + self.selectSearchButton.setObjectName("selectSearchButton") + self.horizontalLayout_2.addWidget(self.selectSearchButton) + self.downloadButton = QtWidgets.QPushButton(searchDialog) + font = QtGui.QFont() + font.setBold(True) + font.setWeight(75) + self.downloadButton.setFont(font) + self.downloadButton.setStyleSheet("") + self.downloadButton.setObjectName("downloadButton") + self.horizontalLayout_2.addWidget(self.downloadButton) + self.searchExitButton = QtWidgets.QPushButton(searchDialog) + font = QtGui.QFont() + font.setBold(True) + font.setWeight(75) + self.searchExitButton.setFont(font) + self.searchExitButton.setStyleSheet("") + self.searchExitButton.setObjectName("searchExitButton") + self.horizontalLayout_2.addWidget(self.searchExitButton) + self.verticalLayout.addLayout(self.horizontalLayout_2) + self.verticalLayout_2.addLayout(self.verticalLayout) + self.errorLabel = QtWidgets.QLabel(searchDialog) + self.errorLabel.setText("") + self.errorLabel.setObjectName("errorLabel") + self.verticalLayout_2.addWidget(self.errorLabel) + + self.retranslateUi(searchDialog) + QtCore.QMetaObject.connectSlotsByName(searchDialog) + + def retranslateUi(self, searchDialog): + _translate = QtCore.QCoreApplication.translate + searchDialog.setWindowTitle(_translate("searchDialog", "Dialog")) + self.label_4.setText(_translate("searchDialog", "Value (optional)")) + self.label_3.setText(_translate("searchDialog", "Key")) + self.label_2.setText(_translate("searchDialog", "Collection name (wildcard \'%\')")) + self.label.setText(_translate("searchDialog", "Object name (wildcard \'%\')")) + self.label_5.setText(_translate("searchDialog", "Checksum (wildcard \'%\')")) + self.startSearchButton.setText(_translate("searchDialog", "Search")) + self.label_6.setText(_translate("searchDialog", "Results:")) + item = self.searchResultTable.horizontalHeaderItem(0) + item.setText(_translate("searchDialog", "Path")) + item = self.searchResultTable.horizontalHeaderItem(1) + item.setText(_translate("searchDialog", "Name")) + item = self.searchResultTable.horizontalHeaderItem(2) + item.setText(_translate("searchDialog", "Checksum")) + self.selectSearchButton.setText(_translate("searchDialog", "Select and Close")) + self.downloadButton.setText(_translate("searchDialog", "Download Selection")) + self.searchExitButton.setText(_translate("searchDialog", "Close")) + + +if __name__ == "__main__": + import sys + app = QtWidgets.QApplication(sys.argv) + searchDialog = QtWidgets.QDialog() + ui = Ui_searchDialog() + ui.setupUi(searchDialog) + searchDialog.show() + sys.exit(app.exec_()) diff --git a/gui/ui-files/searchDialog.ui b/gui/ui_files/searchDialog.ui similarity index 99% rename from gui/ui-files/searchDialog.ui rename to gui/ui_files/searchDialog.ui index 1ef16799162bc3a6f82e165d26399ead33e28fd9..e36dd28c17c995c0ecc9caa0337ab6a9b5c8fa01 100644 --- a/gui/ui-files/searchDialog.ui +++ b/gui/ui_files/searchDialog.ui @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> - <class>Dialog</class> - <widget class="QDialog" name="Dialog"> + <class>searchDialog</class> + <widget class="QDialog" name="searchDialog"> <property name="geometry"> <rect> <x>0</x> diff --git a/gui/ui_files/tabBrowser.py b/gui/ui_files/tabBrowser.py new file mode 100644 index 0000000000000000000000000000000000000000..2063b148abfedb1242d921bc0657442e7345e548 --- /dev/null +++ b/gui/ui_files/tabBrowser.py @@ -0,0 +1,406 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'D:\irods-clientsb\gui\ui_files\tabBrowser.ui' +# +# Created by: PyQt5 UI code generator 5.15.4 +# +# WARNING: Any manual changes made to this file will be lost when pyuic5 is +# run again. Do not edit this file unless you know what you are doing. + + +from os.path import dirname, join, pardir, realpath +import sys +from PyQt5 import QtCore, QtGui, QtWidgets + + +class Ui_tabBrowser(object): + def setupUi(self, tabBrowser): + tabBrowser.setObjectName("tabBrowser") + tabBrowser.resize(1278, 781) + tabBrowser.setStyleSheet("QWidget\n" +"{\n" +" color: rgb(86, 184, 139);\n" +" background-color: rgb(54, 54, 54);\n" +" selection-background-color: rgb(58, 152, 112);\n" +"}\n" +"\n" +"QTabWidget\n" +"{\n" +"background-color: rgb(85, 87, 83);\n" +"}\n" +"\n" +"QTableWidget\n" +"{\n" +"background-color: rgb(85, 87, 83);\n" +"selection-background-color: rgb(58, 152, 112);\n" +"}\n" +"\n" +"QLabel#errorLabel\n" +"{\n" +"color: rgb(217, 174, 23);\n" +"}\n" +"\n" +"QLineEdit#inputPath\n" +"{\n" +"background-color: rgb(85, 87, 83);\n" +"}\n" +"\n" +"QPushButton#dataDeleteButton\n" +"{\n" +"background-color: rgb(164, 0, 0);\n" +"color: rgb(46, 52, 54);\n" +"}") + self.verticalLayout = QtWidgets.QVBoxLayout(tabBrowser) + self.verticalLayout.setObjectName("verticalLayout") + self.gridLayout = QtWidgets.QGridLayout() + self.gridLayout.setObjectName("gridLayout") + self.inputPath = QtWidgets.QLineEdit(tabBrowser) + font = QtGui.QFont() + font.setPointSize(16) + self.inputPath.setFont(font) + self.inputPath.setStyleSheet("") + self.inputPath.setEchoMode(QtWidgets.QLineEdit.Normal) + self.inputPath.setPlaceholderText("") + self.inputPath.setClearButtonEnabled(True) + self.inputPath.setObjectName("inputPath") + self.gridLayout.addWidget(self.inputPath, 0, 1, 1, 1) + self.createCollButton = QtWidgets.QPushButton(tabBrowser) + self.createCollButton.setObjectName("createCollButton") + self.gridLayout.addWidget(self.createCollButton, 0, 5, 1, 1) + self.label_2 = QtWidgets.QLabel(tabBrowser) + font = QtGui.QFont() + font.setPointSize(16) + font.setBold(True) + font.setWeight(75) + self.label_2.setFont(font) + self.label_2.setObjectName("label_2") + self.gridLayout.addWidget(self.label_2, 0, 0, 1, 1) + self.homeButton = QtWidgets.QPushButton(tabBrowser) + self.homeButton.setText("") + icon = QtGui.QIcon() + if getattr(sys, 'frozen', False): + icon.addPixmap(QtGui.QPixmap(join(dirname(realpath(sys.argv[0])), pardir) + "/icons/home.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + else: + icon.addPixmap(QtGui.QPixmap(dirname(realpath(sys.argv[0])) + "/icons/home.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.homeButton.setIcon(icon) + self.homeButton.setObjectName("homeButton") + self.gridLayout.addWidget(self.homeButton, 0, 2, 1, 1) + self.UploadButton = QtWidgets.QPushButton(tabBrowser) + self.UploadButton.setObjectName("UploadButton") + self.gridLayout.addWidget(self.UploadButton, 1, 5, 1, 1) + self.DownloadButton = QtWidgets.QPushButton(tabBrowser) + self.DownloadButton.setObjectName("DownloadButton") + self.gridLayout.addWidget(self.DownloadButton, 1, 2, 1, 1) + self.verticalLayout.addLayout(self.gridLayout) + spacerItem = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) + self.verticalLayout.addItem(spacerItem) + self.collTable = QtWidgets.QTableWidget(tabBrowser) + self.collTable.setMinimumSize(QtCore.QSize(0, 250)) + self.collTable.setStyleSheet("") + self.collTable.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents) + self.collTable.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) + self.collTable.setAlternatingRowColors(False) + self.collTable.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection) + self.collTable.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) + self.collTable.setObjectName("collTable") + self.collTable.setColumnCount(5) + self.collTable.setRowCount(0) + item = QtWidgets.QTableWidgetItem() + item.setText("Path") + self.collTable.setHorizontalHeaderItem(0, item) + item = QtWidgets.QTableWidgetItem() + self.collTable.setHorizontalHeaderItem(1, item) + item = QtWidgets.QTableWidgetItem() + self.collTable.setHorizontalHeaderItem(2, item) + item = QtWidgets.QTableWidgetItem() + self.collTable.setHorizontalHeaderItem(3, item) + item = QtWidgets.QTableWidgetItem() + self.collTable.setHorizontalHeaderItem(4, item) + self.verticalLayout.addWidget(self.collTable) + spacerItem1 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) + self.verticalLayout.addItem(spacerItem1) + self.viewTabs = QtWidgets.QTabWidget(tabBrowser) + self.viewTabs.setStyleSheet("") + self.viewTabs.setObjectName("viewTabs") + self.preview = QtWidgets.QWidget() + font = QtGui.QFont() + font.setBold(False) + font.setWeight(50) + self.preview.setFont(font) + self.preview.setAutoFillBackground(False) + self.preview.setObjectName("preview") + self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.preview) + self.verticalLayout_2.setObjectName("verticalLayout_2") + self.previewBrowser = QtWidgets.QTextBrowser(self.preview) + self.previewBrowser.setObjectName("previewBrowser") + self.verticalLayout_2.addWidget(self.previewBrowser) + self.viewTabs.addTab(self.preview, "") + self.metadata = QtWidgets.QWidget() + self.metadata.setObjectName("metadata") + self.horizontalLayout = QtWidgets.QHBoxLayout(self.metadata) + self.horizontalLayout.setObjectName("horizontalLayout") + self.metadataTable = QtWidgets.QTableWidget(self.metadata) + self.metadataTable.setMinimumSize(QtCore.QSize(600, 300)) + self.metadataTable.setStyleSheet("") + self.metadataTable.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents) + self.metadataTable.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) + self.metadataTable.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection) + self.metadataTable.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) + self.metadataTable.setObjectName("metadataTable") + self.metadataTable.setColumnCount(3) + self.metadataTable.setRowCount(0) + item = QtWidgets.QTableWidgetItem() + self.metadataTable.setHorizontalHeaderItem(0, item) + item = QtWidgets.QTableWidgetItem() + self.metadataTable.setHorizontalHeaderItem(1, item) + item = QtWidgets.QTableWidgetItem() + self.metadataTable.setHorizontalHeaderItem(2, item) + self.horizontalLayout.addWidget(self.metadataTable) + self.gridLayout_2 = QtWidgets.QGridLayout() + self.gridLayout_2.setObjectName("gridLayout_2") + spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.gridLayout_2.addItem(spacerItem2, 9, 0, 1, 1) + self.metaUnitsField = QtWidgets.QLineEdit(self.metadata) + self.metaUnitsField.setObjectName("metaUnitsField") + self.gridLayout_2.addWidget(self.metaUnitsField, 6, 2, 1, 1) + self.label_6 = QtWidgets.QLabel(self.metadata) + self.label_6.setObjectName("label_6") + self.gridLayout_2.addWidget(self.label_6, 4, 1, 1, 1) + self.metaUpdateButton = QtWidgets.QPushButton(self.metadata) + font = QtGui.QFont() + font.setBold(True) + font.setWeight(75) + self.metaUpdateButton.setFont(font) + self.metaUpdateButton.setObjectName("metaUpdateButton") + self.gridLayout_2.addWidget(self.metaUpdateButton, 7, 1, 1, 1) + self.metaKeyField = QtWidgets.QLineEdit(self.metadata) + self.metaKeyField.setObjectName("metaKeyField") + self.gridLayout_2.addWidget(self.metaKeyField, 6, 0, 1, 1) + self.metaAddButton = QtWidgets.QPushButton(self.metadata) + font = QtGui.QFont() + font.setBold(True) + font.setWeight(75) + self.metaAddButton.setFont(font) + self.metaAddButton.setObjectName("metaAddButton") + self.gridLayout_2.addWidget(self.metaAddButton, 7, 0, 1, 1) + self.label_3 = QtWidgets.QLabel(self.metadata) + font = QtGui.QFont() + font.setPointSize(20) + font.setBold(True) + font.setWeight(75) + self.label_3.setFont(font) + self.label_3.setObjectName("label_3") + self.gridLayout_2.addWidget(self.label_3, 0, 0, 1, 1) + self.label_5 = QtWidgets.QLabel(self.metadata) + self.label_5.setObjectName("label_5") + self.gridLayout_2.addWidget(self.label_5, 4, 2, 1, 1) + self.label_4 = QtWidgets.QLabel(self.metadata) + self.label_4.setObjectName("label_4") + self.gridLayout_2.addWidget(self.label_4, 4, 0, 1, 1) + self.metaDeleteButton = QtWidgets.QPushButton(self.metadata) + font = QtGui.QFont() + font.setBold(True) + font.setWeight(75) + self.metaDeleteButton.setFont(font) + self.metaDeleteButton.setObjectName("metaDeleteButton") + self.gridLayout_2.addWidget(self.metaDeleteButton, 7, 2, 1, 1) + self.metaValueField = QtWidgets.QLineEdit(self.metadata) + self.metaValueField.setObjectName("metaValueField") + self.gridLayout_2.addWidget(self.metaValueField, 6, 1, 1, 1) + self.horizontalLayout.addLayout(self.gridLayout_2) + self.viewTabs.addTab(self.metadata, "") + self.accession = QtWidgets.QWidget() + self.accession.setObjectName("accession") + self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.accession) + self.horizontalLayout_2.setObjectName("horizontalLayout_2") + self.aclTable = QtWidgets.QTableWidget(self.accession) + self.aclTable.setMinimumSize(QtCore.QSize(600, 0)) + self.aclTable.setStyleSheet("") + self.aclTable.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents) + self.aclTable.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) + self.aclTable.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection) + self.aclTable.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) + self.aclTable.setObjectName("aclTable") + self.aclTable.setColumnCount(3) + self.aclTable.setRowCount(0) + item = QtWidgets.QTableWidgetItem() + self.aclTable.setHorizontalHeaderItem(0, item) + item = QtWidgets.QTableWidgetItem() + self.aclTable.setHorizontalHeaderItem(1, item) + item = QtWidgets.QTableWidgetItem() + self.aclTable.setHorizontalHeaderItem(2, item) + self.horizontalLayout_2.addWidget(self.aclTable) + self.gridLayout_4 = QtWidgets.QGridLayout() + self.gridLayout_4.setObjectName("gridLayout_4") + self.label_10 = QtWidgets.QLabel(self.accession) + self.label_10.setObjectName("label_10") + self.gridLayout_4.addWidget(self.label_10, 4, 2, 1, 1) + self.aclAddButton = QtWidgets.QPushButton(self.accession) + font = QtGui.QFont() + font.setBold(True) + font.setWeight(75) + self.aclAddButton.setFont(font) + self.aclAddButton.setObjectName("aclAddButton") + self.gridLayout_4.addWidget(self.aclAddButton, 7, 3, 1, 1) + self.label_11 = QtWidgets.QLabel(self.accession) + font = QtGui.QFont() + font.setPointSize(20) + font.setBold(True) + font.setWeight(75) + self.label_11.setFont(font) + self.label_11.setObjectName("label_11") + self.gridLayout_4.addWidget(self.label_11, 0, 0, 1, 1) + self.label_7 = QtWidgets.QLabel(self.accession) + self.label_7.setObjectName("label_7") + self.gridLayout_4.addWidget(self.label_7, 4, 3, 1, 1) + self.aclBox = QtWidgets.QComboBox(self.accession) + self.aclBox.setObjectName("aclBox") + self.aclBox.addItem("") + self.aclBox.addItem("") + self.aclBox.addItem("") + self.aclBox.addItem("") + self.aclBox.addItem("") + self.gridLayout_4.addWidget(self.aclBox, 6, 2, 1, 1) + self.aclUserField = QtWidgets.QLineEdit(self.accession) + self.aclUserField.setObjectName("aclUserField") + self.gridLayout_4.addWidget(self.aclUserField, 6, 0, 1, 1) + self.label_13 = QtWidgets.QLabel(self.accession) + self.label_13.setObjectName("label_13") + self.gridLayout_4.addWidget(self.label_13, 4, 0, 1, 1) + self.recurseBox = QtWidgets.QComboBox(self.accession) + self.recurseBox.setObjectName("recurseBox") + self.recurseBox.addItem("") + self.recurseBox.addItem("") + self.gridLayout_4.addWidget(self.recurseBox, 6, 3, 1, 1) + spacerItem3 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.gridLayout_4.addItem(spacerItem3, 8, 0, 1, 1) + self.aclZoneField = QtWidgets.QLineEdit(self.accession) + self.aclZoneField.setObjectName("aclZoneField") + self.gridLayout_4.addWidget(self.aclZoneField, 6, 1, 1, 1) + self.label_8 = QtWidgets.QLabel(self.accession) + self.label_8.setObjectName("label_8") + self.gridLayout_4.addWidget(self.label_8, 4, 1, 1, 1) + self.horizontalLayout_2.addLayout(self.gridLayout_4) + self.viewTabs.addTab(self.accession, "") + self.resources = QtWidgets.QWidget() + self.resources.setObjectName("resources") + self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.resources) + self.horizontalLayout_3.setObjectName("horizontalLayout_3") + self.resourceTable = QtWidgets.QTableWidget(self.resources) + self.resourceTable.setStyleSheet("") + self.resourceTable.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents) + self.resourceTable.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) + self.resourceTable.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection) + self.resourceTable.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) + self.resourceTable.setObjectName("resourceTable") + self.resourceTable.setColumnCount(2) + self.resourceTable.setRowCount(0) + item = QtWidgets.QTableWidgetItem() + self.resourceTable.setHorizontalHeaderItem(0, item) + item = QtWidgets.QTableWidgetItem() + self.resourceTable.setHorizontalHeaderItem(1, item) + self.horizontalLayout_3.addWidget(self.resourceTable) + self.viewTabs.addTab(self.resources, "") + self.delete_2 = QtWidgets.QWidget() + self.delete_2.setObjectName("delete_2") + self.horizontalLayout_6 = QtWidgets.QHBoxLayout(self.delete_2) + self.horizontalLayout_6.setObjectName("horizontalLayout_6") + self.deleteSelectionBrowser = QtWidgets.QTextBrowser(self.delete_2) + self.deleteSelectionBrowser.setObjectName("deleteSelectionBrowser") + self.horizontalLayout_6.addWidget(self.deleteSelectionBrowser) + self.verticalLayout_5 = QtWidgets.QVBoxLayout() + self.verticalLayout_5.setObjectName("verticalLayout_5") + self.loadDeleteSelectionButton = QtWidgets.QPushButton(self.delete_2) + self.loadDeleteSelectionButton.setObjectName("loadDeleteSelectionButton") + self.verticalLayout_5.addWidget(self.loadDeleteSelectionButton) + spacerItem4 = QtWidgets.QSpacerItem(20, 30, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) + self.verticalLayout_5.addItem(spacerItem4) + self.dataDeleteButton = QtWidgets.QPushButton(self.delete_2) + font = QtGui.QFont() + font.setPointSize(13) + font.setBold(True) + font.setWeight(75) + self.dataDeleteButton.setFont(font) + self.dataDeleteButton.setStyleSheet("") + self.dataDeleteButton.setObjectName("dataDeleteButton") + self.verticalLayout_5.addWidget(self.dataDeleteButton) + self.horizontalLayout_6.addLayout(self.verticalLayout_5) + self.viewTabs.addTab(self.delete_2, "") + self.verticalLayout.addWidget(self.viewTabs) + self.errorLabel = QtWidgets.QLabel(tabBrowser) + self.errorLabel.setStyleSheet("") + self.errorLabel.setText("") + self.errorLabel.setObjectName("errorLabel") + self.verticalLayout.addWidget(self.errorLabel) + + self.retranslateUi(tabBrowser) + self.viewTabs.setCurrentIndex(3) + QtCore.QMetaObject.connectSlotsByName(tabBrowser) + + def retranslateUi(self, tabBrowser): + _translate = QtCore.QCoreApplication.translate + tabBrowser.setWindowTitle(_translate("tabBrowser", "Form")) + self.inputPath.setText(_translate("tabBrowser", "/zoneName/home/user")) + self.createCollButton.setText(_translate("tabBrowser", "Create Collection")) + self.label_2.setText(_translate("tabBrowser", "iRODS path: ")) + self.UploadButton.setText(_translate("tabBrowser", "File Upload")) + self.DownloadButton.setText(_translate("tabBrowser", "File Download")) + item = self.collTable.horizontalHeaderItem(1) + item.setText(_translate("tabBrowser", "Name")) + item = self.collTable.horizontalHeaderItem(2) + item.setText(_translate("tabBrowser", "Size")) + item = self.collTable.horizontalHeaderItem(3) + item.setText(_translate("tabBrowser", "Checksum")) + item = self.collTable.horizontalHeaderItem(4) + item.setText(_translate("tabBrowser", "Last modified")) + self.viewTabs.setTabText(self.viewTabs.indexOf(self.preview), _translate("tabBrowser", "Preview")) + item = self.metadataTable.horizontalHeaderItem(0) + item.setText(_translate("tabBrowser", "Key")) + item = self.metadataTable.horizontalHeaderItem(1) + item.setText(_translate("tabBrowser", "Value")) + item = self.metadataTable.horizontalHeaderItem(2) + item.setText(_translate("tabBrowser", "Units")) + self.label_6.setText(_translate("tabBrowser", "Value")) + self.metaUpdateButton.setText(_translate("tabBrowser", "Update")) + self.metaAddButton.setText(_translate("tabBrowser", "Add")) + self.label_3.setText(_translate("tabBrowser", "Edit")) + self.label_5.setText(_translate("tabBrowser", "Units")) + self.label_4.setText(_translate("tabBrowser", "Key")) + self.metaDeleteButton.setText(_translate("tabBrowser", "Delete")) + self.viewTabs.setTabText(self.viewTabs.indexOf(self.metadata), _translate("tabBrowser", "Metadata")) + item = self.aclTable.horizontalHeaderItem(0) + item.setText(_translate("tabBrowser", "User name")) + item = self.aclTable.horizontalHeaderItem(1) + item.setText(_translate("tabBrowser", "Zone")) + item = self.aclTable.horizontalHeaderItem(2) + item.setText(_translate("tabBrowser", "Permission type")) + self.label_10.setText(_translate("tabBrowser", "Permission type")) + self.aclAddButton.setText(_translate("tabBrowser", "Add")) + self.label_11.setText(_translate("tabBrowser", "Edit")) + self.label_7.setText(_translate("tabBrowser", "Recursive")) + self.aclBox.setItemText(0, _translate("tabBrowser", "----")) + self.aclBox.setItemText(1, _translate("tabBrowser", "null")) + self.aclBox.setItemText(2, _translate("tabBrowser", "read")) + self.aclBox.setItemText(3, _translate("tabBrowser", "write")) + self.aclBox.setItemText(4, _translate("tabBrowser", "own")) + self.label_13.setText(_translate("tabBrowser", "User name")) + self.recurseBox.setItemText(0, _translate("tabBrowser", "False")) + self.recurseBox.setItemText(1, _translate("tabBrowser", "True")) + self.label_8.setText(_translate("tabBrowser", "UserZone")) + self.viewTabs.setTabText(self.viewTabs.indexOf(self.accession), _translate("tabBrowser", "Permissions")) + item = self.resourceTable.horizontalHeaderItem(0) + item.setText(_translate("tabBrowser", "Resource name")) + self.viewTabs.setTabText(self.viewTabs.indexOf(self.resources), _translate("tabBrowser", "Resources")) + self.loadDeleteSelectionButton.setText(_translate("tabBrowser", "Load")) + self.dataDeleteButton.setText(_translate("tabBrowser", "Delete")) + self.viewTabs.setTabText(self.viewTabs.indexOf(self.delete_2), _translate("tabBrowser", "Delete")) + + +if __name__ == "__main__": + import sys + app = QtWidgets.QApplication(sys.argv) + tabBrowser = QtWidgets.QWidget() + ui = Ui_tabBrowser() + ui.setupUi(tabBrowser) + tabBrowser.show() + sys.exit(app.exec_()) diff --git a/gui/ui-files/tabBrowser.ui b/gui/ui_files/tabBrowser.ui similarity index 99% rename from gui/ui-files/tabBrowser.ui rename to gui/ui_files/tabBrowser.ui index 806679f02c1f60f3b616ffea09d65cf09023d0aa..5b11c4a83b3e2e241a50145f67c7cf9ffdc7ff1f 100644 --- a/gui/ui-files/tabBrowser.ui +++ b/gui/ui_files/tabBrowser.ui @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> - <class>Form</class> - <widget class="QWidget" name="Form"> + <class>tabBrowser</class> + <widget class="QWidget" name="tabBrowser"> <property name="geometry"> <rect> <x>0</x> diff --git a/gui/ui_files/tabDataCompression.py b/gui/ui_files/tabDataCompression.py new file mode 100644 index 0000000000000000000000000000000000000000..13a494e95f0cfc1b46f337dd24ac340172bdc7f2 --- /dev/null +++ b/gui/ui_files/tabDataCompression.py @@ -0,0 +1,181 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'D:\irods-clientsb\gui\ui_files\tabDataCompression.ui' +# +# Created by: PyQt5 UI code generator 5.15.4 +# +# WARNING: Any manual changes made to this file will be lost when pyuic5 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt5 import QtCore, QtGui, QtWidgets + + +class Ui_tabDataCompression(object): + def setupUi(self, tabDataCompression): + tabDataCompression.setObjectName("tabDataCompression") + tabDataCompression.resize(640, 528) + tabDataCompression.setStyleSheet("QWidget\n" +"{\n" +" color: rgb(86, 184, 139);\n" +" background-color: rgb(54, 54, 54);\n" +" selection-background-color: rgb(58, 152, 112);\n" +"}\n" +"\n" +"QTreeView\n" +"{\n" +"background-color: rgb(85, 87, 83);\n" +"}\n" +"\n" +"QLabel#createStatusLabel\n" +"{\n" +"color: rgb(217, 174, 23);\n" +"}\n" +"\n" +"QLabel#unpackStatusLabel\n" +"{\n" +"color: rgb(217, 174, 23);\n" +"}\n" +"") + self.verticalLayout_3 = QtWidgets.QVBoxLayout(tabDataCompression) + self.verticalLayout_3.setObjectName("verticalLayout_3") + self.label_2 = QtWidgets.QLabel(tabDataCompression) + font = QtGui.QFont() + font.setPointSize(13) + font.setBold(True) + font.setWeight(75) + self.label_2.setFont(font) + self.label_2.setObjectName("label_2") + self.verticalLayout_3.addWidget(self.label_2) + spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout_3.addItem(spacerItem) + self.irodsZoneLabel1 = QtWidgets.QLabel(tabDataCompression) + self.irodsZoneLabel1.setText("") + self.irodsZoneLabel1.setObjectName("irodsZoneLabel1") + self.verticalLayout_3.addWidget(self.irodsZoneLabel1) + self.horizontalLayout = QtWidgets.QHBoxLayout() + self.horizontalLayout.setObjectName("horizontalLayout") + self.irodsCollectionTree = QtWidgets.QTreeView(tabDataCompression) + self.irodsCollectionTree.setMinimumSize(QtCore.QSize(0, 150)) + self.irodsCollectionTree.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) + self.irodsCollectionTree.setSelectionMode(QtWidgets.QAbstractItemView.NoSelection) + self.irodsCollectionTree.setObjectName("irodsCollectionTree") + self.horizontalLayout.addWidget(self.irodsCollectionTree) + self.verticalLayout = QtWidgets.QVBoxLayout() + self.verticalLayout.setObjectName("verticalLayout") + self.horizontalLayout_2 = QtWidgets.QHBoxLayout() + self.horizontalLayout_2.setObjectName("horizontalLayout_2") + self.label = QtWidgets.QLabel(tabDataCompression) + self.label.setObjectName("label") + self.horizontalLayout_2.addWidget(self.label) + self.compressRescButton = QtWidgets.QComboBox(tabDataCompression) + self.compressRescButton.setObjectName("compressRescButton") + self.horizontalLayout_2.addWidget(self.compressRescButton) + self.verticalLayout.addLayout(self.horizontalLayout_2) + spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout.addItem(spacerItem1) + self.compressCheckBox = QtWidgets.QCheckBox(tabDataCompression) + self.compressCheckBox.setObjectName("compressCheckBox") + self.verticalLayout.addWidget(self.compressCheckBox) + self.removeCheckBox = QtWidgets.QCheckBox(tabDataCompression) + self.removeCheckBox.setObjectName("removeCheckBox") + self.verticalLayout.addWidget(self.removeCheckBox) + spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout.addItem(spacerItem2) + self.createButton = QtWidgets.QPushButton(tabDataCompression) + font = QtGui.QFont() + font.setBold(True) + font.setWeight(75) + self.createButton.setFont(font) + self.createButton.setObjectName("createButton") + self.verticalLayout.addWidget(self.createButton) + self.horizontalLayout.addLayout(self.verticalLayout) + self.verticalLayout_3.addLayout(self.horizontalLayout) + spacerItem3 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout_3.addItem(spacerItem3) + self.createStatusLabel = QtWidgets.QLabel(tabDataCompression) + self.createStatusLabel.setStyleSheet("") + self.createStatusLabel.setText("") + self.createStatusLabel.setObjectName("createStatusLabel") + self.verticalLayout_3.addWidget(self.createStatusLabel) + spacerItem4 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout_3.addItem(spacerItem4) + self.label_3 = QtWidgets.QLabel(tabDataCompression) + font = QtGui.QFont() + font.setPointSize(13) + font.setBold(True) + font.setWeight(75) + self.label_3.setFont(font) + self.label_3.setObjectName("label_3") + self.verticalLayout_3.addWidget(self.label_3) + spacerItem5 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout_3.addItem(spacerItem5) + self.irodsZoneLabel2 = QtWidgets.QLabel(tabDataCompression) + self.irodsZoneLabel2.setText("") + self.irodsZoneLabel2.setObjectName("irodsZoneLabel2") + self.verticalLayout_3.addWidget(self.irodsZoneLabel2) + self.horizontalLayout_3 = QtWidgets.QHBoxLayout() + self.horizontalLayout_3.setObjectName("horizontalLayout_3") + self.irodsCompressionTree = QtWidgets.QTreeView(tabDataCompression) + self.irodsCompressionTree.setMinimumSize(QtCore.QSize(0, 150)) + self.irodsCompressionTree.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) + self.irodsCompressionTree.setSelectionMode(QtWidgets.QAbstractItemView.NoSelection) + self.irodsCompressionTree.setObjectName("irodsCompressionTree") + self.horizontalLayout_3.addWidget(self.irodsCompressionTree) + self.verticalLayout_2 = QtWidgets.QVBoxLayout() + self.verticalLayout_2.setObjectName("verticalLayout_2") + self.horizontalLayout_4 = QtWidgets.QHBoxLayout() + self.horizontalLayout_4.setObjectName("horizontalLayout_4") + self.label_4 = QtWidgets.QLabel(tabDataCompression) + self.label_4.setObjectName("label_4") + self.horizontalLayout_4.addWidget(self.label_4) + self.decompressRescButton = QtWidgets.QComboBox(tabDataCompression) + self.decompressRescButton.setObjectName("decompressRescButton") + self.horizontalLayout_4.addWidget(self.decompressRescButton) + self.verticalLayout_2.addLayout(self.horizontalLayout_4) + spacerItem6 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout_2.addItem(spacerItem6) + self.indexButton = QtWidgets.QPushButton(tabDataCompression) + self.indexButton.setObjectName("indexButton") + self.verticalLayout_2.addWidget(self.indexButton) + self.unpackButton = QtWidgets.QPushButton(tabDataCompression) + font = QtGui.QFont() + font.setBold(True) + font.setWeight(75) + self.unpackButton.setFont(font) + self.unpackButton.setObjectName("unpackButton") + self.verticalLayout_2.addWidget(self.unpackButton) + self.horizontalLayout_3.addLayout(self.verticalLayout_2) + self.verticalLayout_3.addLayout(self.horizontalLayout_3) + self.unpackStatusLabel = QtWidgets.QLabel(tabDataCompression) + self.unpackStatusLabel.setText("") + self.unpackStatusLabel.setObjectName("unpackStatusLabel") + self.verticalLayout_3.addWidget(self.unpackStatusLabel) + spacerItem7 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout_3.addItem(spacerItem7) + + self.retranslateUi(tabDataCompression) + QtCore.QMetaObject.connectSlotsByName(tabDataCompression) + + def retranslateUi(self, tabDataCompression): + _translate = QtCore.QCoreApplication.translate + tabDataCompression.setWindowTitle(_translate("tabDataCompression", "Form")) + self.label_2.setText(_translate("tabDataCompression", "Compress/Bundle Collections:")) + self.label.setText(_translate("tabDataCompression", "Migrate data bundle to:")) + self.compressCheckBox.setText(_translate("tabDataCompression", "Compress data")) + self.removeCheckBox.setText(_translate("tabDataCompression", "Remove collection")) + self.createButton.setText(_translate("tabDataCompression", "Create tar/zip")) + self.label_3.setText(_translate("tabDataCompression", "Decompress tar/zip files:")) + self.label_4.setText(_translate("tabDataCompression", "Migrate extracted data to:")) + self.indexButton.setText(_translate("tabDataCompression", "Index")) + self.unpackButton.setText(_translate("tabDataCompression", "Extract tar/zip")) + + +if __name__ == "__main__": + import sys + app = QtWidgets.QApplication(sys.argv) + tabDataCompression = QtWidgets.QWidget() + ui = Ui_tabDataCompression() + ui.setupUi(tabDataCompression) + tabDataCompression.show() + sys.exit(app.exec_()) diff --git a/gui/ui-files/tabDataCompression.ui b/gui/ui_files/tabDataCompression.ui similarity index 98% rename from gui/ui-files/tabDataCompression.ui rename to gui/ui_files/tabDataCompression.ui index 2eed0119f017ae778d85aca6cc5ded5632b82969..5a77070be31b017a2a5537032277c24e07863aa1 100644 --- a/gui/ui-files/tabDataCompression.ui +++ b/gui/ui_files/tabDataCompression.ui @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> - <class>Form</class> - <widget class="QWidget" name="Form"> + <class>tabDataCompression</class> + <widget class="QWidget" name="tabDataCompression"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>640</width> - <height>502</height> + <height>528</height> </rect> </property> <property name="windowTitle"> diff --git a/gui/ui_files/tabELNData.py b/gui/ui_files/tabELNData.py new file mode 100644 index 0000000000000000000000000000000000000000..451a59602ffe2b058032c7a4c1448eee9bddc507 --- /dev/null +++ b/gui/ui_files/tabELNData.py @@ -0,0 +1,223 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'D:\irods-clientsb\gui\ui_files\tabELNData.ui' +# +# Created by: PyQt5 UI code generator 5.15.4 +# +# WARNING: Any manual changes made to this file will be lost when pyuic5 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt5 import QtCore, QtGui, QtWidgets + + +class Ui_tabELNData(object): + def setupUi(self, tabELNData): + tabELNData.setObjectName("tabELNData") + tabELNData.resize(1234, 776) + tabELNData.setStyleSheet("QWidget\n" +"{\n" +" color: rgb(86, 184, 139);\n" +" background-color: rgb(54, 54, 54);\n" +" selection-background-color: rgb(58, 152, 112);\n" +"}\n" +"\n" +"QTableWidget\n" +"{\n" +" background-color: rgb(85, 87, 83);\n" +"}\n" +"\n" +"QTextBrowser\n" +"{\n" +" background-color: rgb(85, 87, 83);\n" +"}\n" +"\n" +"QTreeView\n" +"{\n" +" background-color: rgb(85, 87, 83);\n" +"}\n" +"\n" +"QLineEdit#elnTokenInput\n" +"{\n" +" background-color: rgb(85, 87, 83);\n" +"}\n" +"QLabel#errorLabel{\n" +" \n" +" color: rgb(217, 174, 23);\n" +"}") + self.verticalLayout = QtWidgets.QVBoxLayout(tabELNData) + self.verticalLayout.setObjectName("verticalLayout") + self.label_9 = QtWidgets.QLabel(tabELNData) + font = QtGui.QFont() + font.setPointSize(15) + self.label_9.setFont(font) + self.label_9.setObjectName("label_9") + self.verticalLayout.addWidget(self.label_9) + self.horizontalLayout_7 = QtWidgets.QHBoxLayout() + self.horizontalLayout_7.setObjectName("horizontalLayout_7") + self.label_12 = QtWidgets.QLabel(tabELNData) + self.label_12.setObjectName("label_12") + self.horizontalLayout_7.addWidget(self.label_12) + self.elnTokenInput = QtWidgets.QLineEdit(tabELNData) + self.elnTokenInput.setStyleSheet("") + self.elnTokenInput.setObjectName("elnTokenInput") + self.horizontalLayout_7.addWidget(self.elnTokenInput) + self.verticalLayout.addLayout(self.horizontalLayout_7) + spacerItem = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout.addItem(spacerItem) + self.horizontalLayout_8 = QtWidgets.QHBoxLayout() + self.horizontalLayout_8.setObjectName("horizontalLayout_8") + self.elnGroupTable = QtWidgets.QTableWidget(tabELNData) + self.elnGroupTable.setMinimumSize(QtCore.QSize(200, 200)) + self.elnGroupTable.setStyleSheet("") + self.elnGroupTable.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContentsOnFirstShow) + self.elnGroupTable.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) + self.elnGroupTable.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection) + self.elnGroupTable.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) + self.elnGroupTable.setObjectName("elnGroupTable") + self.elnGroupTable.setColumnCount(2) + self.elnGroupTable.setRowCount(0) + item = QtWidgets.QTableWidgetItem() + self.elnGroupTable.setHorizontalHeaderItem(0, item) + item = QtWidgets.QTableWidgetItem() + self.elnGroupTable.setHorizontalHeaderItem(1, item) + self.horizontalLayout_8.addWidget(self.elnGroupTable) + spacerItem1 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout_8.addItem(spacerItem1) + self.elnExperimentTable = QtWidgets.QTableWidget(tabELNData) + self.elnExperimentTable.setMinimumSize(QtCore.QSize(400, 200)) + self.elnExperimentTable.setStyleSheet("") + self.elnExperimentTable.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents) + self.elnExperimentTable.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) + self.elnExperimentTable.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection) + self.elnExperimentTable.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) + self.elnExperimentTable.setObjectName("elnExperimentTable") + self.elnExperimentTable.setColumnCount(3) + self.elnExperimentTable.setRowCount(0) + item = QtWidgets.QTableWidgetItem() + self.elnExperimentTable.setHorizontalHeaderItem(0, item) + item = QtWidgets.QTableWidgetItem() + self.elnExperimentTable.setHorizontalHeaderItem(1, item) + item = QtWidgets.QTableWidgetItem() + self.elnExperimentTable.setHorizontalHeaderItem(2, item) + self.horizontalLayout_8.addWidget(self.elnExperimentTable) + self.verticalLayout_9 = QtWidgets.QVBoxLayout() + self.verticalLayout_9.setObjectName("verticalLayout_9") + self.horizontalLayout_8.addLayout(self.verticalLayout_9) + self.verticalLayout.addLayout(self.horizontalLayout_8) + spacerItem2 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout.addItem(spacerItem2) + self.formLayout = QtWidgets.QFormLayout() + self.formLayout.setObjectName("formLayout") + self.label_14 = QtWidgets.QLabel(tabELNData) + font = QtGui.QFont() + font.setPointSize(13) + self.label_14.setFont(font) + self.label_14.setObjectName("label_14") + self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.label_14) + self.groupIdLabel = QtWidgets.QLabel(tabELNData) + font = QtGui.QFont() + font.setPointSize(13) + self.groupIdLabel.setFont(font) + self.groupIdLabel.setText("") + self.groupIdLabel.setObjectName("groupIdLabel") + self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.groupIdLabel) + self.label_15 = QtWidgets.QLabel(tabELNData) + font = QtGui.QFont() + font.setPointSize(13) + self.label_15.setFont(font) + self.label_15.setObjectName("label_15") + self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.label_15) + self.experimentIdLabel = QtWidgets.QLabel(tabELNData) + font = QtGui.QFont() + font.setPointSize(13) + self.experimentIdLabel.setFont(font) + self.experimentIdLabel.setText("") + self.experimentIdLabel.setObjectName("experimentIdLabel") + self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.experimentIdLabel) + self.verticalLayout.addLayout(self.formLayout) + self.horizontalLayout_9 = QtWidgets.QHBoxLayout() + self.horizontalLayout_9.setObjectName("horizontalLayout_9") + self.localFsTable = QtWidgets.QTreeView(tabELNData) + self.localFsTable.setMinimumSize(QtCore.QSize(500, 0)) + self.localFsTable.setStyleSheet("") + self.localFsTable.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents) + self.localFsTable.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) + self.localFsTable.setSelectionMode(QtWidgets.QAbstractItemView.NoSelection) + self.localFsTable.setObjectName("localFsTable") + self.horizontalLayout_9.addWidget(self.localFsTable) + spacerItem3 = QtWidgets.QSpacerItem(10, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout_9.addItem(spacerItem3) + self.elnUploadButton = QtWidgets.QPushButton(tabELNData) + self.elnUploadButton.setObjectName("elnUploadButton") + self.horizontalLayout_9.addWidget(self.elnUploadButton) + spacerItem4 = QtWidgets.QSpacerItem(10, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout_9.addItem(spacerItem4) + self.elnPathLabel = QtWidgets.QVBoxLayout() + self.elnPathLabel.setObjectName("elnPathLabel") + self.horizontalLayout_10 = QtWidgets.QHBoxLayout() + self.horizontalLayout_10.setObjectName("horizontalLayout_10") + self.label_16 = QtWidgets.QLabel(tabELNData) + font = QtGui.QFont() + font.setPointSize(13) + font.setBold(True) + font.setWeight(75) + self.label_16.setFont(font) + self.label_16.setObjectName("label_16") + self.horizontalLayout_10.addWidget(self.label_16) + self.elnIrodsPath = QtWidgets.QLineEdit(tabELNData) + font = QtGui.QFont() + font.setPointSize(13) + self.elnIrodsPath.setFont(font) + self.elnIrodsPath.setObjectName("elnIrodsPath") + self.horizontalLayout_10.addWidget(self.elnIrodsPath) + self.elnPathLabel.addLayout(self.horizontalLayout_10) + self.elnPreviewBrowser = QtWidgets.QTextBrowser(tabELNData) + self.elnPreviewBrowser.setMinimumSize(QtCore.QSize(0, 200)) + self.elnPreviewBrowser.setStyleSheet("") + self.elnPreviewBrowser.setObjectName("elnPreviewBrowser") + self.elnPathLabel.addWidget(self.elnPreviewBrowser) + spacerItem5 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) + self.elnPathLabel.addItem(spacerItem5) + self.horizontalLayout_9.addLayout(self.elnPathLabel) + self.verticalLayout.addLayout(self.horizontalLayout_9) + spacerItem6 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) + self.verticalLayout.addItem(spacerItem6) + self.errorLabel = QtWidgets.QLabel(tabELNData) + self.errorLabel.setText("") + self.errorLabel.setObjectName("errorLabel") + self.verticalLayout.addWidget(self.errorLabel) + + self.retranslateUi(tabELNData) + QtCore.QMetaObject.connectSlotsByName(tabELNData) + + def retranslateUi(self, tabELNData): + _translate = QtCore.QCoreApplication.translate + tabELNData.setWindowTitle(_translate("tabELNData", "Form")) + self.label_9.setText(_translate("tabELNData", "Upload data to iRODS and link to an ELN Experiment")) + self.label_12.setText(_translate("tabELNData", "ELN token (wur.elabjournal.com;12345)")) + item = self.elnGroupTable.horizontalHeaderItem(0) + item.setText(_translate("tabELNData", "Group ID")) + item = self.elnGroupTable.horizontalHeaderItem(1) + item.setText(_translate("tabELNData", "Group Name")) + item = self.elnExperimentTable.horizontalHeaderItem(0) + item.setText(_translate("tabELNData", "Experiment ID")) + item = self.elnExperimentTable.horizontalHeaderItem(1) + item.setText(_translate("tabELNData", "Experiment Name")) + item = self.elnExperimentTable.horizontalHeaderItem(2) + item.setText(_translate("tabELNData", "Owner Name")) + self.label_14.setText(_translate("tabELNData", "Project")) + self.label_15.setText(_translate("tabELNData", "Experiment")) + self.elnUploadButton.setText(_translate("tabELNData", "Upload")) + self.label_16.setText(_translate("tabELNData", "iRODS Path (adjust for YODA)")) + self.elnIrodsPath.setText(_translate("tabELNData", "/zone/home/user")) + + +if __name__ == "__main__": + import sys + app = QtWidgets.QApplication(sys.argv) + tabELNData = QtWidgets.QWidget() + ui = Ui_tabELNData() + ui.setupUi(tabELNData) + tabELNData.show() + sys.exit(app.exec_()) diff --git a/gui/ui-files/tabELNData.ui b/gui/ui_files/tabELNData.ui similarity index 99% rename from gui/ui-files/tabELNData.ui rename to gui/ui_files/tabELNData.ui index 441e76f75868f36a737e7830ea7878b7b1e0719b..0bb990cacbba04d26909700c68b6216efeda97e7 100644 --- a/gui/ui-files/tabELNData.ui +++ b/gui/ui_files/tabELNData.ui @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> - <class>Form</class> - <widget class="QWidget" name="Form"> + <class>tabELNData</class> + <widget class="QWidget" name="tabELNData"> <property name="geometry"> <rect> <x>0</x> diff --git a/gui/ui_files/tabFederations.py b/gui/ui_files/tabFederations.py new file mode 100644 index 0000000000000000000000000000000000000000..58e8717febabd6b12f623904cbb259d0716ac6ea --- /dev/null +++ b/gui/ui_files/tabFederations.py @@ -0,0 +1,88 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'D:\irods-clientsb\gui\ui_files\tabFederations.ui' +# +# Created by: PyQt5 UI code generator 5.15.4 +# +# WARNING: Any manual changes made to this file will be lost when pyuic5 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt5 import QtCore, QtGui, QtWidgets + + +class Ui_tabFederations(object): + def setupUi(self, tabFederations): + tabFederations.setObjectName("tabFederations") + tabFederations.resize(1278, 754) + tabFederations.setStyleSheet("QWidget\n" +"{\n" +" color: rgb(86, 184, 139);\n" +" background-color: rgb(54, 54, 54);\n" +" selection-background-color: rgb(58, 152, 112);\n" +"}\n" +"\n" +"QTreewidget\n" +"{\n" +" background-color: rgb(85, 87, 83);\n" +"}\n" +"\n" +"QTableWidget\n" +"{\n" +" background-color: rgb(85, 87, 83);\n" +"}") + self.verticalLayout = QtWidgets.QVBoxLayout(tabFederations) + self.verticalLayout.setObjectName("verticalLayout") + self.tableWidget = QtWidgets.QTableWidget(tabFederations) + self.tableWidget.setStyleSheet("") + self.tableWidget.setObjectName("tableWidget") + self.tableWidget.setColumnCount(1) + self.tableWidget.setRowCount(0) + item = QtWidgets.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(0, item) + self.verticalLayout.addWidget(self.tableWidget) + spacerItem = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) + self.verticalLayout.addItem(spacerItem) + self.horizontalLayout_5 = QtWidgets.QHBoxLayout() + self.horizontalLayout_5.setObjectName("horizontalLayout_5") + self.treeWidget = QtWidgets.QTreeWidget(tabFederations) + self.treeWidget.setStyleSheet("") + self.treeWidget.setObjectName("treeWidget") + self.horizontalLayout_5.addWidget(self.treeWidget) + self.verticalLayout_7 = QtWidgets.QVBoxLayout() + self.verticalLayout_7.setObjectName("verticalLayout_7") + self.pushButton = QtWidgets.QPushButton(tabFederations) + self.pushButton.setText("") + self.pushButton.setObjectName("pushButton") + self.verticalLayout_7.addWidget(self.pushButton) + self.pushButton_2 = QtWidgets.QPushButton(tabFederations) + self.pushButton_2.setText("") + self.pushButton_2.setObjectName("pushButton_2") + self.verticalLayout_7.addWidget(self.pushButton_2) + self.horizontalLayout_5.addLayout(self.verticalLayout_7) + self.treeWidget_2 = QtWidgets.QTreeWidget(tabFederations) + self.treeWidget_2.setStyleSheet("") + self.treeWidget_2.setObjectName("treeWidget_2") + self.horizontalLayout_5.addWidget(self.treeWidget_2) + self.verticalLayout.addLayout(self.horizontalLayout_5) + + self.retranslateUi(tabFederations) + QtCore.QMetaObject.connectSlotsByName(tabFederations) + + def retranslateUi(self, tabFederations): + _translate = QtCore.QCoreApplication.translate + tabFederations.setWindowTitle(_translate("tabFederations", "Form")) + item = self.tableWidget.horizontalHeaderItem(0) + item.setText(_translate("tabFederations", "Federated Zones")) + self.treeWidget.headerItem().setText(0, _translate("tabFederations", "Home iRODS")) + self.treeWidget_2.headerItem().setText(0, _translate("tabFederations", "Federated iRODS")) + + +if __name__ == "__main__": + import sys + app = QtWidgets.QApplication(sys.argv) + tabFederations = QtWidgets.QWidget() + ui = Ui_tabFederations() + ui.setupUi(tabFederations) + tabFederations.show() + sys.exit(app.exec_()) diff --git a/gui/ui-files/tabFederations.ui b/gui/ui_files/tabFederations.ui similarity index 96% rename from gui/ui-files/tabFederations.ui rename to gui/ui_files/tabFederations.ui index d1ed11d1ed87840521359488c78e9a47ae3cae77..527145b6d083bb8e1fd91d8c97e61987e6c0b87d 100644 --- a/gui/ui-files/tabFederations.ui +++ b/gui/ui_files/tabFederations.ui @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> - <class>Form</class> - <widget class="QWidget" name="Form"> + <class>tabFederations</class> + <widget class="QWidget" name="tabFederations"> <property name="geometry"> <rect> <x>0</x> diff --git a/gui/ui_files/tabInfo.py b/gui/ui_files/tabInfo.py new file mode 100644 index 0000000000000000000000000000000000000000..ca36e7c48ea294f151bd1f2d873ab1ebd2eece33 --- /dev/null +++ b/gui/ui_files/tabInfo.py @@ -0,0 +1,187 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'D:\irods-clientsb\gui\ui_files\tabInfo.ui' +# +# Created by: PyQt5 UI code generator 5.15.4 +# +# WARNING: Any manual changes made to this file will be lost when pyuic5 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt5 import QtCore, QtGui, QtWidgets + + +class Ui_tabInfo(object): + def setupUi(self, tabInfo): + tabInfo.setObjectName("tabInfo") + tabInfo.resize(640, 480) + tabInfo.setStyleSheet("QWidget\n" +"{\n" +" color: rgb(86, 184, 139);\n" +" background-color: rgb(54, 54, 54);\n" +" selection-background-color: rgb(58, 152, 112);\n" +"}\n" +"\n" +"QTableWidget\n" +"{\n" +" background-color: rgb(85, 87, 83);\n" +"}\n" +"\n" +"QTextBrowser\n" +"{\n" +" background-color: rgb(85, 87, 83);\n" +"}\n" +"\n" +"") + self.horizontalLayout = QtWidgets.QHBoxLayout(tabInfo) + self.horizontalLayout.setObjectName("horizontalLayout") + self.gridLayout = QtWidgets.QGridLayout() + self.gridLayout.setObjectName("gridLayout") + self.serverLabel = QtWidgets.QLabel(tabInfo) + self.serverLabel.setText("") + self.serverLabel.setObjectName("serverLabel") + self.gridLayout.addWidget(self.serverLabel, 13, 2, 1, 1) + self.label_6 = QtWidgets.QLabel(tabInfo) + self.label_6.setText("") + self.label_6.setObjectName("label_6") + self.gridLayout.addWidget(self.label_6, 9, 0, 1, 1) + self.label_7 = QtWidgets.QLabel(tabInfo) + font = QtGui.QFont() + font.setPointSize(13) + font.setBold(True) + font.setWeight(75) + self.label_7.setFont(font) + self.label_7.setObjectName("label_7") + self.gridLayout.addWidget(self.label_7, 11, 0, 1, 1) + spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.gridLayout.addItem(spacerItem, 6, 0, 1, 1) + spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.gridLayout.addItem(spacerItem1, 15, 0, 1, 1) + self.label_2 = QtWidgets.QLabel(tabInfo) + self.label_2.setObjectName("label_2") + self.gridLayout.addWidget(self.label_2, 13, 0, 1, 1) + self.versionLabel_2 = QtWidgets.QLabel(tabInfo) + self.versionLabel_2.setObjectName("versionLabel_2") + self.gridLayout.addWidget(self.versionLabel_2, 14, 0, 1, 1) + self.versionLabel = QtWidgets.QLabel(tabInfo) + self.versionLabel.setText("") + self.versionLabel.setObjectName("versionLabel") + self.gridLayout.addWidget(self.versionLabel, 14, 2, 1, 1) + self.groupsLabel = QtWidgets.QLabel(tabInfo) + self.groupsLabel.setText("") + self.groupsLabel.setObjectName("groupsLabel") + self.gridLayout.addWidget(self.groupsLabel, 7, 2, 1, 1) + spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.gridLayout.addItem(spacerItem2, 17, 2, 1, 1) + self.label_4 = QtWidgets.QLabel(tabInfo) + self.label_4.setObjectName("label_4") + self.gridLayout.addWidget(self.label_4, 4, 0, 1, 1) + self.label = QtWidgets.QLabel(tabInfo) + font = QtGui.QFont() + font.setPointSize(13) + font.setBold(True) + font.setWeight(75) + self.label.setFont(font) + self.label.setObjectName("label") + self.gridLayout.addWidget(self.label, 0, 0, 1, 1) + spacerItem3 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.gridLayout.addItem(spacerItem3, 1, 0, 1, 1) + self.label_5 = QtWidgets.QLabel(tabInfo) + self.label_5.setObjectName("label_5") + self.gridLayout.addWidget(self.label_5, 7, 0, 1, 1) + self.zoneLabel = QtWidgets.QLabel(tabInfo) + self.zoneLabel.setText("") + self.zoneLabel.setObjectName("zoneLabel") + self.gridLayout.addWidget(self.zoneLabel, 3, 2, 1, 1) + self.userLabel = QtWidgets.QLabel(tabInfo) + self.userLabel.setText("") + self.userLabel.setObjectName("userLabel") + self.gridLayout.addWidget(self.userLabel, 4, 2, 1, 1) + spacerItem4 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.gridLayout.addItem(spacerItem4, 12, 0, 1, 1) + self.typeLabel = QtWidgets.QLabel(tabInfo) + self.typeLabel.setText("") + self.typeLabel.setObjectName("typeLabel") + self.gridLayout.addWidget(self.typeLabel, 5, 2, 1, 1) + self.horizontalLayout_3 = QtWidgets.QHBoxLayout() + self.horizontalLayout_3.setObjectName("horizontalLayout_3") + spacerItem5 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout_3.addItem(spacerItem5) + self.refreshButton = QtWidgets.QPushButton(tabInfo) + font = QtGui.QFont() + font.setPointSize(11) + font.setBold(True) + font.setWeight(75) + self.refreshButton.setFont(font) + self.refreshButton.setObjectName("refreshButton") + self.horizontalLayout_3.addWidget(self.refreshButton) + self.gridLayout.addLayout(self.horizontalLayout_3, 18, 2, 1, 1) + spacerItem6 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.gridLayout.addItem(spacerItem6, 10, 0, 1, 1) + self.label_9 = QtWidgets.QLabel(tabInfo) + self.label_9.setObjectName("label_9") + self.gridLayout.addWidget(self.label_9, 16, 0, 1, 1) + self.label_3 = QtWidgets.QLabel(tabInfo) + self.label_3.setObjectName("label_3") + self.gridLayout.addWidget(self.label_3, 3, 0, 1, 1) + self.label_10 = QtWidgets.QLabel(tabInfo) + self.label_10.setObjectName("label_10") + self.gridLayout.addWidget(self.label_10, 5, 0, 1, 1) + self.rescTable = QtWidgets.QTableWidget(tabInfo) + self.rescTable.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) + self.rescTable.setSelectionMode(QtWidgets.QAbstractItemView.NoSelection) + self.rescTable.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) + self.rescTable.setObjectName("rescTable") + self.rescTable.setColumnCount(3) + self.rescTable.setRowCount(0) + item = QtWidgets.QTableWidgetItem() + self.rescTable.setHorizontalHeaderItem(0, item) + item = QtWidgets.QTableWidgetItem() + self.rescTable.setHorizontalHeaderItem(1, item) + item = QtWidgets.QTableWidgetItem() + self.rescTable.setHorizontalHeaderItem(2, item) + self.gridLayout.addWidget(self.rescTable, 16, 2, 1, 1) + self.label_8 = QtWidgets.QLabel(tabInfo) + self.label_8.setObjectName("label_8") + self.gridLayout.addWidget(self.label_8, 8, 0, 1, 1) + self.rescLabel = QtWidgets.QLabel(tabInfo) + self.rescLabel.setText("") + self.rescLabel.setObjectName("rescLabel") + self.gridLayout.addWidget(self.rescLabel, 8, 2, 1, 1) + self.horizontalLayout.addLayout(self.gridLayout) + spacerItem7 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout.addItem(spacerItem7) + + self.retranslateUi(tabInfo) + QtCore.QMetaObject.connectSlotsByName(tabInfo) + + def retranslateUi(self, tabInfo): + _translate = QtCore.QCoreApplication.translate + tabInfo.setWindowTitle(_translate("tabInfo", "Form")) + self.label_7.setText(_translate("tabInfo", "Server Information")) + self.label_2.setText(_translate("tabInfo", "Server")) + self.versionLabel_2.setText(_translate("tabInfo", "Version")) + self.label_4.setText(_translate("tabInfo", "Username")) + self.label.setText(_translate("tabInfo", "Client Information")) + self.label_5.setText(_translate("tabInfo", "User\'s groups")) + self.refreshButton.setText(_translate("tabInfo", "Refresh")) + self.label_9.setText(_translate("tabInfo", "Resources")) + self.label_3.setText(_translate("tabInfo", "Zone")) + self.label_10.setText(_translate("tabInfo", "Usertype")) + item = self.rescTable.horizontalHeaderItem(0) + item.setText(_translate("tabInfo", "Name")) + item = self.rescTable.horizontalHeaderItem(1) + item.setText(_translate("tabInfo", "Free space in GB")) + item = self.rescTable.horizontalHeaderItem(2) + item.setText(_translate("tabInfo", "Status")) + self.label_8.setText(_translate("tabInfo", "Default resource")) + + +if __name__ == "__main__": + import sys + app = QtWidgets.QApplication(sys.argv) + tabInfo = QtWidgets.QWidget() + ui = Ui_tabInfo() + ui.setupUi(tabInfo) + tabInfo.show() + sys.exit(app.exec_()) diff --git a/gui/ui-files/tabInfo.ui b/gui/ui_files/tabInfo.ui similarity index 99% rename from gui/ui-files/tabInfo.ui rename to gui/ui_files/tabInfo.ui index e8550bc2b348671749f01c924fe9b45364cc2ab6..95af9c59e59dd365f029dc99c5b2734f77c519e9 100644 --- a/gui/ui-files/tabInfo.ui +++ b/gui/ui_files/tabInfo.ui @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> - <class>Form</class> - <widget class="QWidget" name="Form"> + <class>tabInfo</class> + <widget class="QWidget" name="tabInfo"> <property name="geometry"> <rect> <x>0</x> diff --git a/gui/ui_files/tabPage.py b/gui/ui_files/tabPage.py new file mode 100644 index 0000000000000000000000000000000000000000..933b5c2afc234f4d01b042b66841abfd311b1b6a --- /dev/null +++ b/gui/ui_files/tabPage.py @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'D:\irods-clientsb\gui\ui_files\tabPage.ui' +# +# Created by: PyQt5 UI code generator 5.15.4 +# +# WARNING: Any manual changes made to this file will be lost when pyuic5 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt5 import QtCore, QtGui, QtWidgets + + +class Ui_tabPage(object): + def setupUi(self, tabPage): + tabPage.setObjectName("tabPage") + tabPage.resize(1278, 754) + tabPage.setStyleSheet("QWidget\n" +"{\n" +" color: rgb(86, 184, 139);\n" +" background-color: rgb(54, 54, 54);\n" +" selection-background-color: rgb(58, 152, 112);\n" +"}\n" +"\n" +"QTreeWidget\n" +"{\n" +" background-color: rgb(85, 87, 83);\n" +"}") + self.refreshButton = QtWidgets.QPushButton(tabPage) + self.refreshButton.setGeometry(QtCore.QRect(70, 70, 89, 25)) + self.refreshButton.setObjectName("refreshButton") + self.page_testIrodsTree = QtWidgets.QTreeView(tabPage) + self.page_testIrodsTree.setGeometry(QtCore.QRect(20, 120, 452, 386)) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.page_testIrodsTree.sizePolicy().hasHeightForWidth()) + self.page_testIrodsTree.setSizePolicy(sizePolicy) + self.page_testIrodsTree.setStyleSheet("") + self.page_testIrodsTree.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents) + self.page_testIrodsTree.setSelectionMode(QtWidgets.QAbstractItemView.NoSelection) + self.page_testIrodsTree.setHeaderHidden(True) + self.page_testIrodsTree.setObjectName("page_testIrodsTree") + + self.retranslateUi(tabPage) + QtCore.QMetaObject.connectSlotsByName(tabPage) + + def retranslateUi(self, tabPage): + _translate = QtCore.QCoreApplication.translate + tabPage.setWindowTitle(_translate("tabPage", "Form")) + self.refreshButton.setText(_translate("tabPage", "Refresh")) + + +if __name__ == "__main__": + import sys + app = QtWidgets.QApplication(sys.argv) + tabPage = QtWidgets.QWidget() + ui = Ui_tabPage() + ui.setupUi(tabPage) + tabPage.show() + sys.exit(app.exec_()) diff --git a/gui/ui-files/tabPage.ui b/gui/ui_files/tabPage.ui similarity index 96% rename from gui/ui-files/tabPage.ui rename to gui/ui_files/tabPage.ui index ef863b7a4ca8c23f06dacdbdca12435542979250..685a42092421b0ed0ce3182c4bd9678ad885201b 100644 --- a/gui/ui-files/tabPage.ui +++ b/gui/ui_files/tabPage.ui @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> - <class>Form</class> - <widget class="QWidget" name="Form"> + <class>tabPage</class> + <widget class="QWidget" name="tabPage"> <property name="geometry"> <rect> <x>0</x> diff --git a/gui/ui_files/tabTicketAccess.py b/gui/ui_files/tabTicketAccess.py new file mode 100644 index 0000000000000000000000000000000000000000..026348b78b2e097def46cded48a12b55d722478c --- /dev/null +++ b/gui/ui_files/tabTicketAccess.py @@ -0,0 +1,244 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'D:\irods-clientsb\gui\ui_files\tabTicketAccess.ui' +# +# Created by: PyQt5 UI code generator 5.15.4 +# +# WARNING: Any manual changes made to this file will be lost when pyuic5 is +# run again. Do not edit this file unless you know what you are doing. + + +from os.path import dirname, join, pardir, realpath +import sys +from PyQt5 import QtCore, QtGui, QtWidgets + + +class Ui_tabTicketAccess(object): + def setupUi(self, tabTicketAccess): + tabTicketAccess.setObjectName("tabTicketAccess") + tabTicketAccess.resize(943, 728) + tabTicketAccess.setStyleSheet("QWidget\n" +"{\n" +" color: rgb(86, 184, 139);\n" +" background-color: rgb(54, 54, 54);\n" +" selection-background-color: rgb(58, 152, 112);\n" +"}\n" +"\n" +"QTableWidget\n" +"{\n" +" background-color: rgb(85, 87, 83);\n" +"}\n" +"\n" +"QTreeView\n" +"{\n" +" background-color: rgb(85, 87, 83); \n" +"\n" +"}\n" +"\n" +"QLineEdit\n" +"{\n" +"background-color: rgb(85, 87, 83);\n" +"}\n" +"\n" +"QLabel#infoLabel\n" +"{\n" +" color: rgb(217, 174, 23);\n" +"}\n" +"\n" +"\n" +"") + self.verticalLayout = QtWidgets.QVBoxLayout(tabTicketAccess) + self.verticalLayout.setObjectName("verticalLayout") + self.formLayout = QtWidgets.QFormLayout() + self.formLayout.setObjectName("formLayout") + self.label_3 = QtWidgets.QLabel(tabTicketAccess) + self.label_3.setObjectName("label_3") + self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.label_3) + self.serverEdit = QtWidgets.QLineEdit(tabTicketAccess) + self.serverEdit.setObjectName("serverEdit") + self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.serverEdit) + self.label_2 = QtWidgets.QLabel(tabTicketAccess) + self.label_2.setObjectName("label_2") + self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.label_2) + self.pathEdit = QtWidgets.QLineEdit(tabTicketAccess) + self.pathEdit.setObjectName("pathEdit") + self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.pathEdit) + self.label = QtWidgets.QLabel(tabTicketAccess) + self.label.setObjectName("label") + self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.label) + self.ticketEdit = QtWidgets.QLineEdit(tabTicketAccess) + self.ticketEdit.setObjectName("ticketEdit") + self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.ticketEdit) + self.horizontalLayout = QtWidgets.QHBoxLayout() + self.horizontalLayout.setObjectName("horizontalLayout") + self.connectButton = QtWidgets.QPushButton(tabTicketAccess) + self.connectButton.setMinimumSize(QtCore.QSize(30, 30)) + self.connectButton.setObjectName("connectButton") + self.horizontalLayout.addWidget(self.connectButton) + spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout.addItem(spacerItem) + self.formLayout.setLayout(3, QtWidgets.QFormLayout.FieldRole, self.horizontalLayout) + self.verticalLayout.addLayout(self.formLayout) + self.infoLabel = QtWidgets.QLabel(tabTicketAccess) + self.infoLabel.setText("") + self.infoLabel.setObjectName("infoLabel") + self.verticalLayout.addWidget(self.infoLabel) + spacerItem1 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.MinimumExpanding) + self.verticalLayout.addItem(spacerItem1) + self.horizontalLayout_3 = QtWidgets.QHBoxLayout() + self.horizontalLayout_3.setObjectName("horizontalLayout_3") + self.verticalLayout_6 = QtWidgets.QVBoxLayout() + self.verticalLayout_6.setObjectName("verticalLayout_6") + self.horizontalLayout_5 = QtWidgets.QHBoxLayout() + self.horizontalLayout_5.setObjectName("horizontalLayout_5") + self.homeButton = QtWidgets.QPushButton(tabTicketAccess) + self.homeButton.setText("") + icon = QtGui.QIcon() + if getattr(sys, 'frozen', False): + icon.addPixmap(QtGui.QPixmap(join(dirname(realpath(sys.argv[0])), pardir) + "/icons/home.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + else: + icon.addPixmap(QtGui.QPixmap(dirname(realpath(sys.argv[0])) + "/icons/home.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.homeButton.setIcon(icon) + self.homeButton.setObjectName("homeButton") + self.horizontalLayout_5.addWidget(self.homeButton) + spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout_5.addItem(spacerItem2) + self.downloadAllButton = QtWidgets.QPushButton(tabTicketAccess) + self.downloadAllButton.setObjectName("downloadAllButton") + self.horizontalLayout_5.addWidget(self.downloadAllButton) + self.verticalLayout_6.addLayout(self.horizontalLayout_5) + self.collTable = QtWidgets.QTableWidget(tabTicketAccess) + self.collTable.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents) + self.collTable.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) + self.collTable.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection) + self.collTable.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) + self.collTable.setObjectName("collTable") + self.collTable.setColumnCount(5) + self.collTable.setRowCount(0) + item = QtWidgets.QTableWidgetItem() + self.collTable.setHorizontalHeaderItem(0, item) + item = QtWidgets.QTableWidgetItem() + self.collTable.setHorizontalHeaderItem(1, item) + item = QtWidgets.QTableWidgetItem() + self.collTable.setHorizontalHeaderItem(2, item) + item = QtWidgets.QTableWidgetItem() + self.collTable.setHorizontalHeaderItem(3, item) + item = QtWidgets.QTableWidgetItem() + self.collTable.setHorizontalHeaderItem(4, item) + self.verticalLayout_6.addWidget(self.collTable) + self.horizontalLayout_3.addLayout(self.verticalLayout_6) + self.verticalLayout_4 = QtWidgets.QVBoxLayout() + self.verticalLayout_4.setObjectName("verticalLayout_4") + spacerItem3 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout_4.addItem(spacerItem3) + self.downloadButton = QtWidgets.QPushButton(tabTicketAccess) + self.downloadButton.setText("") + icon1 = QtGui.QIcon() + if getattr(sys, 'frozen', False): + icon1.addPixmap(QtGui.QPixmap(join(dirname(realpath(sys.argv[0])), pardir) + "/icons/arrow-right.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + else: + icon1.addPixmap(QtGui.QPixmap(dirname(realpath(sys.argv[0])) + "/icons/arrow-right.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.downloadButton.setIcon(icon1) + self.downloadButton.setIconSize(QtCore.QSize(30, 30)) + self.downloadButton.setObjectName("downloadButton") + self.verticalLayout_4.addWidget(self.downloadButton) + spacerItem4 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout_4.addItem(spacerItem4) + self.horizontalLayout_3.addLayout(self.verticalLayout_4) + self.verticalLayout_5 = QtWidgets.QVBoxLayout() + self.verticalLayout_5.setObjectName("verticalLayout_5") + self.horizontalLayout_4 = QtWidgets.QHBoxLayout() + self.horizontalLayout_4.setObjectName("horizontalLayout_4") + spacerItem5 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout_4.addItem(spacerItem5) + self.createDirectoryButton = QtWidgets.QPushButton(tabTicketAccess) + self.createDirectoryButton.setObjectName("createDirectoryButton") + self.horizontalLayout_4.addWidget(self.createDirectoryButton) + self.verticalLayout_5.addLayout(self.horizontalLayout_4) + self.localFsTreeView = QtWidgets.QTreeView(tabTicketAccess) + self.localFsTreeView.setSelectionMode(QtWidgets.QAbstractItemView.NoSelection) + self.localFsTreeView.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectItems) + self.localFsTreeView.setObjectName("localFsTreeView") + self.verticalLayout_5.addWidget(self.localFsTreeView) + self.horizontalLayout_3.addLayout(self.verticalLayout_5) + self.verticalLayout.addLayout(self.horizontalLayout_3) + self.horizontalLayout_2 = QtWidgets.QHBoxLayout() + self.horizontalLayout_2.setObjectName("horizontalLayout_2") + spacerItem6 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout_2.addItem(spacerItem6) + self.verticalLayout.addLayout(self.horizontalLayout_2) + spacerItem7 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Maximum) + self.verticalLayout.addItem(spacerItem7) + self.tabWidget = QtWidgets.QTabWidget(tabTicketAccess) + self.tabWidget.setObjectName("tabWidget") + self.tab = QtWidgets.QWidget() + self.tab.setObjectName("tab") + self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.tab) + self.verticalLayout_3.setObjectName("verticalLayout_3") + self.previewBrowser = QtWidgets.QTextBrowser(self.tab) + self.previewBrowser.setObjectName("previewBrowser") + self.verticalLayout_3.addWidget(self.previewBrowser) + self.tabWidget.addTab(self.tab, "") + self.tab_2 = QtWidgets.QWidget() + self.tab_2.setObjectName("tab_2") + self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.tab_2) + self.verticalLayout_2.setObjectName("verticalLayout_2") + self.metadataTable = QtWidgets.QTableWidget(self.tab_2) + self.metadataTable.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) + self.metadataTable.setSelectionMode(QtWidgets.QAbstractItemView.NoSelection) + self.metadataTable.setObjectName("metadataTable") + self.metadataTable.setColumnCount(3) + self.metadataTable.setRowCount(0) + item = QtWidgets.QTableWidgetItem() + self.metadataTable.setHorizontalHeaderItem(0, item) + item = QtWidgets.QTableWidgetItem() + self.metadataTable.setHorizontalHeaderItem(1, item) + item = QtWidgets.QTableWidgetItem() + self.metadataTable.setHorizontalHeaderItem(2, item) + self.verticalLayout_2.addWidget(self.metadataTable) + self.tabWidget.addTab(self.tab_2, "") + self.verticalLayout.addWidget(self.tabWidget) + spacerItem8 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Maximum) + self.verticalLayout.addItem(spacerItem8) + + self.retranslateUi(tabTicketAccess) + self.tabWidget.setCurrentIndex(1) + QtCore.QMetaObject.connectSlotsByName(tabTicketAccess) + + def retranslateUi(self, tabTicketAccess): + _translate = QtCore.QCoreApplication.translate + tabTicketAccess.setWindowTitle(_translate("tabTicketAccess", "Form")) + self.label_3.setText(_translate("tabTicketAccess", "iRODS server: ")) + self.label_2.setText(_translate("tabTicketAccess", "iRODS path: ")) + self.label.setText(_translate("tabTicketAccess", "Ticket:")) + self.connectButton.setText(_translate("tabTicketAccess", "Connect")) + self.downloadAllButton.setText(_translate("tabTicketAccess", "Download all")) + item = self.collTable.horizontalHeaderItem(0) + item.setText(_translate("tabTicketAccess", "Path")) + item = self.collTable.horizontalHeaderItem(1) + item.setText(_translate("tabTicketAccess", "Name")) + item = self.collTable.horizontalHeaderItem(2) + item.setText(_translate("tabTicketAccess", "Size")) + item = self.collTable.horizontalHeaderItem(3) + item.setText(_translate("tabTicketAccess", "Checksum")) + item = self.collTable.horizontalHeaderItem(4) + item.setText(_translate("tabTicketAccess", "Last modified")) + self.createDirectoryButton.setText(_translate("tabTicketAccess", "Create Directory")) + self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("tabTicketAccess", "Preview")) + item = self.metadataTable.horizontalHeaderItem(0) + item.setText(_translate("tabTicketAccess", "Key")) + item = self.metadataTable.horizontalHeaderItem(1) + item.setText(_translate("tabTicketAccess", "Value")) + item = self.metadataTable.horizontalHeaderItem(2) + item.setText(_translate("tabTicketAccess", "Units")) + self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("tabTicketAccess", "Metadata")) + + +if __name__ == "__main__": + import sys + app = QtWidgets.QApplication(sys.argv) + tabTicketAccess = QtWidgets.QWidget() + ui = Ui_tabTicketAccess() + ui.setupUi(tabTicketAccess) + tabTicketAccess.show() + sys.exit(app.exec_()) diff --git a/gui/ui-files/tabTicketAccess.ui b/gui/ui_files/tabTicketAccess.ui similarity index 99% rename from gui/ui-files/tabTicketAccess.ui rename to gui/ui_files/tabTicketAccess.ui index e2a2c2002439b1f94ec43e5653c30fa5ada2ed8f..3e1085874a58b2e97d1d7648fb43c331f3859a99 100644 --- a/gui/ui-files/tabTicketAccess.ui +++ b/gui/ui_files/tabTicketAccess.ui @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> - <class>Form</class> - <widget class="QWidget" name="Form"> + <class>tabTicketAccess</class> + <widget class="QWidget" name="tabTicketAccess"> <property name="geometry"> <rect> <x>0</x> diff --git a/gui/ui_files/tabTicketCreate.py b/gui/ui_files/tabTicketCreate.py new file mode 100644 index 0000000000000000000000000000000000000000..d8ef0dcf3f8aeca08875c86d9c5346aece19ce8b --- /dev/null +++ b/gui/ui_files/tabTicketCreate.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'D:\irods-clientsb\gui\ui_files\tabTicketCreate.ui' +# +# Created by: PyQt5 UI code generator 5.15.4 +# +# WARNING: Any manual changes made to this file will be lost when pyuic5 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt5 import QtCore, QtGui, QtWidgets + + +class Ui_tabticketCreate(object): + def setupUi(self, tabticketCreate): + tabticketCreate.setObjectName("tabticketCreate") + tabticketCreate.resize(1021, 650) + tabticketCreate.setStyleSheet("QWidget\n" +"{\n" +" color: rgb(86, 184, 139);\n" +" background-color: rgb(54, 54, 54);\n" +" selection-background-color: rgb(58, 152, 112);\n" +"}\n" +"\n" +"QCalendarWidget\n" +"{\n" +" background-color: rgb(85, 87, 83);\n" +"}\n" +"\n" +"QTreeView{\n" +" background-color: rgb(85, 87, 83);\n" +"}\n" +"\n" +"QLabel#infoLabel{\n" +" color: rgb(217, 174, 23);\n" +"}") + self.horizontalLayout = QtWidgets.QHBoxLayout(tabticketCreate) + self.horizontalLayout.setObjectName("horizontalLayout") + self.gridLayout = QtWidgets.QGridLayout() + self.gridLayout.setObjectName("gridLayout") + self.gridLayout_2 = QtWidgets.QGridLayout() + self.gridLayout_2.setObjectName("gridLayout_2") + spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.gridLayout_2.addItem(spacerItem, 10, 0, 1, 1) + spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.gridLayout_2.addItem(spacerItem1, 7, 0, 1, 1) + self.label_2 = QtWidgets.QLabel(tabticketCreate) + font = QtGui.QFont() + font.setPointSize(13) + self.label_2.setFont(font) + self.label_2.setObjectName("label_2") + self.gridLayout_2.addWidget(self.label_2, 0, 0, 1, 1) + spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.gridLayout_2.addItem(spacerItem2, 3, 0, 1, 1) + self.createTicketButton = QtWidgets.QPushButton(tabticketCreate) + self.createTicketButton.setObjectName("createTicketButton") + self.gridLayout_2.addWidget(self.createTicketButton, 4, 0, 1, 1) + self.calendar = QtWidgets.QCalendarWidget(tabticketCreate) + self.calendar.setMinimumDate(QtCore.QDate(2020, 9, 14)) + self.calendar.setGridVisible(False) + self.calendar.setHorizontalHeaderFormat(QtWidgets.QCalendarWidget.ShortDayNames) + self.calendar.setVerticalHeaderFormat(QtWidgets.QCalendarWidget.NoVerticalHeader) + self.calendar.setObjectName("calendar") + self.gridLayout_2.addWidget(self.calendar, 2, 0, 1, 1) + self.label = QtWidgets.QLabel(tabticketCreate) + font = QtGui.QFont() + font.setPointSize(13) + font.setBold(True) + font.setWeight(75) + self.label.setFont(font) + self.label.setObjectName("label") + self.gridLayout_2.addWidget(self.label, 6, 0, 1, 1) + self.ticketInfoBrowser = QtWidgets.QTextBrowser(tabticketCreate) + font = QtGui.QFont() + font.setFamily("Courier New") + font.setPointSize(10) + self.ticketInfoBrowser.setFont(font) + self.ticketInfoBrowser.setObjectName("ticketInfoBrowser") + self.gridLayout_2.addWidget(self.ticketInfoBrowser, 9, 0, 1, 1) + spacerItem3 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Maximum) + self.gridLayout_2.addItem(spacerItem3, 5, 0, 1, 1) + self.infoLabel = QtWidgets.QLabel(tabticketCreate) + self.infoLabel.setText("") + self.infoLabel.setObjectName("infoLabel") + self.gridLayout_2.addWidget(self.infoLabel, 11, 0, 1, 1) + self.formLayout = QtWidgets.QFormLayout() + self.formLayout.setObjectName("formLayout") + self.gridLayout_2.addLayout(self.formLayout, 8, 0, 1, 1) + spacerItem4 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.gridLayout_2.addItem(spacerItem4, 1, 0, 1, 1) + self.gridLayout.addLayout(self.gridLayout_2, 0, 2, 1, 1) + spacerItem5 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) + self.gridLayout.addItem(spacerItem5, 0, 1, 1, 1) + self.irodsFsTreeView = QtWidgets.QTreeView(tabticketCreate) + self.irodsFsTreeView.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) + self.irodsFsTreeView.setSelectionMode(QtWidgets.QAbstractItemView.NoSelection) + self.irodsFsTreeView.setObjectName("irodsFsTreeView") + self.gridLayout.addWidget(self.irodsFsTreeView, 0, 0, 1, 1) + self.horizontalLayout.addLayout(self.gridLayout) + + self.retranslateUi(tabticketCreate) + QtCore.QMetaObject.connectSlotsByName(tabticketCreate) + + def retranslateUi(self, tabticketCreate): + _translate = QtCore.QCoreApplication.translate + tabticketCreate.setWindowTitle(_translate("tabticketCreate", "Form")) + self.label_2.setText(_translate("tabticketCreate", "Expiration date: (linux only)")) + self.createTicketButton.setText(_translate("tabticketCreate", "Create Ticket")) + self.label.setText(_translate("tabticketCreate", "Ticket Information: ")) + + +if __name__ == "__main__": + import sys + app = QtWidgets.QApplication(sys.argv) + tabticketCreate = QtWidgets.QWidget() + ui = Ui_tabticketCreate() + ui.setupUi(tabticketCreate) + tabticketCreate.show() + sys.exit(app.exec_()) diff --git a/gui/ui-files/tabTicketCreate.ui b/gui/ui_files/tabTicketCreate.ui similarity index 98% rename from gui/ui-files/tabTicketCreate.ui rename to gui/ui_files/tabTicketCreate.ui index dbf149e485cdf130adf5cfdef7d889eb5e3aac45..e4a367800a8ba84319a4aabbf0060c9fcd0e89e1 100644 --- a/gui/ui-files/tabTicketCreate.ui +++ b/gui/ui_files/tabTicketCreate.ui @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> - <class>Form</class> - <widget class="QWidget" name="Form"> + <class>tabticketCreate</class> + <widget class="QWidget" name="tabticketCreate"> <property name="geometry"> <rect> <x>0</x> diff --git a/gui/ui_files/tabUpDownload.py b/gui/ui_files/tabUpDownload.py new file mode 100644 index 0000000000000000000000000000000000000000..098fc7bb5b9417d534a4051ec4c4622c6c191f61 --- /dev/null +++ b/gui/ui_files/tabUpDownload.py @@ -0,0 +1,296 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'D:\irods-clientsb\gui\ui_files\tabUpDownload.ui' +# +# Created by: PyQt5 UI code generator 5.15.4 +# +# WARNING: Any manual changes made to this file will be lost when pyuic5 is +# run again. Do not edit this file unless you know what you are doing. + + +from os.path import dirname, join, pardir, realpath +import sys +from PyQt5 import QtCore, QtGui, QtWidgets + + +class Ui_tabUpDownload(object): + def setupUi(self, tabUpDownload): + tabUpDownload.setObjectName("tabUpDownload") + tabUpDownload.resize(1234, 776) + tabUpDownload.setStyleSheet("QWidget\n" +"{\n" +" color: rgb(86, 184, 139);\n" +" background-color: rgb(54, 54, 54);\n" +" selection-background-color: rgb(58, 152, 112);\n" +"}\n" +"\n" +"QGroupBox\n" +"{\n" +" background-color: rgb(85, 87, 83);\n" +"}\n" +"\n" +"QTreeView\n" +"{\n" +" background-color: rgb(85, 87, 83);\n" +"}\n" +"\n" +"\n" +"QPushButton#ContUplBut\n" +"{\n" +" image : url(icons/nosync.png) stretch stretch;\n" +"}\n" +"\n" +"QRadioButton#uplAllRB, QRadioButton#uplMetaRB, QRadioButton#uplF500RB, QCheckBox#rLocalcopyCB, QCheckBox#saveSettings\n" +"{\n" +" background-color: rgb(85, 87, 83);\n" +"}\n" +"QLabel#errorLabel\n" +"{\n" +" color: rgb(217, 174, 23);\n" +"}") + self.layoutWidget = QtWidgets.QWidget(tabUpDownload) + self.layoutWidget.setGeometry(QtCore.QRect(10, 10, 1231, 771)) + self.layoutWidget.setObjectName("layoutWidget") + self.verticalLayout_11 = QtWidgets.QVBoxLayout(self.layoutWidget) + self.verticalLayout_11.setSizeConstraint(QtWidgets.QLayout.SetDefaultConstraint) + self.verticalLayout_11.setContentsMargins(0, 0, 0, 0) + self.verticalLayout_11.setObjectName("verticalLayout_11") + self.horizontalLayout_5 = QtWidgets.QHBoxLayout() + self.horizontalLayout_5.setObjectName("horizontalLayout_5") + self.verticalLayout_5 = QtWidgets.QVBoxLayout() + self.verticalLayout_5.setSizeConstraint(QtWidgets.QLayout.SetDefaultConstraint) + self.verticalLayout_5.setSpacing(2) + self.verticalLayout_5.setObjectName("verticalLayout_5") + self.label_19 = QtWidgets.QLabel(self.layoutWidget) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.label_19.sizePolicy().hasHeightForWidth()) + self.label_19.setSizePolicy(sizePolicy) + font = QtGui.QFont() + font.setPointSize(13) + font.setBold(True) + font.setWeight(75) + self.label_19.setFont(font) + self.label_19.setAlignment(QtCore.Qt.AlignCenter) + self.label_19.setObjectName("label_19") + self.verticalLayout_5.addWidget(self.label_19) + self.horizontalLayout_13 = QtWidgets.QHBoxLayout() + self.horizontalLayout_13.setObjectName("horizontalLayout_13") + self.createFolderButton = QtWidgets.QPushButton(self.layoutWidget) + self.createFolderButton.setObjectName("createFolderButton") + self.horizontalLayout_13.addWidget(self.createFolderButton) + spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout_13.addItem(spacerItem) + self.verticalLayout_5.addLayout(self.horizontalLayout_13) + self.localFsTreeView = QtWidgets.QTreeView(self.layoutWidget) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.localFsTreeView.sizePolicy().hasHeightForWidth()) + self.localFsTreeView.setSizePolicy(sizePolicy) + self.localFsTreeView.setStyleSheet("") + self.localFsTreeView.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustIgnored) + self.localFsTreeView.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) + self.localFsTreeView.setSelectionMode(QtWidgets.QAbstractItemView.NoSelection) + self.localFsTreeView.setHeaderHidden(True) + self.localFsTreeView.setObjectName("localFsTreeView") + self.verticalLayout_5.addWidget(self.localFsTreeView) + self.verticalLayout_5.setStretch(2, 1) + self.horizontalLayout_5.addLayout(self.verticalLayout_5) + spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout_5.addItem(spacerItem1) + self.verticalLayout_15 = QtWidgets.QVBoxLayout() + self.verticalLayout_15.setObjectName("verticalLayout_15") + spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout_15.addItem(spacerItem2) + self.label_2 = QtWidgets.QLabel(self.layoutWidget) + self.label_2.setObjectName("label_2") + self.verticalLayout_15.addWidget(self.label_2) + self.resourceBox = QtWidgets.QComboBox(self.layoutWidget) + self.resourceBox.setLayoutDirection(QtCore.Qt.LeftToRight) + self.resourceBox.setObjectName("resourceBox") + self.resourceBox.addItem("") + self.verticalLayout_15.addWidget(self.resourceBox) + spacerItem3 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout_15.addItem(spacerItem3) + self.gridLayout_7 = QtWidgets.QGridLayout() + self.gridLayout_7.setObjectName("gridLayout_7") + spacerItem4 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.gridLayout_7.addItem(spacerItem4, 0, 2, 1, 1) + self.ContUplBut = QtWidgets.QPushButton(self.layoutWidget) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ContUplBut.sizePolicy().hasHeightForWidth()) + self.ContUplBut.setSizePolicy(sizePolicy) + self.ContUplBut.setMinimumSize(QtCore.QSize(100, 70)) + self.ContUplBut.setText("") + self.ContUplBut.setIconSize(QtCore.QSize(50, 50)) + self.ContUplBut.setObjectName("ContUplBut") + self.gridLayout_7.addWidget(self.ContUplBut, 5, 1, 1, 1) + self.UploadButton = QtWidgets.QPushButton(self.layoutWidget) + self.UploadButton.setMinimumSize(QtCore.QSize(100, 0)) + self.UploadButton.setText("") + icon = QtGui.QIcon() + if getattr(sys, 'frozen', False): + icon.addPixmap(QtGui.QPixmap(join(dirname(realpath(sys.argv[0])), pardir) + "/icons/arrow-right.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + else: + icon.addPixmap(QtGui.QPixmap(dirname(realpath(sys.argv[0])) + "/icons/arrow-right.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.UploadButton.setIcon(icon) + self.UploadButton.setIconSize(QtCore.QSize(50, 50)) + self.UploadButton.setObjectName("UploadButton") + self.gridLayout_7.addWidget(self.UploadButton, 0, 1, 1, 1) + self.DownloadButton = QtWidgets.QPushButton(self.layoutWidget) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.DownloadButton.sizePolicy().hasHeightForWidth()) + self.DownloadButton.setSizePolicy(sizePolicy) + self.DownloadButton.setMinimumSize(QtCore.QSize(100, 0)) + self.DownloadButton.setText("") + icon1 = QtGui.QIcon() + if getattr(sys, 'frozen', False): + icon1.addPixmap(QtGui.QPixmap(join(dirname(realpath(sys.argv[0])), pardir) + "/icons/arrow-left.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + else: + icon1.addPixmap(QtGui.QPixmap(dirname(realpath(sys.argv[0])) + "/icons/arrow-left.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.DownloadButton.setIcon(icon1) + self.DownloadButton.setIconSize(QtCore.QSize(50, 50)) + self.DownloadButton.setObjectName("DownloadButton") + self.gridLayout_7.addWidget(self.DownloadButton, 3, 1, 1, 1) + spacerItem5 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.gridLayout_7.addItem(spacerItem5, 0, 0, 1, 1) + spacerItem6 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.gridLayout_7.addItem(spacerItem6, 4, 1, 1, 1) + spacerItem7 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Maximum) + self.gridLayout_7.addItem(spacerItem7, 1, 1, 1, 1) + self.verticalLayout_15.addLayout(self.gridLayout_7) + spacerItem8 = QtWidgets.QSpacerItem(20, 80, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) + self.verticalLayout_15.addItem(spacerItem8) + spacerItem9 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout_15.addItem(spacerItem9) + self.horizontalLayout_5.addLayout(self.verticalLayout_15) + spacerItem10 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout_5.addItem(spacerItem10) + self.verticalLayout_16 = QtWidgets.QVBoxLayout() + self.verticalLayout_16.setObjectName("verticalLayout_16") + self.label_20 = QtWidgets.QLabel(self.layoutWidget) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Minimum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.label_20.sizePolicy().hasHeightForWidth()) + self.label_20.setSizePolicy(sizePolicy) + font = QtGui.QFont() + font.setPointSize(13) + font.setBold(True) + font.setWeight(75) + self.label_20.setFont(font) + self.label_20.setTextFormat(QtCore.Qt.PlainText) + self.label_20.setAlignment(QtCore.Qt.AlignCenter) + self.label_20.setObjectName("label_20") + self.verticalLayout_16.addWidget(self.label_20) + self.horizontalLayout_15 = QtWidgets.QHBoxLayout() + self.horizontalLayout_15.setObjectName("horizontalLayout_15") + self.irodsZoneLabel = QtWidgets.QLabel(self.layoutWidget) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.irodsZoneLabel.sizePolicy().hasHeightForWidth()) + self.irodsZoneLabel.setSizePolicy(sizePolicy) + self.irodsZoneLabel.setObjectName("irodsZoneLabel") + self.horizontalLayout_15.addWidget(self.irodsZoneLabel) + spacerItem11 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout_15.addItem(spacerItem11) + self.createCollButton = QtWidgets.QPushButton(self.layoutWidget) + self.createCollButton.setObjectName("createCollButton") + self.horizontalLayout_15.addWidget(self.createCollButton) + self.verticalLayout_16.addLayout(self.horizontalLayout_15) + self.irodsFsTreeView = QtWidgets.QTreeView(self.layoutWidget) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.irodsFsTreeView.sizePolicy().hasHeightForWidth()) + self.irodsFsTreeView.setSizePolicy(sizePolicy) + self.irodsFsTreeView.setStyleSheet("") + self.irodsFsTreeView.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents) + self.irodsFsTreeView.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) + self.irodsFsTreeView.setSelectionMode(QtWidgets.QAbstractItemView.NoSelection) + self.irodsFsTreeView.setHeaderHidden(True) + self.irodsFsTreeView.setObjectName("irodsFsTreeView") + self.verticalLayout_16.addWidget(self.irodsFsTreeView) + self.verticalLayout_16.setStretch(2, 1) + self.horizontalLayout_5.addLayout(self.verticalLayout_16) + self.horizontalLayout_5.setStretch(0, 1) + self.horizontalLayout_5.setStretch(4, 1) + self.verticalLayout_11.addLayout(self.horizontalLayout_5) + spacerItem12 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) + self.verticalLayout_11.addItem(spacerItem12) + self.errorLabel = QtWidgets.QLabel(self.layoutWidget) + self.errorLabel.setText("") + self.errorLabel.setObjectName("errorLabel") + self.verticalLayout_11.addWidget(self.errorLabel) + spacerItem13 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout_11.addItem(spacerItem13) + self.uplSetGB_2 = QtWidgets.QGroupBox(self.layoutWidget) + self.uplSetGB_2.setEnabled(True) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Minimum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.uplSetGB_2.sizePolicy().hasHeightForWidth()) + self.uplSetGB_2.setSizePolicy(sizePolicy) + self.uplSetGB_2.setMinimumSize(QtCore.QSize(0, 50)) + self.uplSetGB_2.setStyleSheet("") + self.uplSetGB_2.setObjectName("uplSetGB_2") + self.gridLayout_4 = QtWidgets.QGridLayout(self.uplSetGB_2) + self.gridLayout_4.setObjectName("gridLayout_4") + self.uplMetaRB = QtWidgets.QRadioButton(self.uplSetGB_2) + self.uplMetaRB.setObjectName("uplMetaRB") + self.gridLayout_4.addWidget(self.uplMetaRB, 0, 1, 1, 1) + self.uplAllRB = QtWidgets.QRadioButton(self.uplSetGB_2) + self.uplAllRB.setChecked(True) + self.uplAllRB.setObjectName("uplAllRB") + self.gridLayout_4.addWidget(self.uplAllRB, 0, 0, 1, 1) + self.rLocalcopyCB = QtWidgets.QCheckBox(self.uplSetGB_2) + self.rLocalcopyCB.setEnabled(False) + self.rLocalcopyCB.setObjectName("rLocalcopyCB") + self.gridLayout_4.addWidget(self.rLocalcopyCB, 1, 0, 1, 1) + self.uplF500RB = QtWidgets.QRadioButton(self.uplSetGB_2) + self.uplF500RB.setEnabled(False) + self.uplF500RB.setObjectName("uplF500RB") + self.gridLayout_4.addWidget(self.uplF500RB, 0, 2, 1, 1) + self.saveSettings = QtWidgets.QCheckBox(self.uplSetGB_2) + self.saveSettings.setObjectName("saveSettings") + self.gridLayout_4.addWidget(self.saveSettings, 2, 0, 1, 1) + self.verticalLayout_11.addWidget(self.uplSetGB_2) + self.verticalLayout_11.setStretch(0, 2) + self.verticalLayout_11.setStretch(4, 1) + + self.retranslateUi(tabUpDownload) + QtCore.QMetaObject.connectSlotsByName(tabUpDownload) + + def retranslateUi(self, tabUpDownload): + _translate = QtCore.QCoreApplication.translate + tabUpDownload.setWindowTitle(_translate("tabUpDownload", "Form")) + self.label_19.setText(_translate("tabUpDownload", "LOCAL")) + self.createFolderButton.setText(_translate("tabUpDownload", "Create Folder")) + self.label_2.setText(_translate("tabUpDownload", "Select storage type:")) + self.resourceBox.setItemText(0, _translate("tabUpDownload", "Resources")) + self.label_20.setText(_translate("tabUpDownload", "IRODS")) + self.irodsZoneLabel.setText(_translate("tabUpDownload", "Zone")) + self.createCollButton.setText(_translate("tabUpDownload", "Create Collection")) + self.uplSetGB_2.setTitle(_translate("tabUpDownload", "Upload settings")) + self.uplMetaRB.setText(_translate("tabUpDownload", "Metadata based")) + self.uplAllRB.setText(_translate("tabUpDownload", "All files")) + self.rLocalcopyCB.setText(_translate("tabUpDownload", "Remove local copy")) + self.uplF500RB.setText(_translate("tabUpDownload", "F500")) + self.saveSettings.setText(_translate("tabUpDownload", "Save Settings for next session")) + + +if __name__ == "__main__": + import sys + app = QtWidgets.QApplication(sys.argv) + tabUpDownload = QtWidgets.QWidget() + ui = Ui_tabUpDownload() + ui.setupUi(tabUpDownload) + tabUpDownload.show() + sys.exit(app.exec_()) diff --git a/gui/ui-files/tabUpDownload.ui b/gui/ui_files/tabUpDownload.ui similarity index 99% rename from gui/ui-files/tabUpDownload.ui rename to gui/ui_files/tabUpDownload.ui index c714cc093762b89560989a57c33692f5917a1317..ec2bf9e4eca85244323f6cbacc918681bf1ebed3 100644 --- a/gui/ui-files/tabUpDownload.ui +++ b/gui/ui_files/tabUpDownload.ui @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> - <class>Form</class> - <widget class="QWidget" name="Form"> + <class>tabUpDownload</class> + <widget class="QWidget" name="tabUpDownload"> <property name="geometry"> <rect> <x>0</x> diff --git a/gui/icons/arrow-left.png b/icons/arrow-left.png similarity index 100% rename from gui/icons/arrow-left.png rename to icons/arrow-left.png diff --git a/gui/icons/arrow-right.png b/icons/arrow-right.png similarity index 100% rename from gui/icons/arrow-right.png rename to icons/arrow-right.png diff --git a/gui/icons/home.png b/icons/home.png similarity index 100% rename from gui/icons/home.png rename to icons/home.png diff --git a/gui/icons/irods-basicGUI_Login.png b/icons/irods-basicGUI_Login.png similarity index 100% rename from gui/icons/irods-basicGUI_Login.png rename to icons/irods-basicGUI_Login.png diff --git a/gui/icons/loading_circle.gif b/icons/loading_circle.gif similarity index 100% rename from gui/icons/loading_circle.gif rename to icons/loading_circle.gif diff --git a/gui/icons/nosync.png b/icons/nosync.png similarity index 100% rename from gui/icons/nosync.png rename to icons/nosync.png diff --git a/gui/icons/syncing.png b/icons/syncing.png similarity index 100% rename from gui/icons/syncing.png rename to icons/syncing.png diff --git a/irods-iBridgesGui.ico b/irods-iBridgesGui.ico new file mode 100644 index 0000000000000000000000000000000000000000..6aa25f2fb3e63295ac9f3febaaace75d782e445f Binary files /dev/null and b/irods-iBridgesGui.ico differ diff --git a/irods-iBridgesGui.py b/irods-iBridgesGui.py index ccb00d3368a2e2d40daf1ffe5d70a445558add7a..4cf6ce5323cb2837cc3add3b4d8435223738c326 100755 --- a/irods-iBridgesGui.py +++ b/irods-iBridgesGui.py @@ -22,12 +22,15 @@ from irods.exception import CollectionDoesNotExist from gui.mainmenu import mainmenu from gui.irodsTicketLogin import irodsTicketLogin from utils.utils import networkCheck, setup_logger +from gui.ui_files.irodsLogin import Ui_irodsLogin -class irodsLogin(QDialog): + +class irodsLogin(QDialog, Ui_irodsLogin): def __init__(self): super(irodsLogin, self).__init__() - loadUi("gui/ui-files/irodsLogin.ui", self) - + super(irodsLogin, self).setupUi(self) + #loadUi("gui/ui-files/irodsLogin.ui", self) + self.irodsEnvPath = os.path.expanduser('~')+ os.sep +".irods" setup_logger(self.irodsEnvPath, "iBridgesGui") if not os.path.isdir(self.irodsEnvPath): diff --git a/pyinstaller_script.py b/pyinstaller_script.py new file mode 100644 index 0000000000000000000000000000000000000000..db7bfd4ace57d469613ade6df8089146cf7a480d --- /dev/null +++ b/pyinstaller_script.py @@ -0,0 +1,133 @@ +from genericpath import isfile +from subprocess import Popen, run, PIPE, STDOUT +from shutil import copytree, rmtree + +from glob import glob +from os import getcwd, mkdir, path, remove, sep +from platform import system + + +""" +Pipeline to create pyinstaller executables. +not using the --onefile options because than windows has to upack the exe before it can run. +This makes it rougly 30 seconds slower than the current variant. +""" + +# Run command in shell, stdout is printed to the screen +def run_cmd(cmd): + if system()[0].upper() == "W": # windows + ps = run(cmd, stderr=STDOUT, shell=True, universal_newlines=True) + else: + ps = run(cmd, stderr=STDOUT, shell=True, universal_newlines=True, executable="/bin/bash") + # Print all errors + if ps.stderr != None: + print(f"commandline error: {ps.stderr}") + raise Exception("shell run error") + + +# Convert the .ui files to .py files +def ui_to_py(ui_folder, python): + # python -m PyQt5.uic.pyuic -x main.ui -o mainUI.py + for ui_file in glob(ui_folder + '*.ui'): + filename, ext = path.splitext(ui_file) + print(f"Converting {filename} to .py") + run_cmd(f"""{python} -m PyQt5.uic.pyuic -x {ui_file} -o {filename +".py"}""") + + # Find and replace the pixelmap references... They are hardcoded + # Also have to go up one directory for the executable, its ugly! + with open(filename +".py", 'r') as file: + lines = file.readlines() + modified_lines = {} + for linenum, line in enumerate(lines): + if """QtGui.QPixmap(\"""" in line: + abs_fchar = line.find("\"") + abs_lchar = line.find(".", abs_fchar) + 2 + + new_line = line[0:abs_fchar] + "dirname(realpath(sys.argv[0])) + \"" + line[abs_lchar:] + exeline = line[0:abs_fchar] + "join(dirname(realpath(sys.argv[0])), pardir) + \"" + line[abs_lchar:] + modified_lines[linenum] = (new_line, exeline) + + if len(modified_lines) > 0: + lineofset = 0 + spacing = " " #distance of one tab + for linenum, text in modified_lines.items(): + lines[(linenum + lineofset)] = spacing + text[0] + lines.insert(linenum + lineofset, f"{spacing}else:\n") + lines.insert(linenum + lineofset, spacing + text[1]) + lines.insert(linenum + lineofset, f"{spacing}if getattr(sys, 'frozen', False):\n") + lineofset = lineofset + 3 + + lines.insert(10, "import sys\n") + lines.insert(10, "from os.path import dirname, join, pardir, realpath\n") + with open(filename +".py", 'w') as file: + file.writelines(lines) + + +# Remove the locally stored .py versions of the files +def remove_pyui_files(ui_folder): + pyuifiles = glob(ui_folder + '*.py') + if len(pyuifiles) > 0: + for file in pyuifiles: + print(f"Removing {file}") + remove(file) + + +# Overwrite one folder with all content +def replace_folder(source, destination): + if path.exists(destination) and path.isdir(destination): + rmtree(destination) + copytree(source, destination) + + +if __name__ == "__main__": + icons_folder = f"{getcwd()}{sep}icons" + ui_folder = f"{getcwd()}{sep}gui{sep}ui_files{sep}" + rules_folder = f"{getcwd()}{sep}rules" + venv = f"{getcwd()}{sep}venv" + + # Seperator for sending multiple commands in one commandline call + if system()[0].upper() == "W": # windows + cmd_sep = "&&" + python = "python" # python version + else: # Linux + cmd_sep = ";" + python = "python3" + + # Step 1 Convert .ui files to .py files + # Remove py files if they already exist, recompiling is the best way to ensure they are up to date + remove_pyui_files(ui_folder) + ui_to_py(ui_folder, python) + + # Step 2: Pyinstallers includes all dependencies in the environment, so we use a venv + # Step 2a, Ensure the folder for the venv exists + if (not path.exists(venv)) or (not path.isdir(venv)): + mkdir(venv) + + # Step 2b, Create the venv if needed + if system()[0].upper() == "W": # windows + venv_activate = f"{venv}{sep}Scripts{sep}activate.bat" + else: + venv_activate = f"source {venv}/bin/activate" + if (not path.exists(venv_activate)) or (not path.isfile(venv_activate)): + run_cmd(f"{python} -m venv {venv}") + run_cmd(f"{venv_activate} {cmd_sep} python -m pip install --upgrade pip") + run_cmd(f"{venv_activate} {cmd_sep} pip install -r requirements.txt") + + # Step 3, Activate venv and tun pyinstaller + run_cmd(f"{venv_activate} {cmd_sep} pyinstaller --clean --noconfirm --icon irods-iBridgesGui.ico irods-iBridgesGui.py") + dist_folder = f"{getcwd()}{sep}dist" + + + # Step 4, Copy rules, icons folder to dist folder, replace if exists. + dist_icons = f"{dist_folder}{sep}icons" + dist_rules = f"{dist_folder}{sep}rules" + replace_folder(icons_folder, dist_icons) + replace_folder(rules_folder, dist_rules) + + + confirmation = input("Do you want to cleanup the build environment (Y/N): ") + if confirmation[0].upper() == 'Y': + #remove_pyui_files(ui_folder) + rmtree(getcwd() + sep + "build") + #remove(getcwd() + "dist") + remove(getcwd() + sep + "irods-iBridgesGui.spec") \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 2a8fa7ac5bae85a7bdf76894972e4d205195ee3e..9af42fff7d7a20190a6f3aef84384df96dad5d09 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,3 +3,4 @@ elabjournal==0.0.19 PyQt5==5.15.4 python-irodsclient==1.0.0 watchdog==2.1.5 +pyinstaller==4.5.1 \ No newline at end of file diff --git a/utils/elabConnector.py b/utils/elabConnector.py index d340bf547adce737495de61f2718f85ec8fda358..eebac6a48eaa5bf59c6b4165fd97bea3d5c62bae 100644 --- a/utils/elabConnector.py +++ b/utils/elabConnector.py @@ -153,6 +153,12 @@ class elabConnector(): except: raise - def addMetadata(self, info, title='Title'): + def addMetadata(self, url, meta=None, title='Title'): + info = '<a href="' + url + '">Experiment data in iRODS</a>' + if not meta == None: + info = info + '<br><table style="width: 500px;" cellspacing="1" cellpadding="1" border="1"><tbody>' + for key, value in meta.items(): + info = info + '<tr><td>' + key + '</td><td>' + value + '</td></tr>' + info = info + '</tbody></table>' self.experiment.add(info, title) return True diff --git a/utils/irodsConnector.py b/utils/irodsConnector.py index 79f11824659793d1be06be58896d5c8bd1f985fe..1a4b872b3f1ae846cd0da476beae677218d643d1 100644 --- a/utils/irodsConnector.py +++ b/utils/irodsConnector.py @@ -383,7 +383,7 @@ class irodsConnector(): sourcePath = os.path.join(source, o) if len(o.split(os.sep)) > 1: subColl = self.session.collections.create( - destination.path+'/'+os.path.basename(source)+'/'+os.path.dirname(o)) + destination.path+'/'+os.path.basename(source)+'/'+os.path.dirname(o).replace(os.sep,'/')) else: subColl = self.session.collections.create( destination.path+'/'+os.path.basename(source)) @@ -565,7 +565,7 @@ class irodsConnector(): if not coll == None: for root, subcolls, obj in coll.walk(): for o in obj: - listColl.append(os.path.join(root.path.split(coll.path)[1], o.name).strip('/')) + listColl.append(os.path.join(root.path.split(coll.path)[1], o.name).strip('/').replace("/", os.sep)) diff = [] same = [] @@ -603,7 +603,7 @@ class irodsConnector(): #md5 with open(os.path.join(dirPath, locPartialPath), "rb") as f: stream = f.read() - md5 = hashlib.md5(stream).hexdigest(); + md5 = hashlib.md5(stream).hexdigest() if objCheck != md5: diff.append((coll.path + '/' + iPartialPath, os.path.join(dirPath, locPartialPath))) else: @@ -733,14 +733,19 @@ class irodsConnector(): stderr = [] if len(out.MsParam_PI) > 0: try: - stdout = [o.decode() - for o in (out.MsParam_PI[0].inOutStruct.stdoutBuf.buf.strip(b'\x00')).split(b'\n')] - stderr = [o.decode() - for o in (out.MsParam_PI[0].inOutStruct.stderrBuf.buf.strip(b'\x00')).split(b'\n')] + if out.MsParam_PI[0].inOutStruct.stdoutBuf.buf != None: + stdout = [o.decode() + for o in (out.MsParam_PI[0].inOutStruct.stdoutBuf.buf.strip(b'\x00')).split(b'\n')] + else: + stdout = "" + if out.MsParam_PI[0].inOutStruct.stderrBuf.buf != None: + stderr = [o.decode() + for o in (out.MsParam_PI[0].inOutStruct.stderrBuf.buf.strip(b'\x00')).split(b'\n')] + else: + stdout = "" except AttributeError: logging.info('RULE EXECUTION ERROR: '+str(stdout+stderr), exc_info=True) - return stdout, stderr - + return "", "" return stdout, stderr diff --git a/utils/irodsConnectorIcommands.py b/utils/irodsConnectorIcommands.py index 154044bbc188547808011e29785911667ce8e727..94bcf88cd92d8ac4516b19a721d7b2e092950bde 100644 --- a/utils/irodsConnectorIcommands.py +++ b/utils/irodsConnectorIcommands.py @@ -1,18 +1,18 @@ -from irods.session import iRODSSession -from irods.access import iRODSAccess -from irods.exception import CATALOG_ALREADY_HAS_ITEM_BY_THAT_NAME, CAT_NO_ACCESS_PERMISSION -from irods.exception import CAT_SUCCESS_BUT_WITH_NO_INFO, CAT_INVALID_ARGUMENT, CAT_INVALID_USER -from irods.exception import CollectionDoesNotExist -from irods.ticket import Ticket - -from irods.models import Collection, DataObject, Resource, ResourceMeta, CollectionMeta, DataObjectMeta -from irods.models import User, UserGroup +from irods.session import iRODSSession +from irods.access import iRODSAccess +from irods.exception import CATALOG_ALREADY_HAS_ITEM_BY_THAT_NAME, CAT_NO_ACCESS_PERMISSION +from irods.exception import CAT_SUCCESS_BUT_WITH_NO_INFO, CAT_INVALID_ARGUMENT, CAT_INVALID_USER +from irods.exception import CollectionDoesNotExist +from irods.ticket import Ticket + +from irods.models import Collection, DataObject, Resource, ResourceMeta, CollectionMeta, DataObjectMeta +from irods.models import User, UserGroup from irods.column import Like, Between, In import irods.keywords as kw from irods.rule import Rule import subprocess -from subprocess import Popen, PIPE +from subprocess import Popen, PIPE import json import os from base64 import b64decode