Implement searching for VMs in qubes-manager
This commit is contained in:
		
							parent
							
								
									88eedc1a43
								
							
						
					
					
						commit
						4c08f75399
					
				| @ -58,6 +58,9 @@ | |||||||
|      <number>0</number> |      <number>0</number> | ||||||
|     </property> |     </property> | ||||||
|     <item row="0" column="0"> |     <item row="0" column="0"> | ||||||
|  |      <widget class="QLineEdit" name="searchbox"/> | ||||||
|  |     </item> | ||||||
|  |     <item row="1" column="0"> | ||||||
|      <widget class="QTableWidget" name="table"> |      <widget class="QTableWidget" name="table"> | ||||||
|       <property name="minimumSize"> |       <property name="minimumSize"> | ||||||
|        <size> |        <size> | ||||||
|  | |||||||
| @ -294,6 +294,7 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): | |||||||
|     update_interval = 1000  # in msec |     update_interval = 1000  # in msec | ||||||
|     show_inactive_vms = True |     show_inactive_vms = True | ||||||
|     show_internal_vms = False |     show_internal_vms = False | ||||||
|  |     search = "" | ||||||
|     # suppress saving settings while initializing widgets |     # suppress saving settings while initializing widgets | ||||||
|     settings_loaded = False |     settings_loaded = False | ||||||
|     columns_indices = {"Type": 0, |     columns_indices = {"Type": 0, | ||||||
| @ -461,6 +462,9 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): | |||||||
|         self.connect(self.logs_menu, SIGNAL("triggered(QAction *)"), |         self.connect(self.logs_menu, SIGNAL("triggered(QAction *)"), | ||||||
|                      self.show_log) |                      self.show_log) | ||||||
| 
 | 
 | ||||||
|  |         self.connect(self.searchbox, SIGNAL("textChanged(const QString&)"), | ||||||
|  |                      self.do_search) | ||||||
|  | 
 | ||||||
|         self.table.setContentsMargins(0, 0, 0, 0) |         self.table.setContentsMargins(0, 0, 0, 0) | ||||||
|         self.centralwidget.layout().setContentsMargins(0, 0, 0, 0) |         self.centralwidget.layout().setContentsMargins(0, 0, 0, 0) | ||||||
|         self.layout().setContentsMargins(0, 0, 0, 0) |         self.layout().setContentsMargins(0, 0, 0, 0) | ||||||
| @ -563,17 +567,15 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): | |||||||
|         if w >= desktop_width: |         if w >= desktop_width: | ||||||
|             available_space -= self.table.horizontalScrollBar().height() |             available_space -= self.table.horizontalScrollBar().height() | ||||||
|             h += self.table.horizontalScrollBar().height() |             h += self.table.horizontalScrollBar().height() | ||||||
|  | 
 | ||||||
|  |         # account for search box height | ||||||
|  |         available_space -= self.searchbox.height() | ||||||
|  |         h += self.searchbox.height() | ||||||
|  | 
 | ||||||
|         default_rows = int(available_space / self.row_height) |         default_rows = int(available_space / self.row_height) | ||||||
| 
 | 
 | ||||||
|         if self.show_internal_vms: |         n = sum(not self.table.isRowHidden(row) for row in | ||||||
|             if self.show_inactive_vms: |                 xrange(self.table.rowCount())) | ||||||
|                 n = self.table.rowCount() |  | ||||||
|             else: |  | ||||||
|                 n = self.running_vms_count |  | ||||||
|         elif self.show_inactive_vms: |  | ||||||
|             n = self.table.rowCount() - self.internal_vms_count |  | ||||||
|         else: |  | ||||||
|             n = self.running_vms_count |  | ||||||
| 
 | 
 | ||||||
|         if n > default_rows: |         if n > default_rows: | ||||||
|             h += default_rows * self.row_height |             h += default_rows * self.row_height | ||||||
| @ -674,14 +676,11 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): | |||||||
|                 self.vms_in_table[selected_qid].name_widget) |                 self.vms_in_table[selected_qid].name_widget) | ||||||
|         self.table.setSortingEnabled(True) |         self.table.setSortingEnabled(True) | ||||||
| 
 | 
 | ||||||
