From: Ed Page Date: Sat, 9 Jan 2010 00:44:52 +0000 (-0600) Subject: Added an app menu and made the main area pannable X-Git-Url: http://git.maemo.org/git/?p=gonvert;a=commitdiff_plain;h=c7988d4189e32912af9c23c07e7854bcad7e2ec0 Added an app menu and made the main area pannable --- diff --git a/data/gonvert.glade b/data/gonvert.glade index d78bfee..dd5c745 100644 --- a/data/gonvert.glade +++ b/data/gonvert.glade @@ -30,6 +30,26 @@ + + True + _Edit + True + + + True + + + gtk-find + True + True + True + + + + + + + True _Help @@ -192,9 +212,24 @@ automatic in - + True - True + queue + + + True + vertical + + + True + True + + + 0 + + + + diff --git a/src/constants.py b/src/constants.py index ff45110..06ad483 100644 --- a/src/constants.py +++ b/src/constants.py @@ -2,7 +2,7 @@ import os __pretty_app_name__ = "Gonvert" __app_name__ = "gonvert" -__version__ = "0.9.1" +__version__ = "0.9.2" __build__ = 0 __app_magic__ = 0xdeadbeef _data_path_ = os.path.join(os.path.expanduser("~"), ".gonvert") diff --git a/src/gonvert_glade.py b/src/gonvert_glade.py index 8bf50f3..9fd3ee4 100755 --- a/src/gonvert_glade.py +++ b/src/gonvert_glade.py @@ -216,7 +216,7 @@ class Gonvert(object): self._categoryModel.append(row) #--------- connections to GUI ---------------- - self._mainWindow.connect("delete-event", self._on_user_exit) + self._mainWindow.connect("destroy", self._on_user_exit) self._mainWindow.connect("key-press-event", self._on_key_press) self._mainWindow.connect("window-state-event", self._on_window_state_change) self._categorySelectionButton.connect("clicked", self._on_category_selector_clicked) @@ -231,6 +231,7 @@ class Gonvert(object): self._unitsView.connect("key-press-event", self._on_browse_key_press) if hildonize.GTK_MENU_USED: widgets.get_widget("aboutMenuItem").connect("activate", self._on_about_clicked) + widgets.get_widget("searchMenuItem").connect("activate", self._on_toggle_search) widgets.get_widget("exitMenuItem").connect("activate", self._on_user_exit) for scrollingWidgetName in ( @@ -238,7 +239,7 @@ class Gonvert(object): ): scrollingWidget = widgets.get_widget(scrollingWidgetName) assert scrollingWidget is not None, scrollingWidgetName - hildonize.hildonize_scrollwindow_with_viewport(scrollingWidget) + hildonize.hildonize_scrollwindow(scrollingWidget) if hildonize.IS_HILDON_SUPPORTED or constants.FORCE_HILDON_LIKE: self._categoryView.get_parent().hide() @@ -252,6 +253,31 @@ class Gonvert(object): self._mainWindow, widgets.get_widget("mainMenuBar"), ) + if not hildonize.GTK_MENU_USED: + button = gtk.Button("Search") + button.connect("clicked", self._on_toggle_search) + menu.append(button) + + button = hildonize.hildon.GtkRadioButton(gtk.HILDON_SIZE_AUTO, None) + button.set_label("Name") + menu.add_filter(button) + button.connect("click", self._on_click_menu_filter, self._unitNameColumn) + button.set_mode(False) + filterGroup = button + + button = hildonize.hildon.GtkRadioButton(gtk.HILDON_SIZE_AUTO, filterGroup) + button.set_label("Value") + menu.add_filter(button) + button.connect("click", self._on_click_menu_filter, self._unitIntegerColumn) + button.set_mode(False) + + button = hildonize.hildon.GtkRadioButton(gtk.HILDON_SIZE_AUTO, filterGroup) + button.set_label("Unit") + menu.add_filter(button) + button.connect("click", self._on_click_menu_filter, self._unitSymbolColumn) + button.set_mode(False) + + menu.show_all() if not hildonize.IS_HILDON_SUPPORTED: _moduleLogger.info("No hildonization support") @@ -539,6 +565,28 @@ class Gonvert(object): value = float(userEntry) return value + def _select_sort_column(self, col): + #Determine which column requires sorting + columns = self._get_column_sort_stuff() + for columnIndex, (maybeCol, directionName, col_cmp) in enumerate(columns): + if col is maybeCol: + direction = getattr(self, directionName) + gtkDirection = gtk.SORT_ASCENDING if direction else gtk.SORT_DESCENDING + + # cause a sort + self._sortedUnitModel.set_sort_column_id(columnIndex, gtkDirection) + + # set the visual for sorting + col.set_sort_indicator(True) + col.set_sort_order(not direction) + + setattr(self, directionName, not direction) + break + else: + maybeCol.set_sort_indicator(False) + else: + assert False, "Unknown column: %s" % (col.get_title(), ) + @gtk_toolbox.log_exception(_moduleLogger) def _on_key_press(self, widget, event, *args): """ @@ -554,18 +602,28 @@ class Gonvert(object): else: self._mainWindow.fullscreen() elif event.keyval == gtk.keysyms.f and event.get_state() & gtk.gdk.CONTROL_MASK: - self._toggle_find() + if not hildonize.GTK_MENU_USED: + self._toggle_find() elif event.keyval == gtk.keysyms.p and event.get_state() & gtk.gdk.CONTROL_MASK: self._find_previous() elif event.keyval == gtk.keysyms.n and event.get_state() & gtk.gdk.CONTROL_MASK: self._find_next() - elif event.keyval == ord("l") and event.get_state() & gtk.gdk.CONTROL_MASK: + elif ( + event.keyval in (gtk.keysyms.w, gtk.keysyms.q) and + event.get_state() & gtk.gdk.CONTROL_MASK + ): + self._mainWindow.destroy() + elif event.keyval == gtk.keysyms.l and event.get_state() & gtk.gdk.CONTROL_MASK: with open(constants._user_logpath_, "r") as f: logLines = f.xreadlines() log = "".join(logLines) self._clipboard.set_text(str(log)) @gtk_toolbox.log_exception(_moduleLogger) + def _on_toggle_search(self, *args): + self._toggle_find() + + @gtk_toolbox.log_exception(_moduleLogger) def _on_browse_key_press(self, widget, event, *args): if event.keyval == gtk.keysyms.uparrow or event.keyval == gtk.keysyms.Up: index, column = self._unitsView.get_cursor() @@ -601,30 +659,15 @@ class Gonvert(object): self._findButton.grab_focus() @gtk_toolbox.log_exception(_moduleLogger) + def _on_click_menu_filter(self, button, col): + self._select_sort_column(col) + + @gtk_toolbox.log_exception(_moduleLogger) def _on_click_unit_column(self, col): """ Sort the contents of the col when the user clicks on the title. """ - #Determine which column requires sorting - columns = self._get_column_sort_stuff() - for columnIndex, (maybeCol, directionName, col_cmp) in enumerate(columns): - if col is maybeCol: - direction = getattr(self, directionName) - gtkDirection = gtk.SORT_ASCENDING if direction else gtk.SORT_DESCENDING - - # cause a sort - self._sortedUnitModel.set_sort_column_id(columnIndex, gtkDirection) - - # set the visual for sorting - col.set_sort_indicator(True) - col.set_sort_order(not direction) - - setattr(self, directionName, not direction) - break - else: - maybeCol.set_sort_indicator(False) - else: - assert False, "Unknown column: %s" % (col.get_title(), ) + self._select_sort_column(col) @gtk_toolbox.log_exception(_moduleLogger) def _on_category_selector_clicked(self, *args): diff --git a/support/builddeb.py b/support/builddeb.py index 3d06585..e3d14f2 100755 --- a/support/builddeb.py +++ b/support/builddeb.py @@ -19,6 +19,11 @@ __email__ = "anthony@unihedron.com" __version__ = constants.__version__ __build__ = constants.__build__ __changelog__ = """ +0.9.2 +* Added search toggle to the menu +* Maemo 5: Added sorting to the app menu +* Bug fix: Made the view area pannable + 0.9.1 * Added support for creating generic .deb files * Added an apothecary unit @@ -181,7 +186,7 @@ def build_package(distribution): p.prettyName = constants.__pretty_app_name__ p.description = __description__ p.bugTracker = "https://bugs.maemo.org/enter_bug.cgi?product=Gonvert" - #p.upgradeDescription = __changelog__.split("\n\n", 1)[0] + p.upgradeDescription = __changelog__.split("\n\n", 1)[0] p.author = __author__ p.mail = __email__ p.license = "gpl"