X-Git-Url: http://git.maemo.org/git/?p=gonvert;a=blobdiff_plain;f=src%2Fgonvert_glade.py;h=53267173fe221d79b448d945f6ab74245d358fe0;hp=a345f55f0c349153205ea99d6fddda45b96d767d;hb=5d9c6ba29dde92ef01ca31f861ded43f9428912d;hpb=142ba1a0ec4f5febcc5aaa948dc75e8cf47c9387 diff --git a/src/gonvert_glade.py b/src/gonvert_glade.py index a345f55..5326717 100755 --- a/src/gonvert_glade.py +++ b/src/gonvert_glade.py @@ -1,18 +1,7 @@ #!/usr/bin/env python # -*- coding: UTF8 -*- -""" -@todo Look into using two columns for displaying the value, split by the -decimal place. The left one would be right aligned and the right would be left -aligned (only if not in exponential notation -OR display everything in engineering notation - -@tood Add a unit description dialog for when hildonized - -@todo Add support for custom units - -@todo Add support for compound units -""" +from __future__ import with_statement import os import math @@ -99,6 +88,7 @@ class Gonvert(object): self._value_sort_direction = False self._units_sort_direction = False self._isFullScreen = False + self._clipboard = gtk.clipboard_get() self._find_result = [] # empty find result list self._findIndex = 0 # default to find result number zero @@ -125,15 +115,10 @@ class Gonvert(object): change_menu_label(widgets, 'fileMenuItem', _('File')) change_menu_label(widgets, 'exitMenuItem', _('Exit')) - change_menu_label(widgets, 'toolsMenuItem', _('Tools')) - change_menu_label(widgets, 'clearSelectionMenuItem', _('Clear selections')) change_menu_label(widgets, 'helpMenuItem', _('Help')) change_menu_label(widgets, 'aboutMenuItem', _('About')) change_menu_label(widgets, 'findButton', _('Find')) - self._shortlistcheck = widgets.get_widget('shortlistcheck') - self._toggleShortList = widgets.get_widget('toggleShortList') - self._categorySelectionButton = widgets.get_widget("categorySelectionButton") self._categoryView = widgets.get_widget('categoryView') @@ -157,13 +142,14 @@ class Gonvert(object): self._findLabel = widgets.get_widget('findLabel') self._findButton = widgets.get_widget('findButton') - #insert a self._categoryColumnumn into the units list even though the heading will not be seen - renderer = gtk.CellRendererText() - renderer.set_property("ellipsize", pango.ELLIPSIZE_END) - renderer.set_property("width-chars", len("grams per cubic cm plus some")) - self._unitNameColumn = gtk.TreeViewColumn(_('Name'), renderer) + self._unitsNameRenderer = gtk.CellRendererText() + self._unitsNameRenderer.set_property("scale", 0.75) + if FORCE_HILDON_LIKE: + self._unitsNameRenderer.set_property("ellipsize", pango.ELLIPSIZE_END) + self._unitsNameRenderer.set_property("width-chars", 5) + self._unitNameColumn = gtk.TreeViewColumn(_('Name'), self._unitsNameRenderer) self._unitNameColumn.set_property('resizable', True) - self._unitNameColumn.add_attribute(renderer, 'text', self.UNITS_NAME_IDX) + self._unitNameColumn.add_attribute(self._unitsNameRenderer, 'text', self.UNITS_NAME_IDX) self._unitNameColumn.set_clickable(True) self._unitNameColumn.connect("clicked", self._on_click_unit_column) self._unitsView.append_column(self._unitNameColumn) @@ -182,6 +168,7 @@ class Gonvert(object): renderer = gtk.CellRendererText() renderer.set_property("xalign", 0.0) renderer.set_property("alignment", pango.ALIGN_LEFT) + renderer.set_property("scale", 0.75) self._unitFractionalColumn = gtk.TreeViewColumn(_(''), renderer) self._unitFractionalColumn.set_property('resizable', True) self._unitFractionalColumn.add_attribute(renderer, 'text', self.UNITS_FRACTION_IDX) @@ -191,7 +178,7 @@ class Gonvert(object): renderer = gtk.CellRendererText() renderer.set_property("ellipsize", pango.ELLIPSIZE_END) - renderer.set_property("width-chars", len("G ohm plus some")) + #renderer.set_property("scale", 0.5) self._unitSymbolColumn = gtk.TreeViewColumn(_('Units'), renderer) self._unitSymbolColumn.set_property('resizable', True) self._unitSymbolColumn.add_attribute(renderer, 'text', self.UNITS_SYMBOL_IDX) @@ -239,13 +226,10 @@ class Gonvert(object): self._findEntry.connect("activate", self._on_find_activate) self._findEntry.connect("changed", self._on_findEntry_changed) self._previousUnitValue.connect("changed", self._on_previous_unit_value_changed) - self._shortlistcheck.connect("toggled", self._on_shortlist_changed) self._unitValue.connect("changed", self._on_unit_value_changed) self._unitsView.connect("cursor-changed", self._on_click_unit) if hildonize.GTK_MENU_USED: widgets.get_widget("aboutMenuItem").connect("activate", self._on_about_clicked) - widgets.get_widget("clearSelectionMenuItem").connect("activate", self._on_user_clear_selections) - widgets.get_widget("editShortListMenuItem").connect("activate", self._on_edit_shortlist) widgets.get_widget("exitMenuItem").connect("activate", self._on_user_exit) for scrollingWidgetName in ( @@ -352,6 +336,17 @@ class Gonvert(object): windowDatPath = "/".join((constants._data_path_, "window.dat")) pickle.dump(window_settings, open(windowDatPath, 'w')) + def _refresh_columns(self): + self._unitsView.remove_column(self._unitNameColumn) + self._unitsView.remove_column(self._unitIntegerColumn) + self._unitsView.remove_column(self._unitFractionalColumn) + self._unitsView.remove_column(self._unitSymbolColumn) + + self._unitsView.append_column(self._unitNameColumn) + self._unitsView.append_column(self._unitIntegerColumn) + self._unitsView.append_column(self._unitFractionalColumn) + self._unitsView.append_column(self._unitSymbolColumn) + def _clear_find(self): # switch to "new find" state self._find_result = [] @@ -472,11 +467,19 @@ class Gonvert(object): #Fill up the units descriptions and clear the value cells self._clear_visible_unit_data() + nameLength = 0 for key in unit_data.get_units(self._selectedCategoryName): row = key, '0.0', self._unitDataInCategory[key][1], '0.', '0' self._unitModel.append(row) + nameLength = max(nameLength, len(key)) self._sortedUnitModel.sort_column_changed() + if FORCE_HILDON_LIKE: + maxCatCharWidth = int(nameLength * 0.75) + maxCharWidth = int(len("nibble | hexit | quadbit") * 0.75) + charWidth = min(maxCatCharWidth, maxCharWidth) + self._unitsNameRenderer.set_property("width-chars", charWidth) + self._select_default_unit() def _clear_visible_unit_data(self): @@ -537,26 +540,6 @@ class Gonvert(object): 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 @@ -577,6 +560,11 @@ class Gonvert(object): 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: + with open(constants._user_logpath_, "r") as f: + logLines = f.xreadlines() + log = "".join(logLines) + self._clipboard.set_text(str(log)) except Exception, e: _moduleLogger.exception("_on_key_press") @@ -742,6 +730,7 @@ class Gonvert(object): self._previousUnitValue.set_text(str(func.from_base(base, arg, ))) self._sortedUnitModel.sort_column_changed() + self._refresh_columns() except Exception: _moduleLogger.exception("_on_unit_value_changed") @@ -774,6 +763,7 @@ class Gonvert(object): self._unitValue.set_text(str(func.from_base(base, arg, ))) self._sortedUnitModel.sort_column_changed() + self._refresh_columns() except Exception: _moduleLogger.exception("_on_previous_unit_value_changed") @@ -784,7 +774,7 @@ class Gonvert(object): dlg.set_copyright("Copyright 2009 - GPL") dlg.set_comments("") dlg.set_website("http://unihedron.com/projects/gonvert/gonvert.php") - dlg.set_authors(["Anthony Tekatch ", "Ed Page "]) + dlg.set_authors(["Anthony Tekatch ", "Ed Page (Blame him for the most recent bugs)"]) dlg.run() dlg.destroy()