From a1e611e7c03bcd4302baf937878b4e97ae71de03 Mon Sep 17 00:00:00 2001 From: Denis Spiridonov Date: Wed, 4 Apr 2012 12:14:10 +0400 Subject: [PATCH] add Refresh table button --- console/gui/ConnectionTabs.py | 4 +- console/gui/mainframe.py | 297 +++++++++++++++++++--------------- scripts/cl-console-gui | 7 +- 3 files changed, 172 insertions(+), 136 deletions(-) diff --git a/console/gui/ConnectionTabs.py b/console/gui/ConnectionTabs.py index 5658488..c116fa8 100644 --- a/console/gui/ConnectionTabs.py +++ b/console/gui/ConnectionTabs.py @@ -189,7 +189,7 @@ class MyTabBar(QtGui.QTabBar): self._parent.close_tab(self.tabAt(event.pos())) class ToolTabWidget(QtGui.QTabWidget): - def __init__(self, app): + def __init__(self, app, host = None, port = None): QtGui.QTabWidget.__init__(self) self.app = app @@ -262,7 +262,7 @@ class ToolTabWidget(QtGui.QTabWidget): self.show() self.app.processEvents() - self.FirstWidget.connect_to_localhost() + self.FirstWidget.connect_to_localhost(host, port) if self.FirstWidget.ClientObj.client: self.localhost_ClientObj = self.FirstWidget.ClientObj diff --git a/console/gui/mainframe.py b/console/gui/mainframe.py index d8894ff..182c17d 100755 --- a/console/gui/mainframe.py +++ b/console/gui/mainframe.py @@ -732,6 +732,7 @@ class MainFrame(QtGui.QWidget): self.ClientObj.MainWidget.left_frame.create_steps \ (self.method_name, steps) +############# Begin add Table def add_element_table (self, field, x, y): self.error_label_dict[field.name] = ErrorLabel(self) self.grid.addWidget(self.error_label_dict[field.name], x, y, 1, 2) @@ -766,6 +767,115 @@ class MainFrame(QtGui.QWidget): self.table_widget.setSelectionMode\ (QtGui.QAbstractItemView.SelectionMode.MultiSelection) + # add all items in table + self.add_table_items(table, field, lenColumn, self.table_widget) + + minimum = QtGui.QSizePolicy.Minimum + self.table_widget.setSizePolicy(minimum, minimum) + + self.table_widget.setContentsMargins(0, 0, 0, 0) + + self.view_dict[field.name] = self.table_widget + self.label_dict[field.name] = LabelWordWrap(field.label, self) + self.table_dict[field.name] = field + + if self.expert: + self.expert_list.append(self.view_dict[field.name]) + + self.grid.addWidget(self.label_dict[field.name], x, y) + x += 1 + + # add 2 button if field type = writable + if field.type == 'writable': + self.view_dict[field.name].horizontalHeader().setClickable(False) + + unit_widget = QtGui.QWidget(self) + unit_layout = QtGui.QHBoxLayout(unit_widget) + + plus_but = QtGui.QPushButton(self) + try: + plus_but.setIcon(QtGui.QIcon.fromTheme('list-add')) + except: + plus_but.setText('+') + + plus_but.setToolTip(_('Add row')) + plus_but.setFixedWidth(30) + + self.view_dict[field.name].minus_but = QtGui.QPushButton(self) + try: + self.view_dict[field.name].minus_but.setIcon \ + (QtGui.QIcon.fromTheme('list-remove')) + except: + self.view_dict[field.name].minus_but.setText('-') + self.view_dict[field.name].minus_but.setToolTip(_('Delete row')) + self.view_dict[field.name].minus_but.setFixedWidth(30) + self.view_dict[field.name].minus_but.setDisabled(True) + + refresh_but = QtGui.QPushButton(self) + try: + refresh_but.setIcon(QtGui.QIcon.fromTheme('view-refresh')) + except: + refresh_but.setText('R') + + refresh_but.setToolTip(_('Refresh Table')) + refresh_but.setFixedWidth(30) + + clear_but = QtGui.QPushButton(self) + try: + clear_but.setIcon(QtGui.QIcon.fromTheme('edit-clear')) + except: + clear_but.setText('C') + + clear_but.setToolTip(_('Clear Table')) + clear_but.setFixedWidth(30) + + plus_but.clicked.connect(self.plus_row(self.view_dict[field.name],\ + self.table_dict[field.name])) + self.view_dict[field.name].minus_but.clicked.connect(self.minus_row \ + (self.view_dict[field.name])) + refresh_but.clicked.connect(self.refresh_table (table, field, \ + lenColumn, self.view_dict[field.name])) + clear_but.clicked.connect(self.minus_row \ + (self.view_dict[field.name], True)) + + unit_layout.addWidget(plus_but) + unit_layout.addWidget(self.view_dict[field.name].minus_but) + unit_layout.addWidget(refresh_but) + unit_layout.addWidget(clear_but) + + unit_layout.setAlignment(QtCore.Qt.AlignLeft) +# unit_widget.setLayout(unit_layout) + self.grid.addWidget(unit_widget, x, y) + x +=1 + + self.add_select_check(self.view_dict[field.name]) + + else: + self.view_dict[field.name].hideColumn(0) + + # set width column + self.view_dict[field.name].horizontalHeader().resizeSections\ + (QtGui.QHeaderView.ResizeMode.ResizeToContents) + + # No Selection + self.view_dict[field.name].setSelectionMode \ + (QtGui.QAbstractItemView.SelectionMode.NoSelection) + + if field.uncompatible: + self.label_dict[field.name].setToolTip(field.uncompatible) + self.label_dict[field.name].setDisabled(True) + self.view_dict[field.name].setToolTip(field.uncompatible) + self.view_dict[field.name].setDisabled(True) + if field.type == 'writable': + unit_widget.setToolTip(field.uncompatible) + unit_widget.setDisabled(True) + + # Resize table + self.resize_table(self.table_widget) + + self.grid.addWidget(self.view_dict[field.name], x, y, 1, 2) + + def add_table_items(self, table, field, lenColumn, table_widget): for column in range(lenColumn): # for readonly view col = column + 1 @@ -773,13 +883,13 @@ class MainFrame(QtGui.QWidget): for row in range (len(table.body.stringArray)): tablewidgetitem = QtGui.QTableWidgetItem \ (table.body.stringArray[row].string[column]) - self.table_widget.setItem(row, col, tablewidgetitem) + table_widget.setItem(row, col, tablewidgetitem) - self.table_widget.item(row, col).setFlags \ + table_widget.item(row, col).setFlags \ (QtCore.Qt.ItemIsEditable) - font = self.table_widget.item(row, col).font() + font = table_widget.item(row, col).font() font.setWeight(QtGui.QFont.Black) - self.table_widget.item(row, col).setFont(font) + table_widget.item(row, col).setFont(font) # if not readonly elif table.values.ChoiceValue[column].typefield == 'combo': @@ -811,7 +921,7 @@ class MainFrame(QtGui.QWidget): currentIndexChanged.connect(self.OnChanged\ (row, column, self.table_dict[field.name])) - self.table_widget.setCellWidget(row, col, \ + table_widget.setCellWidget(row, col, \ self.table_combo_list[len(self.table_combo_list)-1]) elif table.values.ChoiceValue[column].typefield == 'comboEdit': @@ -835,7 +945,7 @@ class MainFrame(QtGui.QWidget): self.table_comboEdit_list.append(pCombo) - self.table_widget.setCellWidget(row, col, \ + table_widget.setCellWidget(row, col, \ self.table_comboEdit_list[len \ (self.table_comboEdit_list)-1]) @@ -862,7 +972,7 @@ class MainFrame(QtGui.QWidget): comments, add_ability) self.table_multi_list.append(self.multi_obj) - self.table_widget.setCellWidget(row, col, \ + table_widget.setCellWidget(row, col, \ self.table_multi_list[len(self.table_multi_list)-1]) elif table.values.ChoiceValue[column].typefield in \ @@ -887,7 +997,7 @@ class MainFrame(QtGui.QWidget): if ind == 'on': pCheckB.setChecked(True) self.table_check_list.append(pCheckB) - self.table_widget.setCellWidget(row, col, \ + table_widget.setCellWidget(row, col, \ self.table_check_list[len(self.table_check_list)-1]) @@ -896,133 +1006,34 @@ class MainFrame(QtGui.QWidget): tablewidgetitem = QtGui.QTableWidgetItem \ (table.body.stringArray[row].string[column]) - self.table_widget.setItem(row, col, tablewidgetitem) + table_widget.setItem(row, col, tablewidgetitem) if column > len(table.values.ChoiceValue): - i = self.table_widget.item(row, col) - self.table_widget.item(row, col).setFlags \ + i = table_widget.item(row, col) + table_widget.item(row, col).setFlags \ (QtCore.Qt.ItemIsEditable) - font = self.table_widget.item(row, col).font() + font = table_widget.item(row, col).font() font.setWeight(QtGui.QFont.Black) - self.table_widget.item(row, col).setFont(font) + table_widget.item(row, col).setFont(font) elif table.values.ChoiceValue[column].typefield == 'text': for row in range (len(table.body.stringArray)): tablewidgetitem = QtGui.QTableWidgetItem \ (table.body.stringArray[row].string[column]) - self.table_widget.setItem(row, col, tablewidgetitem) + table_widget.setItem(row, col, tablewidgetitem) - self.table_widget.item(row, col).setFlags \ + table_widget.item(row, col).setFlags \ (QtCore.Qt.ItemIsEditable) - font = self.table_widget.item(row, col).font() + font = table_widget.item(row, col).font() font.setWeight(QtGui.QFont.Black) - self.table_widget.item(row, col).setFont(font) + table_widget.item(row, col).setFont(font) elif table.values.ChoiceValue[column].typefield == 'password': for row in range (len(table.body.stringArray)): password = PasswordWidget(self, \ table.body.stringArray[row].string[column]) - self.table_widget.setCellWidget(row, col, password) - - minimum = QtGui.QSizePolicy.Minimum - self.table_widget.setSizePolicy(minimum, minimum) - - self.table_widget.setContentsMargins(0, 0, 0, 0) - - self.view_dict[field.name] = self.table_widget - self.label_dict[field.name] = LabelWordWrap(field.label, self) - self.table_dict[field.name] = field - - if self.expert: - self.expert_list.append(self.view_dict[field.name]) - - self.grid.addWidget(self.label_dict[field.name], x, y) - x += 1 - - # add 2 button if field type = writable - if field.type == 'writable': - self.view_dict[field.name].horizontalHeader().setClickable(False) - - unit_widget = QtGui.QWidget(self) - unit_layout = QtGui.QHBoxLayout(unit_widget) - - plus_but = QtGui.QPushButton(self) - try: - plus_but.setIcon(QtGui.QIcon.fromTheme('list-add')) - except: - plus_but.setText('+') - - plus_but.setToolTip(_('Add row')) - plus_but.setFixedWidth(30) - - self.view_dict[field.name].minus_but = QtGui.QPushButton(self) - try: - self.view_dict[field.name].minus_but.setIcon \ - (QtGui.QIcon.fromTheme('list-remove')) - except: - self.view_dict[field.name].minus_but.setText('-') - self.view_dict[field.name].minus_but.setToolTip(_('Delete row')) - self.view_dict[field.name].minus_but.setFixedWidth(30) - self.view_dict[field.name].minus_but.setDisabled(True) - - clear_but = QtGui.QPushButton(self) - try: - clear_but.setIcon(QtGui.QIcon.fromTheme('edit-clear')) - except: - clear_but.setText('C') - - clear_but.setToolTip(_('Clear table')) - clear_but.setFixedWidth(30) - - plus_but.clicked.connect(self.plus_row(self.view_dict[field.name],\ - self.table_dict[field.name])) - self.view_dict[field.name].minus_but.clicked.connect(self.minus_row \ - (self.view_dict[field.name])) - clear_but.clicked.connect(self.minus_row \ - (self.view_dict[field.name], True)) - - unit_layout.addWidget(plus_but) - unit_layout.addWidget(self.view_dict[field.name].minus_but) - unit_layout.addWidget(clear_but) - - unit_layout.setAlignment(QtCore.Qt.AlignLeft) -# unit_widget.setLayout(unit_layout) - self.grid.addWidget(unit_widget, x, y) - x +=1 - - self.add_select_check(self.view_dict[field.name]) - - else: - self.view_dict[field.name].hideColumn(0) - - # set width column - self.view_dict[field.name].horizontalHeader().resizeSections\ - (QtGui.QHeaderView.ResizeMode.ResizeToContents) - - # No Selection - self.view_dict[field.name].setSelectionMode \ - (QtGui.QAbstractItemView.SelectionMode.NoSelection) - - if field.uncompatible: - self.label_dict[field.name].setToolTip(field.uncompatible) - self.label_dict[field.name].setDisabled(True) - self.view_dict[field.name].setToolTip(field.uncompatible) - self.view_dict[field.name].setDisabled(True) - if field.type == 'writable': - unit_widget.setToolTip(field.uncompatible) - unit_widget.setDisabled(True) - - # Resize table - h = self.table_widget.horizontalHeader().height() + \ - 2 * self.table_widget.frameWidth() - self.table_widget.horizontalScrollBar().setFixedHeight(16) - h += self.table_widget.horizontalScrollBar().height() - for row_in_table in range (self.table_widget.rowCount()): - h += self.table_widget.rowHeight(row_in_table) - self.table_widget.setFixedHeight(h) - - self.grid.addWidget(self.view_dict[field.name], x, y, 1, 2) + table_widget.setCellWidget(row, col, password) def add_select_check(self, table): # add row Selected @@ -1059,23 +1070,41 @@ class MainFrame(QtGui.QWidget): for i in range (top, bottom + 1): table.model().removeRow(top) else: - while True: + for j in range (table.rowCount()): for i in range (table.rowCount()): if table.cellWidget(i,0).isChecked(): table.model().removeRow(i) break - if i == table.rowCount() or table.rowCount() == 0: - break table.minus_but.setDisabled(True) # Resize table - h = table.horizontalHeader().height() + \ - 2 * table.frameWidth() - h += table.horizontalScrollBar().height() - for row_in_table in range (table.rowCount()): - h += table.rowHeight(row_in_table) - table.setFixedHeight(h) + self.resize_table(table) return wrapper + def refresh_table(self, table, field, lenColumn, table_widget): + def wrapper(): + self.minus_row(table_widget, True) + lenBody = 0 + if len (field.tablevalue.body.stringArray): + if len (field.tablevalue.body.stringArray[0].string): + lenBody = len(field.tablevalue.body.stringArray) + table_widget.setRowCount(lenBody) + # Resize table + self.resize_table(table_widget) + + self.add_table_items(table, field, lenColumn, table_widget) + self.add_select_check(table_widget) + return wrapper + + def resize_table(self, table): + # Resize table + h = table.horizontalHeader().height() + \ + 2 * table.frameWidth() + h += table.horizontalScrollBar().height() + for row_in_table in range (table.rowCount()): + h += table.rowHeight(row_in_table) + table.setFixedHeight(h) +############# End add Table + def collect_object(self, expert = False): def wrapper(): '''add variable values from widget in param_object''' @@ -1429,6 +1458,7 @@ class MainFrame(QtGui.QWidget): print field.name for i in range(len(table.values.ChoiceValue[column].onChanged.\ string)): + col = i + 1 if table.values.ChoiceValue[column].onChanged.string[i] == '': # print i, "=====> ''" ''' do nothing ''' @@ -1437,13 +1467,14 @@ class MainFrame(QtGui.QWidget): elif table.values.ChoiceValue[column].onChanged.string[i] == \ None: '''remove value''' - self.OnChanged_None(field, row, i) + self.OnChanged_None(field, row, col) # Event when the state of the widget QComboBox changed elif table.values.ChoiceValue[column].onChanged.string[i] == \ 'get_body': '''insert the value specified in "body table" for this''' - self.OnChanged_get_body(field, table, column, row, i) +# self.OnChanged_get_body(field, table, column, row, i) + pass @@ -1451,21 +1482,21 @@ class MainFrame(QtGui.QWidget): '''set Check''' if type(self.view_dict[field.name].cellWidget(row,i)) == \ CentralCheckBox: - self.view_dict[field.name].cellWidget(row,i). \ + self.view_dict[field.name].cellWidget(row,col). \ setChecked(True) elif table.values.ChoiceValue[column].onChanged.string[i] == 'off': '''set unCheck''' - if type(self.view_dict[field.name].cellWidget(row,i)) == \ + if type(self.view_dict[field.name].cellWidget(row,col)) == \ CentralCheckBox: - self.view_dict[field.name].cellWidget(row,i). \ + self.view_dict[field.name].cellWidget(row,col). \ setChecked(False) elif table.values.ChoiceValue[column].onChanged.string[i] == 'auto': '''set unCheck''' - if type(self.view_dict[field.name].cellWidget(row,i)) == \ + if type(self.view_dict[field.name].cellWidget(row,col)) == \ CentralCheckBox: - self.view_dict[field.name].cellWidget(row,i). \ + self.view_dict[field.name].cellWidget(row,col). \ setCheckState(QtCore.Qt.CheckState. \ PartiallyChecked) return wrapper diff --git a/scripts/cl-console-gui b/scripts/cl-console-gui index 1146248..3cf0f78 100755 --- a/scripts/cl-console-gui +++ b/scripts/cl-console-gui @@ -8,12 +8,17 @@ from calculate.lib.utils.files import getRunCommands from calculate.console.gui.ConnectionTabs import ToolTabWidget, parse, \ SelectedMethodWgt +host, port = None, None if len(sys.argv) > 1: args = parse() if args.method: app = QtGui.QApplication(sys.argv) ex = SelectedMethodWgt(app, args) sys.exit(app.exec_()) + if args.host: + host = args.host + if args.port: + port = args.port app = QtGui.QApplication(sys.argv) @@ -29,6 +34,6 @@ for run_commands in filter(lambda x:'cl-console-gui' in x, getRunCommands()): # Do not complete the program then last window is closed app.setQuitOnLastWindowClosed(False) -ex = ToolTabWidget(app) +ex = ToolTabWidget(app, host, port) sys.exit(app.exec_()) \ No newline at end of file