X-Git-Url: http://git.maemo.org/git/?p=quicknote;a=blobdiff_plain;f=src%2Fquicknote_gtk.py;h=e8aa54c89525673dd877fe07a7ca0a0ede2a9090;hp=2f49fa0f3410490f07e7c8c2944c5f3c0cea6414;hb=e747064bced213416fda192d7bfea5157c931db5;hpb=189236bc5ea0876ec788abb5f72a46800b742293 diff --git a/src/quicknote_gtk.py b/src/quicknote_gtk.py index 2f49fa0..e8aa54c 100644 --- a/src/quicknote_gtk.py +++ b/src/quicknote_gtk.py @@ -103,11 +103,11 @@ class QuicknoteProgram(hildonize.get_app_class()): menu_items = gtk.MenuItem(_("Delete")) categorymenu.append(menu_items) - menu_items.connect("activate", self._on_delete_category, None) + menu_items.connect("activate", self._on_delete_category) menu_items = gtk.MenuItem(_("Move To Category")) categorymenu.append(menu_items) - menu_items.connect("activate", self._on_move_category, None) + menu_items.connect("activate", self._on_move_category) category_menu = gtk.MenuItem(_("Category")) category_menu.show() @@ -117,9 +117,13 @@ class QuicknoteProgram(hildonize.get_app_class()): menu_items = gtk.MenuItem(_("Word Wrap")) viewmenu.append(menu_items) - menu_items.connect("activate", self._on_toggle_word_wrap, None) + menu_items.connect("activate", self._on_toggle_word_wrap) - view_menu = gtk.MenuItem(_("View")) + menu_items = gtk.MenuItem(_("History")) + viewmenu.append(menu_items) + menu_items.connect("activate", self._on_show_history) + + view_menu = gtk.MenuItem(_("Note")) view_menu.show() view_menu.set_submenu(viewmenu) @@ -133,15 +137,18 @@ class QuicknoteProgram(hildonize.get_app_class()): help_menu.show() help_menu.set_submenu(helpmenu) - menu_bar = gtk.MenuBar() - menu_bar.show() - menu_bar.append (file_menu) - menu_bar.append (category_menu) - menu_bar.append (view_menu) - menu_bar.append (help_menu) + menuBar = gtk.MenuBar() + menuBar.show() + menuBar.append (file_menu) + menuBar.append (category_menu) + menuBar.append (view_menu) + menuBar.append (help_menu) - menu_bar.show() - vbox.pack_start(menu_bar, False, False, 0) + vbox.pack_start(menuBar, False, False, 0) + else: + menuBar = gtk.MenuBar() + menuBar.show() + vbox.pack_start(menuBar, False, False, 0) #Create GUI elements self._topBox = kopfzeile.Kopfzeile(self._db) @@ -165,12 +172,24 @@ class QuicknoteProgram(hildonize.get_app_class()): self._window = hildonize.hildonize_window(self, self._window) hildonize.set_application_title(self._window, "%s" % constants.__pretty_app_name__) - if hildonize.GTK_MENU_USED: - menu_bar = hildonize.hildonize_menu( - self._window, - menu_bar, - [] - ) + menuBar = hildonize.hildonize_menu( + self._window, + menuBar, + ) + if hildonize.IS_FREMANTLE_SUPPORTED: + moveToCategoryButton = gtk.Button(_("Move To Category")) + moveToCategoryButton.connect("clicked", self._on_move_category) + menuBar.append(moveToCategoryButton) + + deleteCategoryButton = gtk.Button(_("Delete Category")) + deleteCategoryButton.connect("clicked", self._on_delete_category) + menuBar.append(deleteCategoryButton) + + historyButton= gtk.Button(_("Note History")) + historyButton.connect("clicked", self._on_show_history) + menuBar.append(historyButton) + + menuBar.show_all() if not hildonize.IS_HILDON_SUPPORTED: _moduleLogger.info("No hildonization support") @@ -267,10 +286,8 @@ class QuicknoteProgram(hildonize.get_app_class()): self._isZoomEnabled = zoomEnabled if zoomEnabled: self._topBox.hide() - self._notizen.show_history_area(False) else: self._topBox.show() - self._notizen.show_history_area(True) @gtk_toolbox.log_exception(_moduleLogger) def _on_device_state_change(self, shutdown, save_unsaved_data, memory_low, system_inactivity, message, userData): @@ -305,23 +322,36 @@ class QuicknoteProgram(hildonize.get_app_class()): self._window.unfullscreen () else: self._window.fullscreen () + return True elif ( event.keyval == gtk.keysyms.F7 or event.keyval == gtk.keysyms.i and isCtrl ): # Zoom In self.enable_zoom(True) + return True elif ( event.keyval == gtk.keysyms.F8 or event.keyval == gtk.keysyms.o and isCtrl ): # Zoom Out self.enable_zoom(False) - elif event.keyval == ord("l") and event.get_state() & gtk.gdk.CONTROL_MASK: + return True + elif ( + event.keyval in (gtk.keysyms.w, gtk.keysyms.q) and + event.get_state() & gtk.gdk.CONTROL_MASK + ): + self._window.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)) + return True + + @gtk_toolbox.log_exception(_moduleLogger) + def _on_show_history(self, *args): + self._notizen.show_history() @gtk_toolbox.log_exception(_moduleLogger) def _on_view_sql_history(self, widget = None, data = None, data2 = None): @@ -343,67 +373,64 @@ class QuicknoteProgram(hildonize.get_app_class()): sqldiag.destroy() @gtk_toolbox.log_exception(_moduleLogger) - def _on_move_category(self, widget = None, data = None): - dialog = gtk.Dialog(_("Choose category"), self._window, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OK, gtk.RESPONSE_ACCEPT)) - - dialog.set_position(gtk.WIN_POS_CENTER) + def _on_move_category(self, *args): comboCategory = gtk.combo_box_new_text() - comboCategory.append_text('undefined') sql = "SELECT id, liste FROM categories WHERE id = 0 ORDER BY liste" rows = self._db.ladeSQL(sql) for row in rows: comboCategory.append_text(row[1]) - dialog.vbox.pack_start(comboCategory, True, True, 0) + dialog = gtk.Dialog(_("Choose category"), self._window, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OK, gtk.RESPONSE_ACCEPT)) + try: + dialog.set_position(gtk.WIN_POS_CENTER) - dialog.vbox.show_all() - #dialog.set_size_request(400, 300) + dialog.vbox.pack_start(comboCategory, True, True, 0) + dialog.vbox.show_all() - if dialog.run() == gtk.RESPONSE_ACCEPT: - n = comboCategory.get_active() - if -1 < n and self._notizen.noteId != -1: - model = comboCategory.get_model() - active = comboCategory.get_active() - if active < 0: - return None - cat_id = model[active][0] + userResponse = dialog.run() + finally: + dialog.destroy() - noteid, category, note = self._db.loadNote(self._notizen.noteId) - #print noteid, category, cat_id - self._db.saveNote(noteid, note, cat_id, pcdatum = None) - self._topBox.category_combo_changed() - else: - mbox = gtk.MessageDialog(self._window, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, _("No note selected.")) - response = mbox.run() - mbox.hide() - mbox.destroy() + if userResponse != gtk.RESPONSE_ACCEPT: + return - dialog.destroy() + n = comboCategory.get_active() + if -1 < n and self._notizen.noteId != -1: + model = comboCategory.get_model() + active = comboCategory.get_active() + if active < 0: + return None + cat_id = model[active][0] + + noteid, pcdatum, category, note = self._db.loadNote(self._notizen.noteId) + self._db.saveNote(noteid, note, cat_id, pcdatum = None) + self._topBox.set_category() # force it to update + else: + mbox = gtk.MessageDialog(self._window, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, _("No note selected.")) + response = mbox.run() + mbox.hide() + mbox.destroy() @gtk_toolbox.log_exception(_moduleLogger) - def _on_delete_category(self, widget = None, data = None): + def _on_delete_category(self, *args): if self._topBox.get_category() == "%" or self._topBox.get_category() == "undefined": mbox = gtk.MessageDialog(None, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, _("This category can not be deleted")) - response = mbox.run() - mbox.hide() - mbox.destroy() + try: + response = mbox.run() + finally: + mbox.hide() + mbox.destroy() return mbox = gtk.MessageDialog(None, gtk.DIALOG_MODAL, gtk.MESSAGE_WARNING, gtk.BUTTONS_YES_NO, _("Are you sure to delete the current category?")) - response = mbox.run() - mbox.hide() - mbox.destroy() + try: + response = mbox.run() + finally: + mbox.hide() + mbox.destroy() if response == gtk.RESPONSE_YES: - sql = "UPDATE notes SET category = ? WHERE category = ?" - self._db.speichereSQL(sql, ("undefined", self._topBox.get_category())) - sql = "DELETE FROM categories WHERE liste = ?" - self._db.speichereSQL(sql, (self._topBox.get_category(), )) - model = self._topBox.categoryCombo.get_model() - pos = self._topBox.categoryCombo.get_active() - if (pos>1): - self._topBox.categoryCombo.remove_text(pos) - self._topBox.categoryCombo.set_active(0) + self._topBox.delete_this_category() @gtk_toolbox.log_exception(_moduleLogger) def _on_sync_finished(self, data = None, data2 = None): @@ -427,10 +454,17 @@ class QuicknoteProgram(hildonize.get_app_class()): @gtk_toolbox.log_exception(_moduleLogger) def _on_destroy(self, widget = None, data = None): try: - self._save_settings() self._db.close() - if self._osso_c: + self._save_settings() + + try: + self._deviceState.close() + except AttributeError: + pass # Either None or close was removed (in Fremantle) + try: self._osso_c.close() + except AttributeError: + pass # Either None or close was removed (in Fremantle) finally: gtk.main_quit() @@ -444,12 +478,18 @@ class QuicknoteProgram(hildonize.get_app_class()): dialog.set_website("http://axique.de/index.php?f=Quicknote") comments = _("%s is a note taking program; it is optimised for quick save and search of notes") % constants.__pretty_app_name__ dialog.set_comments(comments) - dialog.set_authors(["Christoph Wurstle ", "Ed Page (Blame him for the most recent bugs)"]) + dialog.set_authors(["Christoph Wurstle ", "Ed Page (Blame him for the most recent bugs)"]) dialog.run() dialog.destroy() -if __name__ == "__main__": - logging.basicConfig(level=logging.DEBUG) +def run_quicknote(): + if hildonize.IS_HILDON_SUPPORTED: + gtk.set_application_name(constants.__pretty_app_name__) app = QuicknoteProgram() app.main() + + +if __name__ == "__main__": + logging.basicConfig(level=logging.DEBUG) + run_quicknote()