diff --git a/src/python/dm/aps_beamline_tools/gui/addExperiment.py b/src/python/dm/aps_beamline_tools/gui/addExperiment.py index 2d579d1cd17edbfc2c3a4f68f326e081e6798e4c..569212f79f2a48a19856bd6deba3278c8649c7b1 100644 --- a/src/python/dm/aps_beamline_tools/gui/addExperiment.py +++ b/src/python/dm/aps_beamline_tools/gui/addExperiment.py @@ -4,6 +4,7 @@ from PyQt4.QtGui import QGridLayout, QSpacerItem, QSizePolicy, QPushButton, QWid QFont, QLabel, QTableWidget, QTableWidgetItem, QColor, QAbstractItemView from PyQt4.QtCore import Qt from dmApiFactory import DmApiFactory +from objects.userInfo import UserInfo # Define the experiments tab content: class AddExperimentTab(QWidget): @@ -95,21 +96,22 @@ class AddExperimentTab(QWidget): def startProposal(self): id = self.tableWidget.item(self.tableWidget.currentRow(), 0).data(Qt.UserRole) proposal = self.experimentPropApi.getBeamlineProposal(id) - self.parent.currentUsers = proposal + objectAllUsers = [UserInfo(x['badge'], x['firstName'], x['id'], x['lastName'], x['email']) for x in proposal['experimenters']] + self.parent.currentUsers = objectAllUsers self.setTab(5) # Resizes the horizontal headers to fit the screen - def resizeTable(self, width): - try: - totalWidths = sum(self.colWidths) - except AttributeError: - return - if self.detailsTable.verticalScrollBar().isVisible(): - newSize = [column * (width - 204) / totalWidths for column in self.colWidths] - else: - newSize = [column * (width - 204) / totalWidths for column in self.colWidths] - for i, column in enumerate(newSize): - self.detailsTable.horizontalHeader().resizeSection(i, column) + #def resizeTable(self, width): + # try: + # totalWidths = sum(self.colWidths) + # except AttributeError: + # return + # if self.detailsTable.verticalScrollBar().isVisible(): + # newSize = [column * (width - 204) / totalWidths for column in self.colWidths] + # else: + # newSize = [column * (width - 204) / totalWidths for column in self.colWidths] + # for i, column in enumerate(newSize): + # self.detailsTable.horizontalHeader().resizeSection(i, column) def toggleDetails(self): if self.detailBtn.text() == 'Hide Details': @@ -134,6 +136,7 @@ class AddExperimentTab(QWidget): self.detailsTable.setEditTriggers(QAbstractItemView.NoEditTriggers) self.detailsTable.setHorizontalHeaderLabels('Badge Number;First Name;Last Name;Institution'.split(';')) self.detailsTable.cellDoubleClicked.connect(lambda row, column: self.expandRow(row, column, self.detailsTable)) + self.detailsTable.horizontalHeader().setStretchLastSection(True) i = 0 for experimenter in proposal['experimenters']: diff --git a/src/python/dm/aps_beamline_tools/gui/daqsTab.py b/src/python/dm/aps_beamline_tools/gui/daqsTab.py index fb69ba280ac6acc46bb715f05cfba43cc97a1735..5b849c7ada5d7bd2af7b7467cf148341faaf1718 100644 --- a/src/python/dm/aps_beamline_tools/gui/daqsTab.py +++ b/src/python/dm/aps_beamline_tools/gui/daqsTab.py @@ -61,6 +61,7 @@ class DaqsTab(QWidget): self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers) self.tableWidget.setHorizontalHeaderLabels('ID;Data Directory;Number of Files;'.split(';')) self.tableWidget.cellDoubleClicked.connect(self.expandRow) + self.tableWidget.horizontalHeader().setStretchLastSection(True) i = 0 for daq in self.daqList: @@ -83,12 +84,12 @@ class DaqsTab(QWidget): self.tableWidget.resizeRowToContents(row) # Resizes the horizontal headers to fit the screen - def resizeTable(self, width): - totalWidths = sum(self.colWidths) - if self.tableWidget.verticalScrollBar().isVisible(): - newSize = [column * (width - 60) / totalWidths for column in self.colWidths] - else: - newSize = [column * (width - 19) / totalWidths for column in self.colWidths] - for i, column in enumerate(newSize): - self.tableWidget.horizontalHeader().resizeSection(i, column) + #def resizeTable(self, width): + # totalWidths = sum(self.colWidths) + # if self.tableWidget.verticalScrollBar().isVisible(): + # newSize = [column * (width - 60) / totalWidths for column in self.colWidths] + # else: + # newSize = [column * (width - 19) / totalWidths for column in self.colWidths] + # for i, column in enumerate(newSize): + # self.tableWidget.horizontalHeader().resizeSection(i, column) diff --git a/src/python/dm/aps_beamline_tools/gui/dmStationUi.py b/src/python/dm/aps_beamline_tools/gui/dmStationUi.py index 90e78c8402c3ee76a2ca734fb7a4f69a589d125a..edd38d4377bfec176ccf9763592bb8cfeb5faacf 100755 --- a/src/python/dm/aps_beamline_tools/gui/dmStationUi.py +++ b/src/python/dm/aps_beamline_tools/gui/dmStationUi.py @@ -28,7 +28,7 @@ class DmStationUi(QMainWindow): self.setGeometry(0, 0, 800, 400) # Variable to hold the user instances - self.currentUsers = {} ####HOW DO I MAKE THIS AN INSTANCE OF A PROPOSAL WITH NO DATA + self.currentUsers = [] # Create a stacked layout to connect the various pages self.stackedLayout = QStackedLayout() @@ -75,35 +75,26 @@ class DmStationUi(QMainWindow): self.move(frameGeo.topLeft()) # Calls for the table to be resized when a resize event is called - def resizeEvent(self, event): - windowSize = event.size().width() - currentIndex = self.getTab() - if currentIndex == 0: - return - elif currentIndex == 1: - ExperimentsTab.resizeTable(self.experimentsTab, windowSize) - elif currentIndex == 2: - DaqsTab.resizeTable(self.daqsTab, windowSize) - elif currentIndex == 3: - UploadsTab.resizeTable(self.uploadsTab, windowSize) - elif currentIndex == 4: - AddExperimentTab.resizeTable(self.addExperimentTab, windowSize) - elif currentIndex == 5: - ManageUsersTab.resizeTable(self.manageUsersTab, windowSize) + #def resizeEvent(self, event): + # windowSize = event.size().width() + # currentIndex = self.getTab() + # if currentIndex == 0: + # return + # elif currentIndex == 1: + # ExperimentsTab.resizeTable(self.experimentsTab, windowSize) + # elif currentIndex == 2: + # DaqsTab.resizeTable(self.daqsTab, windowSize) + # elif currentIndex == 3: + # UploadsTab.resizeTable(self.uploadsTab, windowSize) + # elif currentIndex == 4: + # AddExperimentTab.resizeTable(self.addExperimentTab, windowSize) + # elif currentIndex == 5: + # ManageUsersTab.resizeTable(self.manageUsersTab, windowSize) def currentChanged(self, index): newIndex = index - if newIndex == 1: - ExperimentsTab.resizeTable(self.experimentsTab, self.geometry().width()) - elif newIndex == 2: - DaqsTab.resizeTable(self.daqsTab, self.geometry().width()) - elif newIndex == 3: - UploadsTab.resizeTable(self.uploadsTab, self.geometry().width()) - elif newIndex == 4: - AddExperimentTab.resizeTable(self.addExperimentTab, self.geometry().width()) - elif newIndex == 5: + if newIndex == 5: ManageUsersTab.updateUsers(self.manageUsersTab) - ManageUsersTab.resizeTable(self.manageUsersTab, self.geometry().width()) def getTab(self): return self.stackedLayout.currentIndex() diff --git a/src/python/dm/aps_beamline_tools/gui/experimentsTab.py b/src/python/dm/aps_beamline_tools/gui/experimentsTab.py index 0d0df005a673e4796132265c77695ea079c45cae..5a82339a9911133cb4e511a1153f87b7e2a86acc 100644 --- a/src/python/dm/aps_beamline_tools/gui/experimentsTab.py +++ b/src/python/dm/aps_beamline_tools/gui/experimentsTab.py @@ -65,6 +65,7 @@ class ExperimentsTab(QWidget): self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers) self.tableWidget.setHorizontalHeaderLabels('Name;Description;Start Date;'.split(';')) self.tableWidget.cellDoubleClicked.connect(self.expandRow) + self.tableWidget.horizontalHeader().setStretchLastSection(True) i = 0 for experiment in self.experimentList: @@ -89,12 +90,12 @@ class ExperimentsTab(QWidget): self.tableWidget.resizeRowToContents(row) # Resizes the horizontal headers to fit the screen - def resizeTable(self, width): - totalWidths = sum(self.colWidths) - if self.tableWidget.verticalScrollBar().isVisible(): - newSize = [column * (width - 60) / totalWidths for column in self.colWidths] - else: - newSize = [column * (width - 60) / totalWidths for column in self.colWidths] - for i, column in enumerate(newSize): - self.tableWidget.horizontalHeader().resizeSection(i, column) + #def resizeTable(self, width): + # totalWidths = sum(self.colWidths) + # if self.tableWidget.verticalScrollBar().isVisible(): + # newSize = [column * (width - 60) / totalWidths for column in self.colWidths] + # else: + # newSize = [column * (width - 60) / totalWidths for column in self.colWidths] + # for i, column in enumerate(newSize): + # self.tableWidget.horizontalHeader().resizeSection(i, column) diff --git a/src/python/dm/aps_beamline_tools/gui/manageUsersTab.py b/src/python/dm/aps_beamline_tools/gui/manageUsersTab.py index 80a409fc7ab7bdd29fa42994dbbb6b45c8c6b03f..d3ad7b8d19bb7e74af2ef5de010484897a5015a9 100644 --- a/src/python/dm/aps_beamline_tools/gui/manageUsersTab.py +++ b/src/python/dm/aps_beamline_tools/gui/manageUsersTab.py @@ -1,9 +1,11 @@ #!/usr/bin/env python from PyQt4.QtGui import QGridLayout, QSpacerItem, QSizePolicy, QPushButton, QWidget, \ - QFont, QLabel, QTableWidget, QTableWidgetItem, QColor, QAbstractItemView, QComboBox + QFont, QLabel, QTableWidget, QTableWidgetItem, QColor, QAbstractItemView, QComboBox, QVBoxLayout from PyQt4.QtCore import Qt from dmApiFactory import DmApiFactory +from objects.userInfo import UserInfo + # Define the experiments tab content: class ManageUsersTab(QWidget): @@ -23,53 +25,70 @@ class ManageUsersTab(QWidget): lbl = QLabel(self.stationName + ' User Management', self) lbl.setAlignment(Qt.AlignCenter) lbl.setFont(labelFont) - grid.addWidget(lbl, 0, 0, 1, 7) + grid.addWidget(lbl, 0, 0, 1, 4) backBtn = QPushButton('Back', self) backBtn.clicked.connect(lambda: self.setTab(1)) backBtn.setMinimumWidth(100) - grid.addWidget(backBtn, 1, 5, 1, 2, Qt.AlignCenter) + grid.addWidget(backBtn, 1, 2, Qt.AlignRight) - grid.addItem(QSpacerItem(750, 40, QSizePolicy.Expanding, QSizePolicy.Minimum), 2, 0) - grid.addItem(QSpacerItem(950, 40, QSizePolicy.Expanding, QSizePolicy.Minimum), 2, 2, 1, 5) + #grid.addItem(QSpacerItem(750, 40, QSizePolicy.Maximum, QSizePolicy.Minimum), 2, 0) + #grid.addItem(QSpacerItem(750, 40, QSizePolicy.Maximum, QSizePolicy.Minimum), 2, 2, 1, 5) currentLabel = QLabel('Current Users', self) currentLabel.setAlignment(Qt.AlignCenter) - grid.addWidget(currentLabel, 3, 0) + #grid.addWidget(currentLabel, 3, 0) self.userDropdown = QComboBox(self) self.userDropdown.setMaximumWidth(400) self.updateDropdown() - grid.addWidget(self.userDropdown, 3, 2, 1, 5, Qt.AlignCenter) self.currentUserTable = QTableWidget() self.availableUserTable = QTableWidget() - grid.addWidget(self.currentUserTable, 4, 0, 1, 1) moveUserBtn = QPushButton('<->', self) - moveUserBtn.setFixedSize(40, 40) - moveUserBtn.clicked.connect(self.moveUsers) - grid.addWidget(moveUserBtn, 4, 1) - grid.addWidget(self.availableUserTable, 4, 2, 1, 5) - grid.addItem(QSpacerItem(20, 1000, QSizePolicy.Minimum, QSizePolicy.Expanding), 4, 3, 1, 1) + moveUserBtn.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum) + #moveUserBtn.clicked.connect(self.moveUsers) + #grid.addWidget(moveUserBtn, 4, 1) + #grid.addWidget(self.availableUserTable, 4, 2, 1, 2) + #grid.addItem(QSpacerItem(20, 1000, QSizePolicy.Minimum, QSizePolicy.Expanding), 4, 3, 1, 1) startDaqBtn = QPushButton('Start DAQ', self) startDaqBtn.clicked.connect(lambda: self.setTab(0)) startDaqBtn.setMinimumWidth(150) startDaqBtn.setMaximumWidth(200) startDaqBtn.setFixedHeight(40) - grid.addWidget(startDaqBtn, 5, 0, Qt.AlignCenter) + #grid.addWidget(startDaqBtn, 5, 0, Qt.AlignCenter) startUploadBtn = QPushButton('Start Upload', self) startUploadBtn.clicked.connect(lambda: self.setTab(0)) startUploadBtn.setMinimumWidth(150) startUploadBtn.setMaximumWidth(200) startUploadBtn.setFixedHeight(40) - grid.addWidget(startUploadBtn, 5, 2, 1, 5, Qt.AlignCenter) + #grid.addWidget(startUploadBtn, 5, 2, 1, 5, Qt.AlignCenter) grid.addItem(QSpacerItem(20, 10, QSizePolicy.Expanding, QSizePolicy.Minimum), 6, 0) + vColumn1 = QVBoxLayout() + vColumn1.addWidget(currentLabel) + vColumn1.addWidget(self.currentUserTable) + vColumn1.addWidget(startDaqBtn) + vColumn1.setAlignment(startDaqBtn, Qt.AlignCenter) + grid.addLayout(vColumn1, 2, 0) + + vColumn2 = QVBoxLayout() + vColumn2.addWidget(moveUserBtn) + grid.addLayout(vColumn2, 2, 1) + + vColumn3 = QVBoxLayout() + vColumn3.addWidget(self.userDropdown, Qt.AlignCenter) + vColumn3.addWidget(self.availableUserTable) + vColumn3.addWidget(startUploadBtn) + vColumn3.setAlignment(startUploadBtn, Qt.AlignCenter) + grid.addLayout(vColumn3, 2, 2) + self.manageUsersTabWidget = QWidget() self.manageUsersTabWidget.setLayout(grid) - + + # Populates the dropdown with available proposals def updateDropdown(self): self.proposalList = self.experimentPropApi.listBeamlineProposals() self.userDropdown.addItem('All Users', -1) @@ -79,19 +98,19 @@ class ManageUsersTab(QWidget): # Resizes the horizontal headers to fit the screen def resizeTable(self, width): totalWidths = sum(self.colWidths) - if self.availableUserTable.verticalScrollBar().isVisible(): - newSize = [column * (width - 490) / totalWidths for column in self.colWidths] - else: - newSize = [column * (width - 480) / totalWidths for column in self.colWidths] - for i, column in enumerate(newSize): - self.availableUserTable.horizontalHeader().resizeSection(i, column) - - if self.currentUserTable.verticalScrollBar().isVisible(): - newSize = [column * (width - 490) / totalWidths for column in self.colWidths] - else: - newSize = [column * (width - 480) / totalWidths for column in self.colWidths] - for i, column in enumerate(newSize): - self.currentUserTable.horizontalHeader().resizeSection(i, column) + #if self.availableUserTable.verticalScrollBar().isVisible(): + # newSize = [column * (width - 490) / totalWidths for column in self.colWidths] + #else: + # newSize = [column * (width - 470) / totalWidths for column in self.colWidths] + #for i, column in enumerate(newSize): + # self.availableUserTable.horizontalHeader().resizeSection(i, column) + #print 4 + #if self.currentUserTable.verticalScrollBar().isVisible(): + # newSize = [column * (width - 470) / totalWidths for column in self.colWidths] + #else: + # newSize = [column * (width - 489) / totalWidths for column in self.colWidths] + #for i, column in enumerate(newSize): + # self.currentUserTable.horizontalHeader().resizeSection(i, column) # Used to change between tabs def setTab(self, tab): @@ -101,39 +120,49 @@ class ManageUsersTab(QWidget): def expandRow(self, row, column, table): table.resizeRowToContents(row) + # Populates both user tables with their corresponding users def updateUsers(self): # Setup the available users table id = self.userDropdown.itemData(self.userDropdown.currentIndex(), Qt.UserRole) if id != -1: proposal = self.experimentPropApi.getBeamlineProposal(id) - self.availableUserTable.setRowCount(len(proposal['experimenters'])) + self.availableUserTable.setRowCount(min(len(proposal['experimenters'] + 1, 101))) allUsers = proposal['experimenters'] else: allUsers = self.userApi.getUsers() self.availableUserTable.setRowCount(len(allUsers)) + objectAllUsers = [] + for x in allUsers: + try: + objectAllUsers.append(UserInfo(x['badge'], x['firstName'], x['id'], x['lastName'], x['email'])) + except KeyError, key: + if key.message == 'badge': + continue + else: + objectAllUsers.append(UserInfo(x['badge'], x['firstName'], x['id'], x['lastName'], '')) self.availableUserTable.setColumnCount(4) self.colWidths = (70, 70, 70, 125) for i, size in enumerate(self.colWidths): self.availableUserTable.horizontalHeader().resizeSection(i, size) self.availableUserTable.setEditTriggers(QAbstractItemView.NoEditTriggers) - self.availableUserTable.setHorizontalHeaderLabels('Badge;First Name;Last Name;Email;'.split(';')) + self.availableUserTable.setHorizontalHeaderLabels('Badge;First;Last;Email;'.split(';')) self.availableUserTable.cellDoubleClicked.connect(lambda row, column: self.expandRow(row, column, self.availableUserTable)) i = 0 - currentIDs = [x['id'] for x in self.parent.currentUsers['experimenters']] - for experimenter in allUsers: - if experimenter['id'] in currentIDs: + currentIDs = [x.getID() for x in self.parent.currentUsers] + for experimenter in objectAllUsers: + if experimenter.getID() in currentIDs: self.availableUserTable.removeRow(i) continue - try: - rowBadge = QTableWidgetItem(experimenter['badge']) - except KeyError: + + rowBadge = QTableWidgetItem(experimenter.getBadge()) + if rowBadge is None: continue - rowFirstName = QTableWidgetItem(experimenter['firstName']) - rowLastName = QTableWidgetItem(experimenter['lastName']) - try: - rowEmail = QTableWidgetItem(experimenter['email']) - except KeyError: + rowBadge.setData(Qt.UserRole, experimenter.getID()) + rowFirstName = QTableWidgetItem(experimenter.getFirstName()) + rowLastName = QTableWidgetItem(experimenter.getLastName()) + rowEmail = QTableWidgetItem(experimenter.getEmail()) + if rowEmail is None: rowEmail = QTableWidgetItem('') self.availableUserTable.setItem(i, 0, rowBadge) self.availableUserTable.setItem(i, 1, rowFirstName) @@ -147,21 +176,22 @@ class ManageUsersTab(QWidget): i += 1 # Set up the current users table - self.currentUserTable.setRowCount(len(self.parent.currentUsers['experimenters'])) + self.currentUserTable.setRowCount(len(self.parent.currentUsers)) self.currentUserTable.setColumnCount(4) for i, size in enumerate(self.colWidths): self.currentUserTable.horizontalHeader().resizeSection(i, size) self.currentUserTable.setEditTriggers(QAbstractItemView.NoEditTriggers) - self.currentUserTable.setHorizontalHeaderLabels('Badge;First Name;Last Name;Email;'.split(';')) + self.currentUserTable.setHorizontalHeaderLabels('Badge;First;Last;Email;'.split(';')) self.currentUserTable.cellDoubleClicked.connect(lambda row, column: self.expandRow(row, column, self.currentUserTable)) i = 0 - for experimenter in self.parent.currentUsers['experimenters']: - rowBadge = QTableWidgetItem(experimenter['badge']) - rowFirstName = QTableWidgetItem(experimenter['firstName']) - rowLastName = QTableWidgetItem(experimenter['lastName']) + for experimenter in self.parent.currentUsers: + rowBadge = QTableWidgetItem(experimenter.getBadge()) + rowBadge.setData(Qt.UserRole, experimenter.getID()) + rowFirstName = QTableWidgetItem(experimenter.getFirstName()) + rowLastName = QTableWidgetItem(experimenter.getLastName()) try: - rowEmail = QTableWidgetItem(experimenter['email']) + rowEmail = QTableWidgetItem(experimenter.getEmail()) except KeyError: rowEmail = QTableWidgetItem('') self.currentUserTable.setItem(i, 0, rowBadge) @@ -175,8 +205,29 @@ class ManageUsersTab(QWidget): rowEmail.setBackground(QColor.fromRgb(230, 241, 245)) i += 1 - def moveUsers(self): - temp = self.availableUserTable.selectedItems()[0].row() - temp2 = self.availableUserTable.item(temp, 0) - selectedAvailable = [x.row(0).text() for x in self.availableUserTable.selectedItems()] - currentAvailable = self.currentUserTable.item(self.currentUserTable.currentRow(), 0) + self.currentUserTable.horizontalHeader().setStretchLastSection(True) + self.availableUserTable.horizontalHeader().setStretchLastSection(True) + + + # Moves users from one table to the other + #def moveUsers(self): + #for selection in self.availableUserTable.selectedItems(): + # userID = self.availableUserTable.item(selection.row(), 0).data(Qt.UserRole) + + #selectedAvailable = [self.availableUserTable.item(x.row(), 0).data(Qt.UserRole) for x in self.availableUserTable.selectedItems()] + #currentAvailable = [self.currentUserTable.item(x.row(), 0).data(Qt.UserRole) for x in self.currentUserTable.selectedItems()] + + #for id in selectedAvailable: + # SHOULD I GET THE USER FROM THE ALLUSERS LIST, IF SO HOW SHOULD I PARSE BY ID? + # self.parent.currentUsers.append(self.userApi.getUserById(id)) + + # for id in currentAvailable: + # AGAIN A PARSING PROBLEM, SHOULD I INSTEAD HAVE THE LIST ONLY BE OF IDs? + # THIS WOULD HANDLE PARSING BUT WOULD CAUSE THE NEED FOR DYNAMIC API CALLS.(Probably the best way to do this) + # self.parent.currentUsers.remove( + + #selectedAvailable = [x.row(0).text() for x in self.availableUserTable.selectedItems()] + #currentAvailable = self.currentUserTable.item(self.currentUserTable.currentRow(), 0) + + + diff --git a/src/python/dm/aps_beamline_tools/gui/objects/__init__.py b/src/python/dm/aps_beamline_tools/gui/objects/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/python/dm/aps_beamline_tools/gui/objects/userInfo.py b/src/python/dm/aps_beamline_tools/gui/objects/userInfo.py new file mode 100644 index 0000000000000000000000000000000000000000..df65e6306e62666c4600e6067aab0457fdf253fd --- /dev/null +++ b/src/python/dm/aps_beamline_tools/gui/objects/userInfo.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python + + +# User Object Class +class UserInfo: + def __init__(self, badge, firstName, id, lastName, email=None, lastUpdate=None, username=None, isLocalUser=None): + self.badge = badge + if email == None: + self.email = '' + else: + self.email = email + self.firstName = firstName + self.id = id + self.isLocalUser = isLocalUser + self.lastName = lastName + self.lastUpdate = lastUpdate + self.username = username + + def getBadge(self): + return self.badge + + def getEmail(self): + return self.email + + def getFirstName(self): + return self.firstName + + def getID(self): + return self.id + + def getIsLocalUser(self): + return self.isLocalUser + + def getLastName(self): + return self.lastName + + def getLastUpdate(self): + return self.lastUpdate + + def getUsername(self): + return self.username + diff --git a/src/python/dm/aps_beamline_tools/gui/uploadsTab.py b/src/python/dm/aps_beamline_tools/gui/uploadsTab.py index c1147a2be8e251cc8e09acbe1905022e8756dfb7..b288356a76ad2b3ded65143cf9f6ef14f318fe4a 100644 --- a/src/python/dm/aps_beamline_tools/gui/uploadsTab.py +++ b/src/python/dm/aps_beamline_tools/gui/uploadsTab.py @@ -62,6 +62,7 @@ class UploadsTab(QWidget): self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers) self.tableWidget.setHorizontalHeaderLabels('ID;Data Directory;Number of Files;'.split(';')) self.tableWidget.cellDoubleClicked.connect(self.expandRow) + self.tableWidget.horizontalHeader().setStretchLastSection(True) i = 0 for upload in self.uploadList: @@ -84,12 +85,12 @@ class UploadsTab(QWidget): self.tableWidget.resizeRowToContents(row) # Resizes the horizontal headers to fit the screen - def resizeTable(self, width): - totalWidths = sum(self.colWidths) - if self.tableWidget.verticalScrollBar().isVisible(): - newSize = [column * (width - 60) / totalWidths for column in self.colWidths] - else: - newSize = [column * (width - 19) / totalWidths for column in self.colWidths] - for i, column in enumerate(newSize): - self.tableWidget.horizontalHeader().resizeSection(i, column) + #def resizeTable(self, width): + # totalWidths = sum(self.colWidths) + # if self.tableWidget.verticalScrollBar().isVisible(): + # newSize = [column * (width - 60) / totalWidths for column in self.colWidths] + # else: + # newSize = [column * (width - 19) / totalWidths for column in self.colWidths] + # for i, column in enumerate(newSize): + # self.tableWidget.horizontalHeader().resizeSection(i, column)