FIxing some menu text
[gonvert] / src / gonvert_qt.py
index eae4dd6..374d72e 100755 (executable)
@@ -74,7 +74,6 @@ class Gonvert(object):
                self._recent = []
                self._hiddenCategories = set()
                self._hiddenUnits = {}
-               self._isFullscreen = False
                self._clipboard = QtGui.QApplication.clipboard()
 
                self._jumpWindow = None
@@ -96,10 +95,10 @@ class Gonvert(object):
                self._recentAction.triggered.connect(self._on_recent_start)
 
                self._fullscreenAction = QtGui.QAction(None)
-               self._fullscreenAction.setText("Toggle Fullscreen")
-               # @todo Make this checkable
+               self._fullscreenAction.setText("Fullscreen")
+               self._fullscreenAction.setCheckable(True)
                self._fullscreenAction.setShortcut(QtGui.QKeySequence("CTRL+Enter"))
-               self._fullscreenAction.triggered.connect(self._on_toggle_fullscreen)
+               self._fullscreenAction.toggled.connect(self._on_toggle_fullscreen)
 
                self._showFavoritesAction = QtGui.QAction(None)
                self._showFavoritesAction.setCheckable(True)
@@ -184,7 +183,7 @@ class Gonvert(object):
                        _moduleLogger.info("Settings were corrupt")
                        settings = {}
 
-               self._isFullscreen = settings.get("isFullScreen", self._isFullscreen)
+               self._fullscreenAction.setChecked(settings.get("isFullScreen", False))
 
                recent = settings.get("recent", self._recent)
                for category, unit in recent:
@@ -198,14 +197,12 @@ class Gonvert(object):
 
                self._showFavoritesAction.setChecked(settings.get("showFavorites", True))
 