|         self.showhide_vms(True, True) |         self.showhide_vms() | ||||||
|         self.set_table_geom_size() |  | ||||||
|         if (not self.show_inactive_vms) or (not self.show_internal_vms): |  | ||||||
|             self.showhide_vms(self.show_inactive_vms, self.show_internal_vms) |  | ||||||
|         self.set_table_geom_size() |         self.set_table_geom_size() | ||||||
| 
 | 
 | ||||||
|     def showhide_vms(self, show_inactive, show_internal): |     def showhide_vms(self): | ||||||
|         if show_inactive and show_internal: |         if self.show_inactive_vms and self.show_internal_vms and not self.search: | ||||||
|             for row_no in xrange(self.table.rowCount()): |             for row_no in xrange(self.table.rowCount()): | ||||||
|                 self.table.setRowHidden(row_no, False) |                 self.table.setRowHidden(row_no, False) | ||||||
|         else: |         else: | ||||||
| @ -690,11 +689,18 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): | |||||||
|                                                self.columns_indices["State"]) |                                                self.columns_indices["State"]) | ||||||
|                 running = widget.vm.last_running |                 running = widget.vm.last_running | ||||||
|                 internal = widget.vm.internal |                 internal = widget.vm.internal | ||||||
|                 if not (show_inactive or running) or not ( |                 name = widget.vm.name | ||||||
|                         show_internal or not internal): | 
 | ||||||
|                     self.table.setRowHidden(row_no, True) |                 show = (running or self.show_inactive_vms) and \ | ||||||
|                 else: |                        (not internal or self.show_internal_vms) and \ | ||||||
|                     self.table.setRowHidden(row_no, False) |                        (self.search in widget.vm.name or not self.search) | ||||||
|  |                 self.table.setRowHidden(row_no, not show) | ||||||
|  | 
 | ||||||
|  |     @pyqtSlot(str) | ||||||
|  |     def do_search(self, search): | ||||||
|  |         self.search = str(search) | ||||||
|  |         self.showhide_vms() | ||||||
|  |         self.set_table_geom_size() | ||||||
| 
 | 
 | ||||||
|     def mark_table_for_update(self): |     def mark_table_for_update(self): | ||||||
|         self.reload_table = True |         self.reload_table = True | ||||||
| @ -750,8 +756,7 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): | |||||||
| 
 | 
 | ||||||
|             if not self.show_inactive_vms and \ |             if not self.show_inactive_vms and \ | ||||||
|                     some_vms_have_changed_power_state: |                     some_vms_have_changed_power_state: | ||||||
|                 self.showhide_vms(True, True) |                 self.showhide_vms() | ||||||
|                 self.showhide_vms(False, self.show_internal_vms) |  | ||||||
|                 self.set_table_geom_size() |                 self.set_table_geom_size() | ||||||
| 
 | 
 | ||||||
|             if self.sort_by_column == \ |             if self.sort_by_column == \ | ||||||
| @ -1500,7 +1505,7 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): | |||||||
|     def action_showallvms_triggered(self): |     def action_showallvms_triggered(self): | ||||||
|         self.show_inactive_vms = self.action_showallvms.isChecked() |         self.show_inactive_vms = self.action_showallvms.isChecked() | ||||||
| 
 | 
 | ||||||
|         self.showhide_vms(self.show_inactive_vms, self.show_internal_vms) |         self.showhide_vms() | ||||||
|         self.set_table_geom_size() |         self.set_table_geom_size() | ||||||
|         if self.settings_loaded: |         if self.settings_loaded: | ||||||
|             self.manager_settings.setValue('view/show_inactive_vms', |             self.manager_settings.setValue('view/show_inactive_vms', | ||||||
| @ -1511,7 +1516,7 @@ class VmManagerWindow(Ui_VmManagerWindow, QMainWindow): | |||||||
|     def action_showinternalvms_triggered(self): |     def action_showinternalvms_triggered(self): | ||||||
|         self.show_internal_vms = self.action_showinternalvms.isChecked() |         self.show_internal_vms = self.action_showinternalvms.isChecked() | ||||||
| 
 | 
 | ||||||
|         self.showhide_vms(self.show_inactive_vms, self.show_internal_vms) |         self.showhide_vms() | ||||||
|         self.set_table_geom_size() |         self.set_table_geom_size() | ||||||
|         if self.settings_loaded: |         if self.settings_loaded: | ||||||
|             self.manager_settings.setValue('view/show_internal_vms', |             self.manager_settings.setValue('view/show_internal_vms', | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Jean-Philippe Ouellet
						Jean-Philippe Ouellet