"""
import os
-import sys
import logging
import gtk
try:
import hildon
- isHildon=True
+ isHildon = True
except:
- isHildon=False
- class hildon():
- def __init__(self):
- print "PseudoClass hildon"
- class Program():
- def __init__(self):
- print "PseudoClass hildon.Program"
+ isHildon = False
try:
import osso
import constants
import hildonize
+import gtk_toolbox
import libspeichern
-import libsqldialog
+import search
+import sqldialog
+import settings
import libselection
import libview
import libliststorehandler
PROFILE_STARTUP = False
-class multilistclass(hildonize.get_app_class()):
+class Multilist(hildonize.get_app_class()):
_user_data = os.path.join(os.path.expanduser("~"), ".%s" % constants.__app_name__)
_user_settings = "%s/settings.ini" % _user_data
def __init__(self):
- super(multilistclass, self).__init__()
+ super(Multilist, self).__init__()
self._clipboard = gtk.clipboard_get()
logging.info('Starting Multilist')
#Haupt vbox für alle Elemente
self.window = gtk.Window()
- self.vbox = gtk.VBox(homogeneous=False, spacing=0)
+ self.vbox = gtk.VBox(homogeneous = False, spacing = 0)
self.selection = libselection.Selection(self.db, isHildon)
+ self._search = search.Search()
self.liststorehandler = libliststorehandler.Liststorehandler(self.db, self.selection)
self.view = libview.View(self.db, self.liststorehandler, self.window)
self.bottombar = libbottombar.Bottombar(self.db, self.view, isHildon)
#Menue
if hildonize.GTK_MENU_USED:
- dateimenu = gtk.Menu()
+ fileMenu = gtk.Menu()
menu_items = gtk.MenuItem(_("Choose database file"))
- dateimenu.append(menu_items)
menu_items.connect("activate", self.select_db_dialog, None)
+ fileMenu.append(menu_items)
menu_items = gtk.MenuItem(_("SQL history"))
- dateimenu.append(menu_items)
menu_items.connect("activate", self.view_sql_history, None)
+ fileMenu.append(menu_items)
menu_items = gtk.MenuItem(_("SQL optimize"))
- dateimenu.append(menu_items)
menu_items.connect("activate", self.optimizeSQL, None)
+ fileMenu.append(menu_items)
menu_items = gtk.MenuItem(_("Sync items"))
- dateimenu.append(menu_items)
menu_items.connect("activate", self.sync_notes, None)
+ fileMenu.append(menu_items)
menu_items = gtk.MenuItem(_("Quit"))
- dateimenu.append(menu_items)
menu_items.connect("activate", self.destroy, None)
- #menu_items.show()
+ fileMenu.append(menu_items)
- datei_menu = gtk.MenuItem(_("File"))
- datei_menu.show()
- datei_menu.set_submenu(dateimenu)
+ fileMenuItem = gtk.MenuItem(_("File"))
+ fileMenuItem.show()
+ fileMenuItem.set_submenu(fileMenu)
- toolsmenu = gtk.Menu()
+ categorymenu = gtk.Menu()
- menu_items = gtk.MenuItem(_("Choose columns"))
- toolsmenu.append(menu_items)
- menu_items.connect("activate", self.show_columns_dialog, None)
+ menu_items = gtk.MenuItem(_("Search"))
+ menu_items.connect("activate", self._on_toggle_search)
+ categorymenu.append(menu_items)
+
+ menu_items = gtk.MenuItem(_("Checkout All"))
+ menu_items.connect("activate", self._on_checkout_all)
+ categorymenu.append(menu_items)
menu_items = gtk.MenuItem(_("Rename Category"))
- toolsmenu.append(menu_items)
menu_items.connect("activate", self.bottombar.rename_category, None)
+ categorymenu.append(menu_items)
+
+ category_menu = gtk.MenuItem(_("Category"))
+ category_menu.show()
+ category_menu.set_submenu(categorymenu)
+
+ viewMenu = gtk.Menu()
+
+ menu_items = gtk.MenuItem(_("Show Active"))
+ menu_items.connect("activate", self._on_toggle_filter, None)
+ viewMenu.append(menu_items)
+
+ menu_items = gtk.MenuItem(_("Settings"))
+ menu_items.connect("activate", self._on_settings, None)
+ viewMenu.append(menu_items)
+
+ viewMenuItem = gtk.MenuItem(_("View"))
+ viewMenuItem.show()
+ viewMenuItem.set_submenu(viewMenu)
+
+ toolsMenu = gtk.Menu()
menu_items = gtk.MenuItem(_("Rename List"))
- toolsmenu.append(menu_items)
menu_items.connect("activate", self.bottombar.rename_list, None)
+ toolsMenu.append(menu_items)
- tools_menu = gtk.MenuItem(_("Tools"))
- tools_menu.show()
- tools_menu.set_submenu(toolsmenu)
+ toolsMenuItem = gtk.MenuItem(_("Tools"))
+ toolsMenuItem.show()
+ toolsMenuItem.set_submenu(toolsMenu)
- hilfemenu = gtk.Menu()
+ helpMenu = gtk.Menu()
menu_items = gtk.MenuItem(_("About"))
- hilfemenu.append(menu_items)
+ helpMenu.append(menu_items)
menu_items.connect("activate", self.show_about, None)
- hilfe_menu = gtk.MenuItem(_("Help"))
- hilfe_menu.show()
- hilfe_menu.set_submenu(hilfemenu)
+ helpMenuItem = gtk.MenuItem(_("Help"))
+ helpMenuItem.show()
+ helpMenuItem.set_submenu(helpMenu)
menu_bar = gtk.MenuBar()
menu_bar.show()
- menu_bar.append (datei_menu)
- menu_bar.append (tools_menu)
- # unten -> damit als letztes menu_bar.append (hilfe_menu)
+ menu_bar.append (fileMenuItem)
+ menu_bar.append (toolsMenuItem)
+ menu_bar.append (category_menu)
+ menu_bar.append (viewMenuItem)
+ # unten -> damit als letztes menu_bar.append (helpMenuItem)
#Als letztes menü
- menu_bar.append (hilfe_menu)
+ menu_bar.append (helpMenuItem)
self.vbox.pack_start(menu_bar, False, False, 0)
else:
self.vbox.pack_start(menuBar, False, False, 0)
#add to vbox below (to get it on top)
- self.vbox.pack_end(self.bottombar, expand=False, fill=True, padding=0)
- self.vbox.pack_end(self.view, expand=True, fill=True, padding=0)
- self.vbox.pack_end(self.selection, expand=False, fill=True, padding=0)
+ self.vbox.pack_end(self._search, expand = False, fill = True)
+ self.vbox.pack_end(self.bottombar, expand = False, fill = True, padding = 0)
+ self.vbox.pack_end(self.view, expand = True, fill = True, padding = 0)
+ self.vbox.pack_end(self.selection, expand = False, fill = True, padding = 0)
#Get the Main Window, and connect the "destroy" event
self.window.add(self.vbox)
menu_bar,
)
if hildonize.IS_FREMANTLE_SUPPORTED:
- pass
+ button = hildonize.hildon.GtkRadioButton(gtk.HILDON_SIZE_AUTO, None)
+ button.set_label("All")
+ menuBar.add_filter(button)
+ button.connect("clicked", self._on_click_menu_filter, self.liststorehandler.SHOW_ALL)
+ button.set_mode(False)
+ filterGroup = button
+
+ button = hildonize.hildon.GtkRadioButton(gtk.HILDON_SIZE_AUTO, filterGroup)
+ button.set_label("Active")
+ menuBar.add_filter(button)
+ button.connect("clicked", self._on_click_menu_filter, self.liststorehandler.SHOW_ACTIVE)
+ button.set_mode(False)
+
+ renameCategoryButton = gtk.Button(_("Rename Category"))
+ renameCategoryButton.connect("clicked", self.bottombar.rename_category)
+ menuBar.append(renameCategoryButton)
+
+ renameListButton= gtk.Button(_("Rename List"))
+ renameListButton.connect("clicked", self.bottombar.rename_list)
+ menuBar.append(renameListButton)
+
+ searchButton= gtk.Button(_("Search Category"))
+ searchButton.connect("clicked", self._on_toggle_search)
+ menuBar.append(searchButton)
+
+ searchButton= gtk.Button(_("Settings"))
+ searchButton.connect("clicked", self._on_settings)
+ menuBar.append(searchButton)
+
+ menuBar.show_all()
if not hildonize.IS_HILDON_SUPPORTED:
_moduleLogger.info("No hildonization support")
self.window.connect("destroy", self.destroy)
self.window.connect("key-press-event", self.on_key_press)
self.window.connect("window-state-event", self.on_window_state_change)
+ self._search.connect("search_changed", self._on_search)
self.window.show_all()
+ self._search.hide()
self.prepare_sync_dialog()
self.ladeAlles()
+ @gtk_toolbox.log_exception(_moduleLogger)
+ def _on_checkout_all(self, widget):
+ self.liststorehandler.checkout_rows()
+
+ @gtk_toolbox.log_exception(_moduleLogger)
+ def _on_search(self, widget):
+ self.liststorehandler.get_liststore(self._search.get_search_pattern())
+
+ @gtk_toolbox.log_exception(_moduleLogger)
+ def _on_click_menu_filter(self, button, val):
+ self.liststorehandler.set_filter(val)
+
+ def _toggle_search(self):
+ if self._search.get_property("visible"):
+ self._search.hide()
+ else:
+ self._search.show()
+
+ @gtk_toolbox.log_exception(_moduleLogger)
+ def _on_toggle_search(self, *args):
+ self._toggle_search()
+
+ @gtk_toolbox.log_exception(_moduleLogger)
+ def _on_toggle_filter(self, *args):
+ if self.liststorehandler.get_filter() == self.liststorehandler.SHOW_ALL:
+ self.liststorehandler.set_filter(self.liststorehandler.SHOW_ACTIVE)
+ elif self.liststorehandler.get_filter() == self.liststorehandler.SHOW_ACTIVE:
+ self.liststorehandler.set_filter(self.liststorehandler.SHOW_ALL)
+ else:
+ assert False, "Unknown"
+
+ @gtk_toolbox.log_exception(_moduleLogger)
def on_key_press(self, widget, event, *args):
RETURN_TYPES = (gtk.keysyms.Return, gtk.keysyms.ISO_Enter, gtk.keysyms.KP_Enter)
isCtrl = bool(event.get_state() & gtk.gdk.CONTROL_MASK)
else:
self.window.fullscreen ()
return True
- #elif event.keyval == gtk.keysyms.f and isCtrl:
- # self._toggle_search()
- # return True
+ elif event.keyval == gtk.keysyms.f and isCtrl:
+ self._toggle_search()
+ return True
elif (
event.keyval in (gtk.keysyms.w, gtk.keysyms.q) and
event.get_state() & gtk.gdk.CONTROL_MASK
):
- self._window.destroy()
+ 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()
self._clipboard.set_text(str(log))
return True
+ @gtk_toolbox.log_exception(_moduleLogger)
def on_window_state_change(self, widget, event, *args):
if event.new_window_state & gtk.gdk.WINDOW_STATE_FULLSCREEN:
self.window_in_fullscreen = True
else:
self.window_in_fullscreen = False
- def speichereAlles(self,data=None,data2=None):
+ def speichereAlles(self, data = None, data2 = None):
logging.info("Speichere alles")
- def ladeAlles(self,data=None,data2=None):
+ def ladeAlles(self, data = None, data2 = None):
logging.info("Lade alles")
- def beforeSync(self,data=None,data2=None):
+ def beforeSync(self, data = None, data2 = None):
logging.info("Lade alles")
- def sync_finished(self,data=None,data2=None):
+ @gtk_toolbox.log_exception(_moduleLogger)
+ def sync_finished(self, data = None, data2 = None):
self.selection.comboList_changed()
self.selection.comboCategory_changed()
self.liststorehandler.update_list()
def prepare_sync_dialog(self):
- self.sync_dialog = gtk.Dialog(_("Sync"),None,gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,(gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))
+ self.sync_dialog = gtk.Dialog(_("Sync"), None, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, (gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))
self.sync_dialog.set_position(gtk.WIN_POS_CENTER)
- sync=libsync.Sync(self.db,self.window,50503)
- sync.connect("syncFinished",self.sync_finished)
+ sync = libsync.Sync(self.db, self.window, 50503)
+ sync.connect("syncFinished", self.sync_finished)
self.sync_dialog.vbox.pack_start(sync, True, True, 0)
- self.sync_dialog.set_size_request(500,350)
+ self.sync_dialog.set_size_request(500, 350)
self.sync_dialog.vbox.show_all()
- sync.connect("syncFinished",self.sync_finished)
- def sync_notes(self,widget=None,data=None):
- if self.sync_dialog==None:
+ @gtk_toolbox.log_exception(_moduleLogger)
+ def sync_notes(self, widget = None, data = None):
+ if self.sync_dialog == None:
self.prepare_sync_dialog()
self.sync_dialog.run()
self.sync_dialog.hide()
- def show_columns_dialog(self,widget=None,data=None):
- col_dialog = gtk.Dialog(_("Choose columns"),self.window,gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))
-
- col_dialog.set_position(gtk.WIN_POS_CENTER)
- cols=libview.Columns_dialog(self.db,self.liststorehandler)
-
- col_dialog.vbox.pack_start(cols, True, True, 0)
- col_dialog.set_size_request(500,350)
- col_dialog.vbox.show_all()
-
- resp=col_dialog.run()
- col_dialog.hide()
- if resp==gtk.RESPONSE_ACCEPT:
- logging.info("changing columns")
- cols.save_column_setting()
- self.view.reload_view()
- #children=self.vbox.get_children()
- #while len(children)>1:
- # self.vbox.remove(children[1])
+ @gtk_toolbox.log_exception(_moduleLogger)
+ def _on_settings(self, *args):
+ col_dialog = gtk.Dialog(
+ _("Settings"),
+ self.window,
+ gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
+ (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OK, gtk.RESPONSE_ACCEPT)
+ )
- #self.vbox.pack_end(self.bottombar, expand=True, fill=True, padding=0)
- #self.vbox.pack_end(view, expand=True, fill=True, padding=0)
- #self.vbox.pack_end(self.selection, expand=False, fill=True, padding=0)
+ cols = settings.SettingsDialog(col_dialog.vbox, self.db, self.liststorehandler)
+ col_dialog.show_all()
- col_dialog.destroy()
+ resp = col_dialog.run()
+ try:
+ col_dialog.hide()
+ if resp == gtk.RESPONSE_ACCEPT:
+ logging.info("changing columns")
+ cols.save(self.db)
+ self.view.reload_view()
+ finally:
+ col_dialog.destroy()
- def destroy(self, widget=None, data=None):
+ @gtk_toolbox.log_exception(_moduleLogger)
+ def destroy(self, widget = None, data = None):
try:
self.speichereAlles()
self.db.close()
finally:
gtk.main_quit()
- def delete_event(self, widget, event, data=None):
+ @gtk_toolbox.log_exception(_moduleLogger)
+ def delete_event(self, widget, event, data = None):
#print "delete event occurred"
return False
- def dlg_delete(self,widget,event,data=None):
+ def dlg_delete(self, widget, event, data = None):
return False
- def show_about(self, widget=None,data=None):
+ @gtk_toolbox.log_exception(_moduleLogger)
+ def show_about(self, widget = None, data = None):
dialog = gtk.AboutDialog()
dialog.set_position(gtk.WIN_POS_CENTER)
dialog.set_name(constants.__pretty_app_name__)
dialog.set_version(constants.__version__)
dialog.set_copyright("")
- dialog.set_website("http://axique.de/f=Multilist")
+ dialog.set_website("http://axique.de/f = Multilist")
comments = "%s is a program to handle multiple lists." % constants.__pretty_app_name__
dialog.set_comments(comments)
dialog.set_authors(["Christoph Wurstle <n800@axique.net>", "Ed Page <eopage@byu.net> (Blame him for the most recent bugs)"])
dialog.run()
dialog.destroy()
- def on_info1_activate(self,menuitem):
+ def on_info1_activate(self, menuitem):
self.show_about(menuitem)
- def view_sql_history(self,widget=None,data=None,data2=None):
- sqldiag=libsqldialog.sqlDialog(self.db)
- res=sqldiag.run()
+ @gtk_toolbox.log_exception(_moduleLogger)
+ def view_sql_history(self, widget = None, data = None, data2 = None):
+ sqldiag = sqldialog.SqlDialog(self.db)
+ res = sqldiag.run()
sqldiag.hide()
- if res==444:
+
+ try:
+ if res != gtk.RESPONSE_OK:
+ return
logging.info("exporting sql")
if not isHildon:
dlg.add_button( gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
dlg.add_button( gtk.STOCK_OK, gtk.RESPONSE_OK)
else:
- #dlg = hildon.FileChooserDialog(parent = self.window, action = gtk.FILE_CHOOSER_ACTION_SAVE)
- dlg=hildon.FileChooserDialog(self.window, gtk.FILE_CHOOSER_ACTION_SAVE)
+ dlg = hildon.FileChooserDialog(self.window, gtk.FILE_CHOOSER_ACTION_SAVE)
dlg.set_title(_("Select SQL export file"))
- if dlg.run() == gtk.RESPONSE_OK:
- fileName = dlg.get_filename()
- dlg.destroy()
- sqldiag.exportSQL(fileName)
- else:
+ exportFileResponse = dlg.run()
+ try:
+ if exportFileResponse == gtk.RESPONSE_OK:
+ fileName = dlg.get_filename()
+ sqldiag.exportSQL(fileName)
+ finally:
dlg.destroy()
+ finally:
+ sqldiag.destroy()
- sqldiag.destroy()
-
- def optimizeSQL(self,widget=None,data=None,data2=None):
+ @gtk_toolbox.log_exception(_moduleLogger)
+ def optimizeSQL(self, widget = None, data = None, data2 = None):
#optimiere sql
- self.db.speichereSQL("VACUUM",log=False)
+ self.db.speichereSQL("VACUUM", log = False)
- def select_db_dialog(self,widget=None,data=None,data2=None):
- if (isHildon==False):
+ @gtk_toolbox.log_exception(_moduleLogger)
+ def select_db_dialog(self, widget = None, data = None, data2 = None):
+ if (isHildon == False):
dlg = gtk.FileChooserDialog(parent = self.window, action = gtk.FILE_CHOOSER_ACTION_SAVE)
dlg.add_button( gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
dlg.add_button( gtk.STOCK_OK, gtk.RESPONSE_OK)
else:
#dlg = hildon.FileChooserDialog(parent = self.window, action = gtk.FILE_CHOOSER_ACTION_SAVE)
- dlg=hildon.FileChooserDialog(self.window, gtk.FILE_CHOOSER_ACTION_SAVE)
+ dlg = hildon.FileChooserDialog(self.window, gtk.FILE_CHOOSER_ACTION_SAVE)
if self.db.ladeDirekt('datenbank'):
dlg.set_filename(self.db.ladeDirekt('datenbank'))
dlg.set_title(_("Choose your database file"))
if dlg.run() == gtk.RESPONSE_OK:
fileName = dlg.get_filename()
- self.db.speichereDirekt('datenbank',fileName)
+ self.db.speichereDirekt('datenbank', fileName)
self.speichereAlles()
self.db.openDB()
self.ladeAlles()
def run_multilist():
if hildonize.IS_HILDON_SUPPORTED:
gtk.set_application_name(constants.__pretty_app_name__)
- app = multilistclass()
+ app = Multilist()
if not PROFILE_STARTUP:
gtk.main()
if __name__ == "__main__":
- logging.basicConfig(level=logging.DEBUG)
+ logging.basicConfig(level = logging.DEBUG)
run_multilist()