X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fgonvert_qt.py;h=b2adc926d12ef817240e1e79af5c8ad01e2bb3cc;hb=1cf755b441d54d6654b5efae439b20ae1185603a;hp=8a311899ea795738870b7f396b3786005bbff752;hpb=73ec396935c7602e2740b4a0d7e41cee2e9b6db1;p=gonvert diff --git a/src/gonvert_qt.py b/src/gonvert_qt.py index 8a31189..b2adc92 100755 --- a/src/gonvert_qt.py +++ b/src/gonvert_qt.py @@ -86,6 +86,11 @@ class Gonvert(object): self._catWindow = None self._quickWindow = None + self._on_jump_close = lambda obj = None: self._on_child_close("_jumpWindow", obj) + self._on_recent_close = lambda obj = None: self._on_child_close("_recentWindow", obj) + self._on_cat_close = lambda obj = None: self._on_child_close("_catWindow", obj) + self._on_quick_close = lambda obj = None: self._on_child_close("_quickWindow", obj) + self._condensedAction = QtGui.QAction(None) self._condensedAction.setText("Condensed View") self._condensedAction.setCheckable(True) @@ -139,14 +144,14 @@ class Gonvert(object): if self._condensedAction.isChecked(): if self._quickWindow is None: self._quickWindow = QuickConvert(None, self) - self._quickWindow.window.destroyed.connect(lambda obj = None: self._on_child_close("_quickWindow", obj)) + self._quickWindow.window.destroyed.connect(self._on_quick_close) else: self._quickWindow.show() self._mainWindow = self._quickWindow else: if self._catWindow is None: self._catWindow = CategoryWindow(None, self) - self._catWindow.window.destroyed.connect(lambda obj = None: self._on_child_close("_catWindow", obj)) + self._catWindow.window.destroyed.connect(self._on_cat_close) else: self._catWindow.window.show() self._mainWindow = self._catWindow @@ -155,14 +160,14 @@ class Gonvert(object): def search_units(self): jumpWindow = QuickJump(None, self) - jumpWindow.window.destroyed.connect(lambda obj = None: self._on_child_close("_jumpWindow", obj)) + jumpWindow.window.destroyed.connect(self._on_jump_close) self._fake_close_windows() self._jumpWindow = jumpWindow return self._jumpWindow def show_recent(self): recentWindow = Recent(None, self) - recentWindow.window.destroyed.connect(lambda obj = None: self._on_child_close("_recentWindow", obj)) + recentWindow.window.destroyed.connect(self._on_recent_close) self._fake_close_windows() self._recentWindow = recentWindow return self._recentWindow @@ -291,19 +296,31 @@ class Gonvert(object): if self._quickWindow is not None: self._quickWindow.hide() if self._jumpWindow is not None: + self._jumpWindow.disconnect(self._on_jump_close) self._jumpWindow.close() self._jumpWindow = None if self._recentWindow is not None: + self._recentWindow.disconnect(self._on_recent_close) self._recentWindow.close() self._recentWindow = None def _close_windows(self): - for child in self._walk_children(): - child.close() - self._catWindow = None - self._quickWindow = None - self._jumpWindow = None - self._recentWindow = None + if self._catWindow is not None: + self._catWindow.disconnect(self._on_cat_close) + self._catWindow.close() + self._catWindow = None + if self._quickWindow is not None: + self._quickWindow.disconnect(self._on_quick_close) + self._quickWindow.close() + self._quickWindow = None + if self._jumpWindow is not None: + self._jumpWindow.disconnect(self._on_jump_close) + self._jumpWindow.close() + self._jumpWindow = None + if self._recentWindow is not None: + self._recentWindow.disconnect(self._on_recent_close) + self._recentWindow.close() + self._recentWindow = None @misc_utils.log_exception(_moduleLogger) def _on_app_quit(self, checked = False): @@ -695,6 +712,8 @@ class QuickConvert(object): self._window.showNormal() def select_category(self, categoryName): + self._inputUnitName = "" + self._outputUnitName = "" self._inputUnitValue.setText("") self._inputUnitSymbol.setText("") self._inputView.clear() @@ -751,6 +770,9 @@ class QuickConvert(object): currentIndex = self._inputView.model().index(i, 0, rootIndex) self._inputView.scrollTo(currentIndex) + if "" not in [self._categoryName, self._inputUnitName, self._outputUnitName]: + self._update_conversion() + def select_output(self, name): # Add the output to recent but don't make things weird by making it the most recent self._app.add_recent(self._categoryName, name) @@ -767,6 +789,9 @@ class QuickConvert(object): currentIndex = self._outputView.model().index(i, 0, rootIndex) self._outputView.scrollTo(currentIndex) + if "" not in [self._categoryName, self._inputUnitName, self._outputUnitName]: + self._update_conversion() + def _sanitize_value(self, userEntry): if self._categoryName == "Computer Numbers": if userEntry == '': @@ -780,6 +805,25 @@ class QuickConvert(object): value = float(userEntry) return value + def _update_conversion(self): + assert self._categoryName + assert self._inputUnitName + assert self._outputUnitName + + userInput = str(self._inputUnitValue.text()) + value = self._sanitize_value(userInput) + + unitData = unit_data.UNIT_DESCRIPTIONS[self._categoryName] + inputConversion, _, _ = unitData[self._inputUnitName] + outputConversion, _, _ = unitData[self._outputUnitName] + + func, arg = inputConversion + base = func.to_base(value, arg) + + func, arg = outputConversion + newValue = func.from_base(base, arg) + self._outputUnitValue.setText(str(newValue)) + def _update_favorites(self): if self._app.showFavoritesAction.isChecked(): assert self._categoryView.topLevelItemCount() == len(unit_data.UNIT_CATEGORIES) @@ -859,23 +903,7 @@ class QuickConvert(object): @misc_utils.log_exception(_moduleLogger) def _on_value_edited(self, *args): - assert self._categoryName - assert self._inputUnitName - assert self._outputUnitName - - userInput = str(self._inputUnitValue.text()) - value = self._sanitize_value(userInput) - - unitData = unit_data.UNIT_DESCRIPTIONS[self._categoryName] - inputConversion, _, _ = unitData[self._inputUnitName] - outputConversion, _, _ = unitData[self._outputUnitName] - - func, arg = inputConversion - base = func.to_base(value, arg) - - func, arg = outputConversion - newValue = func.from_base(base, arg) - self._outputUnitValue.setText(str(newValue)) + self._update_conversion() @misc_utils.log_exception(_moduleLogger) def _on_category_selection_changed(self, selected, deselected):