-               for window in self._walk_children():
-                       window.set_fullscreen(self._isFullscreen)
                if self._recent:
                        self._catWindow.select_category(self._recent[-1][0])
 
        def save_settings(self):
                settings = {
-                       "isFullScreen": self._isFullscreen,
+                       "isFullScreen": self._fullscreenAction.isChecked(),
                        "recent": self._recent,
                        "hiddenCategories": list(self._hiddenCategories),
                        "hiddenUnits": dict(
@@ -266,9 +263,8 @@ class Gonvert(object):
 
        @misc_utils.log_exception(_moduleLogger)
        def _on_toggle_fullscreen(self, checked = False):
-               self._isFullscreen = not self._isFullscreen
                for window in self._walk_children():
-                       window.set_fullscreen(self._isFullscreen)
+                       window.set_fullscreen(checked)
 
        @misc_utils.log_exception(_moduleLogger)
        def _on_jump_start(self, checked = False):
@@ -328,7 +324,7 @@ class QuickJump(object):
                self._window.setCentralWidget(centralWidget)
 
                self._closeWindowAction = QtGui.QAction(None)
-               self._closeWindowAction.setText("Window")
+               self._closeWindowAction.setText("Close")
                self._closeWindowAction.setShortcut(QtGui.QKeySequence("CTRL+w"))
                self._closeWindowAction.triggered.connect(self._on_close_window)
 
@@ -341,6 +337,7 @@ class QuickJump(object):
 
                self._window.addAction(self._app.logAction)
 
+               self.set_fullscreen(self._app.fullscreenAction.isChecked())
                self._window.show()
 
        @property
@@ -418,7 +415,7 @@ class Recent(object):
                        twi.setText(1, unit)
 
                self._closeWindowAction = QtGui.QAction(None)
-               self._closeWindowAction.setText("Window")
+               self._closeWindowAction.setText("Close")
                self._closeWindowAction.setShortcut(QtGui.QKeySequence("CTRL+w"))
                self._closeWindowAction.triggered.connect(self._on_close_window)
 
@@ -431,6 +428,7 @@ class Recent(object):
 
                self._window.addAction(self._app.logAction)
 
+               self.set_fullscreen(self._app.fullscreenAction.isChecked())
                self._window.show()
 
        @property
@@ -462,8 +460,6 @@ class Recent(object):
 
 class FavoriteCategoriesWindow(object):
 
-       # @todo Add All, None, and Invert actions
-
        def __init__(self, parent, app, source, hidden):
                self._app = app
                self._source = list(source)
@@ -475,16 +471,31 @@ class FavoriteCategoriesWindow(object):
                self._categories.setAlternatingRowColors(True)
                self._categories.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
                self._categories.setSelectionMode(QtGui.QAbstractItemView.MultiSelection)
+               self._childWidgets = []
                for catName in self._source:
                        twi = QtGui.QTreeWidgetItem(self._categories)
                        twi.setText(0, catName)
+                       self._childWidgets.append(twi)
                        if catName not in self._hidden:
                                self._categories.setItemSelected(twi, True)
                self._selection = self._categories.selectionModel()
                self._selection.selectionChanged.connect(self._on_selection_changed)
 
+               self._allButton = QtGui.QPushButton("All")
+               self._allButton.clicked.connect(self._on_select_all)
+               self._invertButton = QtGui.QPushButton("Invert")
+               self._invertButton.clicked.connect(self._on_invert_selection)
+               self._noneButton = QtGui.QPushButton("None")
+               self._noneButton.clicked.connect(self._on_select_none)
+
+               self._buttonLayout = QtGui.QHBoxLayout()
+               self._buttonLayout.addWidget(self._allButton)
+               self._buttonLayout.addWidget(self._invertButton)
+               self._buttonLayout.addWidget(self._noneButton)
+
                self._layout = QtGui.QVBoxLayout()
                self._layout.addWidget(self._categories)
+               self._layout.addLayout(self._buttonLayout)
 
                centralWidget = QtGui.QWidget()
                centralWidget.setLayout(self._layout)
@@ -498,7 +509,7 @@ class FavoriteCategoriesWindow(object):
                self._window.setCentralWidget(centralWidget)
 
                self._closeWindowAction = QtGui.QAction(None)
-               self._closeWindowAction.setText("Window")
+               self._closeWindowAction.setText("Close")
                self._closeWindowAction.setShortcut(QtGui.QKeySequence("CTRL+w"))
                self._closeWindowAction.triggered.connect(self._on_close_window)
 
@@ -511,6 +522,7 @@ class FavoriteCategoriesWindow(object):
 
                self._window.addAction(self._app.logAction)
 
+               self.set_fullscreen(self._app.fullscreenAction.isChecked())
                self._window.show()
 
        @property
@@ -527,6 +539,22 @@ class FavoriteCategoriesWindow(object):
                        self._window.showNormal()
 
        @misc_utils.log_exception(_moduleLogger)
+       def _on_select_all(self, checked = False):
+               for child in self._childWidgets:
+                       self._categories.setItemSelected(child, True)
+
+       @misc_utils.log_exception(_moduleLogger)
+       def _on_invert_selection(self, checked = False):
+               for child in self._childWidgets:
+                       isSelected = self._categories.isItemSelected(child)
+                       self._categories.setItemSelected(child, not isSelected)
+
+       @misc_utils.log_exception(_moduleLogger)
+       def _on_select_none(self, checked = False):
+               for child in self._childWidgets:
+                       self._categories.setItemSelected(child, False)
+
+       @misc_utils.log_exception(_moduleLogger)
        def _on_selection_changed(self, selected, deselected):
                self._hidden.clear()
                selectedNames = set(
@@ -580,7 +608,7 @@ class CategoryWindow(object):
                self._app.showFavoritesAction.toggled.connect(self._on_show_favorites)
 
                self._closeWindowAction = QtGui.QAction(None)
-               self._closeWindowAction.setText("Window")
+               self._closeWindowAction.setText("Close")
                self._closeWindowAction.setShortcut(QtGui.QKeySequence("CTRL+w"))
                self._closeWindowAction.triggered.connect(self._on_close_window)
 
@@ -600,6 +628,7 @@ class CategoryWindow(object):
                self._window.addAction(self._app.logAction)
 
                self._update_favorites()
+               self.set_fullscreen(self._app.fullscreenAction.isChecked())
                self._window.show()
 
        @property
@@ -622,7 +651,11 @@ class CategoryWindow(object):
                        child.close()
                self._unitWindow = UnitWindow(self._window, categoryName, self._app)
                self._unitWindow.window.destroyed.connect(self._on_child_close)
-               # @todo Add scroll to category
+
+               i = unit_data.UNIT_CATEGORIES.index(categoryName)
+               rootIndex = self._categories.rootIndex()
+               currentIndex = self._categories.model().index(i, 0, rootIndex)
+               self._categories.scrollTo(currentIndex)
                return self._unitWindow
 
        def set_fullscreen(self, isFullscreen):
@@ -1003,6 +1036,7 @@ class UnitWindow(object):
                self._window.addAction(self._chooseFavoritesAction)
 
                self._update_favorites()
+               self.set_fullscreen(self._app.fullscreenAction.isChecked())
                self._window.show()
 
        @property
@@ -1010,6 +1044,8 @@ class UnitWindow(object):
                return self._window
 
        def close(self):
+               for child in self.walk_children():
+                       child.close()
                self._window.close()
 
        def set_fullscreen(self, isFullscreen):
@@ -1098,6 +1134,7 @@ class UnitWindow(object):
        def _on_value_edited(self, *args):
                userInput = self._selectedUnitValue.text()
                self._unitsModel.update_values(self._selectedIndex, str(userInput))
+               self._update_favorites()
 
        def _select_unit(self, index):
                unit = self._unitsModel.get_unit(index)