+ def _switch_category(self, category):
+ self._selectedCategoryName = category
+ self._unitDataInCategory = unit_data.UNIT_DESCRIPTIONS[self._selectedCategoryName]
+
+ #Fill up the units descriptions and clear the value cells
+ self._clear_visible_unit_data()
+ for key in unit_data.get_units(self._selectedCategoryName):
+ iter = self._unitModel.append()
+ self._unitModel.set(iter, 0, key, 1, '', 2, self._unitDataInCategory[key][1])
+ self._sortedUnitModel.sort_column_changed()
+
+ self._select_default_unit()
+
+ def _clear_visible_unit_data(self):
+ self._unitDescription.get_buffer().set_text("")
+ self._unitName.set_text('')
+ self._unitValue.set_text('')
+ self._unitSymbol.set_text('')
+
+ self._previousUnitName.set_text('')
+ self._previousUnitValue.set_text('')
+ self._previousUnitSymbol.set_text('')
+
+ self._unitModel.clear()
+
+ def _select_default_unit(self):
+ # Restore the previous historical settings of previously selected units
+ # in this newly selected category
+ defaultPrimary = unit_data.get_base_unit(self._selectedCategoryName)
+ defaultSecondary = ""
+ if self._selectedCategoryName in self._defaultUnitForCategory:
+ if self._defaultUnitForCategory[self._selectedCategoryName][0]:
+ defaultPrimary = self._defaultUnitForCategory[self._selectedCategoryName][0]
+ if self._defaultUnitForCategory[self._selectedCategoryName][1]:
+ defaultSecondary = self._defaultUnitForCategory[self._selectedCategoryName][1]
+
+ units = unit_data.get_units(self._selectedCategoryName)
+
+ #Restore oldest selection first.
+ if defaultPrimary:
+ try:
+ unitIndex = units.index(defaultPrimary)
+ except ValueError:
+ unitIndex = 0
+ self._unitsView.set_cursor(unitIndex, self._unitNameColumn, True)
+
+ #Restore newest selection second.
+ if defaultSecondary:
+ try:
+ unitIndex = units.index(defaultSecondary)
+ except ValueError:
+ unitIndex = 0
+ self._unitsView.set_cursor(unitIndex, self._unitNameColumn, True)
+
+ # select the text so user can start typing right away
+ self._unitValue.grab_focus()
+ self._unitValue.select_region(0, -1)
+
+ def _sanitize_value(self, userEntry):
+ if self._selectedCategoryName == "Computer Numbers":
+ if userEntry == '':
+ value = '0'
+ else:
+ value = userEntry
+ else:
+ if userEntry == '':
+ value = 0.0
+ else:
+ value = float(userEntry)
+ return value
+
+ def _on_shortlist_changed(self, *args):
+ try:
+ raise NotImplementedError("%s" % self._shortlistcheck.get_active())
+ except Exception:
+ _moduleLogger.exception("_on_shortlist_changed")
+
+ def _on_edit_shortlist(self, *args):
+ try:
+ raise NotImplementedError("%s" % self._toggleShortList.get_active())
+ except Exception:
+ _moduleLogger.exception("_on_edit_shortlist")
+
+ def _on_user_clear_selections(self, *args):
+ try:
+ selectionsDatPath = "/".join((constants._data_path_, "selections.dat"))
+ os.remove(selectionsDatPath)
+ self._defaultUnitForCategory = {}
+ except Exception:
+ _moduleLogger.exception("_on_user_clear_selections")
+
+ def _on_key_press(self, widget, event, *args):
+ """
+ @note Hildon specific
+ """
+ RETURN_TYPES = (gtk.keysyms.Return, gtk.keysyms.ISO_Enter, gtk.keysyms.KP_Enter)
+ try:
+ if (
+ event.keyval == gtk.keysyms.F6 or
+ event.keyval in RETURN_TYPES and event.get_state() & gtk.gdk.CONTROL_MASK
+ ):
+ if self._isFullScreen:
+ self._mainWindow.unfullscreen()
+ else:
+ self._mainWindow.fullscreen()
+ elif event.keyval == gtk.keysyms.f and event.get_state() & gtk.gdk.CONTROL_MASK:
+ 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()
+ except Exception, e:
+ _moduleLogger.exception("_on_key_press")
+
+ def _on_window_state_change(self, widget, event, *args):
+ """
+ @note Hildon specific
+ """
+ try:
+ if event.new_window_state & gtk.gdk.WINDOW_STATE_FULLSCREEN:
+ self._isFullScreen = True
+ else:
+ self._isFullScreen = False
+ except Exception, e:
+ _moduleLogger.exception("_on_window_state_change")
+
+ def _on_findEntry_changed(self, *args):
+ """
+ Clear out find results since the user wants to look for something new
+ """
+ try:
+ self._clear_find()
+ except Exception:
+ _moduleLogger.exception("_on_findEntry_changed")
+
+ def _on_find_activate(self, *args):
+ try:
+ self._find_next()
+ self._findButton.grab_focus()
+ except Exception:
+ _moduleLogger.exception("_on_find_activate")
+