Fixed resizing on add/remove columns.

This commit is contained in:
Agnieszka Kostrzewa 2012-03-26 11:48:49 +02:00
parent 96b04cc4b8
commit 341d733e4d
2 changed files with 30 additions and 22 deletions

View File

@ -11,7 +11,7 @@
</rect> </rect>
</property> </property>
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding"> <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
@ -34,7 +34,7 @@
<bool>true</bool> <bool>true</bool>
</property> </property>
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Maximum"> <sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
@ -49,6 +49,9 @@
<locale language="English" country="UnitedStates"/> <locale language="English" country="UnitedStates"/>
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout">
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<property name="margin"> <property name="margin">
<number>0</number> <number>0</number>
</property> </property>
@ -58,7 +61,7 @@
<item row="0" column="0"> <item row="0" column="0">
<widget class="QTableWidget" name="table"> <widget class="QTableWidget" name="table">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum"> <sizepolicy hsizetype="Fixed" vsizetype="Minimum">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>

View File

@ -528,7 +528,7 @@ class VmShutdownMonitor(QObject):
class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): class VmManagerWindow(Ui_VmManagerWindow, QMainWindow):
row_height = 30 row_height = 30
column_width = 200 column_width = 200
max_visible_rows = 7 min_visible_rows = 10
update_interval = 1000 # in msec update_interval = 1000 # in msec
show_inactive_vms = True show_inactive_vms = True
columns_indices = { "Label": 0, columns_indices = { "Label": 0,
@ -573,7 +573,6 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow):
self.table.horizontalHeader().setResizeMode(QHeaderView.Fixed) self.table.horizontalHeader().setResizeMode(QHeaderView.Fixed)
self.table.sortItems(self.columns_indices["Label"], Qt.AscendingOrder) self.table.sortItems(self.columns_indices["Label"], Qt.AscendingOrder)
self.sort_by_mem = None self.sort_by_mem = None
self.sort_by_cpu = None self.sort_by_cpu = None
@ -624,7 +623,7 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow):
def show(self): def show(self):
super(VmManagerWindow, self).show() super(VmManagerWindow, self).show()
self.set_table_geom_height() self.set_table_geom_height()
self.update_table_columns() self.set_table_geom_width()
def set_table_geom_height(self): def set_table_geom_height(self):
minH = self.table.horizontalHeader().height() +\ minH = self.table.horizontalHeader().height() +\
@ -634,10 +633,9 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow):
#or if you know what you're doing :) #or if you know what you're doing :)
n = self.table.rowCount(); n = self.table.rowCount();
maxH = minH maxH = minH
if n >= self.max_visible_rows: if n >= self.min_visible_rows:
minH += self.max_visible_rows*self.row_height minH += self.min_visible_rows*self.row_height
maxH += n*self.row_height maxH += n*self.row_height
else: else:
minH += n*self.row_height minH += n*self.row_height
@ -655,7 +653,9 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow):
maxH += mainwindow_to_add maxH += mainwindow_to_add
minH += mainwindow_to_add minH += mainwindow_to_add
self.setMaximumHeight(maxH) desktop_height = app.desktop().availableGeometry().height() - 2*self.row_height
self.setMaximumHeight(min(desktop_height, maxH))
self.setMinimumHeight(minH) self.setMinimumHeight(minH)
@ -733,8 +733,11 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow):
if self.reload_table or ((not self.show_inactive_vms) and some_vms_have_changed_power_state): if self.reload_table or ((not self.show_inactive_vms) and some_vms_have_changed_power_state):
self.fill_table() self.fill_table()
self.set_table_geom_height()
self.set_table_geom_width()
update_devs=True update_devs=True
if self.sort_by_state != None and self.table.sort_state_by_upd and some_vms_have_changed_power_state: if self.sort_by_state != None and self.table.sort_state_by_upd and some_vms_have_changed_power_state:
self.table.sort_state_by_upd = not self.table.sort_state_by_upd # sorter indicator changed will switch it...and we want it to remain unswtched. self.table.sort_state_by_upd = not self.table.sort_state_by_upd # sorter indicator changed will switch it...and we want it to remain unswtched.
self.table.sortItems(self.columns_indices["State"], self.sort_by_state) self.table.sortItems(self.columns_indices["State"], self.sort_by_state)
@ -789,7 +792,7 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow):
self.counter += 1 self.counter += 1
QTimer.singleShot (self.update_interval, self.update_table) QTimer.singleShot (self.update_interval, self.update_table)
def update_table_columns(self): def set_table_geom_width(self):
table_width = self.table.horizontalHeader().length() +\ table_width = self.table.horizontalHeader().length() +\
self.table.verticalScrollBar().width() + \ self.table.verticalScrollBar().width() + \
@ -797,7 +800,9 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow):
self.table.setFixedWidth( table_width ) self.table.setFixedWidth( table_width )
self.centralwidget.setFixedWidth(table_width) self.centralwidget.setFixedWidth(table_width)
self.setFixedWidth(table_width) # don't change the following two lines to setFixedWidth!
self.setMaximumWidth(table_width)
self.setMinimumWidth(table_width)
def update_block_devices(self): def update_block_devices(self):
res, msg = self.blk_manager.update() res, msg = self.blk_manager.update()
@ -1216,30 +1221,30 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow):
self.context_menu.removeAction(self.action_toolbar) self.context_menu.removeAction(self.action_toolbar)
def showhide_collumn(self, col_num, show): def showhide_column(self, col_num, show):
self.table.setColumnHidden( col_num, not show) self.table.setColumnHidden( col_num, not show)
self.update_table_columns() self.set_table_geom_width()
def on_actionState_toggled(self, checked): def on_actionState_toggled(self, checked):
self.showhide_collumn( self.columns_indices['State'], checked) self.showhide_column( self.columns_indices['State'], checked)
def on_actionTemplate_toggled(self, checked): def on_actionTemplate_toggled(self, checked):
self.showhide_collumn( self.columns_indices['Template'], checked) self.showhide_column( self.columns_indices['Template'], checked)
def on_actionNetVM_toggled(self, checked): def on_actionNetVM_toggled(self, checked):
self.showhide_collumn( self.columns_indices['NetVM'], checked) self.showhide_column( self.columns_indices['NetVM'], checked)
def on_actionCPU_toggled(self, checked): def on_actionCPU_toggled(self, checked):
self.showhide_collumn( self.columns_indices['CPU'], checked) self.showhide_column( self.columns_indices['CPU'], checked)
def on_actionCPU_Graph_toggled(self, checked): def on_actionCPU_Graph_toggled(self, checked):
self.showhide_collumn( self.columns_indices['CPU Graph'], checked) self.showhide_column( self.columns_indices['CPU Graph'], checked)
def on_actionMEM_toggled(self, checked): def on_actionMEM_toggled(self, checked):
self.showhide_collumn( self.columns_indices['MEM'], checked) self.showhide_column( self.columns_indices['MEM'], checked)
def on_actionMEM_Graph_toggled(self, checked): def on_actionMEM_Graph_toggled(self, checked):
self.showhide_collumn( self.columns_indices['MEM Graph'], checked) self.showhide_column( self.columns_indices['MEM Graph'], checked)
def createPopupMenu(self): def createPopupMenu(self):