diff --git a/mainwindow.ui b/mainwindow.ui index 4983dbc..bfe679b 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -239,13 +239,16 @@ View - - - - - - - + + + + + + + + + + @@ -433,17 +436,17 @@ Show Graphs - + Options - + View - + true @@ -454,7 +457,7 @@ CPU - + true @@ -465,7 +468,7 @@ CPU Graph - + true @@ -476,7 +479,7 @@ MEM - + true @@ -487,7 +490,7 @@ MEM Graph - + true @@ -498,7 +501,7 @@ Template - + true @@ -548,7 +551,7 @@ Global settings - + true @@ -583,6 +586,42 @@ Set keyboard layout per VM + + + true + + + true + + + Type + + + VM Type + + + + + true + + + true + + + Label + + + + + true + + + true + + + Name + + diff --git a/qubesmanager/main.py b/qubesmanager/main.py index 44ebe85..7c4d85c 100755 --- a/qubesmanager/main.py +++ b/qubesmanager/main.py @@ -644,13 +644,29 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): self.fill_table() self.move(self.x(), 0) + + self.columns_actions = {} + self.columns_actions[ self.columns_indices["Type"] ] = self.action_vm_type + self.columns_actions[ self.columns_indices["Label"] ] = self.action_label + self.columns_actions[ self.columns_indices["Name"] ] = self.action_name + self.columns_actions[ self.columns_indices["State"] ] = self.action_state + self.columns_actions[ self.columns_indices["Template"] ] = self.action_template + self.columns_actions[ self.columns_indices["NetVM"] ] = self.action_netvm + self.columns_actions[ self.columns_indices["CPU"] ] = self.action_cpu + self.columns_actions[ self.columns_indices["CPU Graph"] ] = self.action_cpu_graph + self.columns_actions[ self.columns_indices["MEM"] ] = self.action_mem + self.columns_actions[ self.columns_indices["MEM Graph"] ] = self.action_mem_graph + + self.visible_columns_count = len(self.columns_indices); self.table.setColumnHidden( self.columns_indices["NetVM"], True) - self.actionNetVM.setChecked(False) + self.action_netvm.setChecked(False) self.table.setColumnHidden( self.columns_indices["CPU Graph"], True) - self.actionCPU_Graph.setChecked(False) + self.action_cpu_graph.setChecked(False) self.table.setColumnHidden( self.columns_indices["MEM Graph"], True) - self.actionMEM_Graph.setChecked(False) + self.action_mem_graph.setChecked(False) + + self.table.setColumnWidth(self.columns_indices["State"], 80) self.table.setColumnWidth(self.columns_indices["Name"], 150) self.table.setColumnWidth(self.columns_indices["Label"], 40) @@ -736,11 +752,11 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): available_space = desktop_height if self.menubar.isVisible(): - menubar_height = self.menubar.height() + self.menubar.contentsMargins().top() + self.menubar.contentsMargins().bottom() + menubar_height = self.menubar.sizeHint().height() + self.menubar.contentsMargins().top() + self.menubar.contentsMargins().bottom() available_space -= menubar_height mainwindow_to_add += menubar_height if self.toolbar.isVisible(): - toolbar_height = self.toolbar.height() + self.toolbar.contentsMargins().top() + self.toolbar.contentsMargins().bottom() + toolbar_height = self.toolbar.sizeHint().height() + self.toolbar.contentsMargins().top() + self.toolbar.contentsMargins().bottom() available_space -= toolbar_height mainwindow_to_add += toolbar_height if W >= desktop_width: @@ -749,7 +765,7 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): default_rows = int(available_space/self.row_height) n = self.table.rowCount(); - + if n > default_rows: H += default_rows*self.row_height self.table.verticalScrollBar().show() @@ -1335,7 +1351,6 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): @pyqtSlot(name='on_action_set_keyboard_layout_triggered') def action_set_keyboard_layout_triggered(self): - print "change layout!" vm = self.get_selected_vm() subprocess.Popen( ['qvm-run', vm.name, 'qubes-change-keyboard-layout']) @@ -1391,26 +1406,50 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): def showhide_column(self, col_num, show): self.table.setColumnHidden( col_num, not show) self.set_table_geom_size() + val = 1 if show else -1 + self.visible_columns_count += val - def on_actionState_toggled(self, checked): + if self.visible_columns_count == 1: + #disable hiding the last one + for c in self.columns_actions: + if self.columns_actions[c].isChecked(): + self.columns_actions[c].setEnabled(False) + break + elif self.visible_columns_count == 2 and val == 1: + #enable hiding previously disabled column + for c in self.columns_actions: + if not self.columns_actions[c].isEnabled(): + self.columns_actions[c].setEnabled(True) + break; + + def on_action_vm_type_toggled(self, checked): + self.showhide_column( self.columns_indices['Type'], checked) + + def on_action_label_toggled(self, checked): + self.showhide_column( self.columns_indices['Label'], checked) + + def on_action_name_toggled(self, checked): + self.showhide_column( self.columns_indices['Name'], checked) + + def on_action_state_toggled(self, checked): self.showhide_column( self.columns_indices['State'], checked) - def on_actionTemplate_toggled(self, checked): + def on_action_template_toggled(self, checked): self.showhide_column( self.columns_indices['Template'], checked) - def on_actionNetVM_toggled(self, checked): + def on_action_netvm_toggled(self, checked): self.showhide_column( self.columns_indices['NetVM'], checked) - def on_actionCPU_toggled(self, checked): + def on_action_cpu_toggled(self, checked): self.showhide_column( self.columns_indices['CPU'], checked) - def on_actionCPU_Graph_toggled(self, checked): + def on_action_cpu_graph_toggled(self, checked): self.showhide_column( self.columns_indices['CPU Graph'], checked) - def on_actionMEM_toggled(self, checked): + def on_action_mem_toggled(self, checked): self.showhide_column( self.columns_indices['MEM'], checked) - def on_actionMEM_Graph_toggled(self, checked): + def on_action_mem_graph_toggled(self, checked): self.showhide_column( self.columns_indices['MEM Graph'], checked)