Doing some minor lint cleanup
[multilist] / src / libbottombar.py
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3
4 """
5 This file is part of Multilist.
6
7 Multilist is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11
12 Multilist is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with Multilist.  If not, see <http://www.gnu.org/licenses/>.
19
20 Copyright (C) 2008 Christoph Würstle
21 """
22
23
24 import gobject
25 import logging
26
27 import gtk
28
29 try:
30         _
31 except NameError:
32         _ = lambda x: x
33
34
35 _moduleLogger = logging.getLogger(__name__)
36
37
38 class Bottombar(gtk.HBox):
39
40         __gsignals__ = {
41                 'changed' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_STRING, gobject.TYPE_STRING)),
42                 #'changedCategory': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_STRING, gobject.TYPE_STRING))
43         }
44
45         def new_item(self, widget = None, data1 = None, data2 = None):
46                 dialog = gtk.Dialog(_("New item name:"), None, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))
47                 dialog.set_position(gtk.WIN_POS_CENTER)
48                 entryKlasse = gtk.Entry()
49                 entryKlasse.set_text("")
50
51                 dialog.vbox.pack_start(entryKlasse, True, True, 0)
52
53                 dialog.vbox.show_all()
54                 #dialog.set_size_request(400, 300)
55
56                 if dialog.run() == gtk.RESPONSE_ACCEPT:
57                         #_moduleLogger.info("new category name "+entryKlasse.get_text())
58                         #self.view.liststorehandler.rename_category(entryKlasse.get_text())
59                         self.view.liststorehandler.add_row(entryKlasse.get_text())
60                 dialog.destroy()
61
62         def del_item(self, widget = None, data1 = None, data2 = None):
63                 path, col = self.view.treeview.get_cursor()
64                 if path is not None:
65                         mbox = gtk.MessageDialog(None, gtk.DIALOG_MODAL, gtk.MESSAGE_QUESTION, gtk.BUTTONS_YES_NO, _("Delete current item?"))
66                         response = mbox.run()
67                         mbox.hide()
68                         mbox.destroy()
69                         if response == gtk.RESPONSE_YES:
70                                 self.view.del_active_row()
71                 else:
72                         mbox = gtk.MessageDialog(None, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, _("No item selected!"))
73                         response = mbox.run()
74                         mbox.hide()
75                         mbox.destroy()
76
77         def checkout_items(self, widget = None, data1 = None, data2 = None):
78                 #self.view.del_active_row()
79                 mbox = gtk.MessageDialog(None, gtk.DIALOG_MODAL, gtk.MESSAGE_QUESTION, gtk.BUTTONS_YES_NO, (_("Really checkout all items?")))
80                 response = mbox.run()
81                 mbox.hide()
82                 mbox.destroy()
83                 if response == gtk.RESPONSE_YES:
84                         self.view.liststorehandler.checkout_rows()
85                         #n = len(self.view.liststorehandler.get_liststore())
86                         #for i in range(n):
87                         #       self.view.liststorehandler.checkout_rows()
88                         #       #print i
89
90         def search_list(self, widget = None, data1 = None, data2 = None):
91                 self.view.liststorehandler.get_liststore(widget.get_text())
92
93         def rename_category(self, widget = None, data1 = None, data2 = None):
94                 dialog = gtk.Dialog(_("New category name:"), None, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))
95
96                 dialog.set_position(gtk.WIN_POS_CENTER)
97                 entryKlasse = gtk.Entry()
98                 entryKlasse.set_text(self.view.liststorehandler.selection.get_category())
99
100                 dialog.vbox.pack_start(entryKlasse, True, True, 0)
101
102                 dialog.vbox.show_all()
103                 #dialog.set_size_request(400, 300)
104
105                 if dialog.run() == gtk.RESPONSE_ACCEPT:
106                         _moduleLogger.info("new category name "+entryKlasse.get_text())
107                         self.view.liststorehandler.rename_category(entryKlasse.get_text())
108                 else:
109                         #print "Cancel", res
110                         pass
111                 dialog.destroy()
112
113         def rename_list(self, widget = None, data1 = None, data2 = None):
114                 dialog = gtk.Dialog(_("New list name:"), None, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))
115
116                 dialog.set_position(gtk.WIN_POS_CENTER)
117                 entryKlasse = gtk.Entry()
118                 entryKlasse.set_text(self.view.liststorehandler.selection.get_list())
119
120                 dialog.vbox.pack_start(entryKlasse, True, True, 0)
121
122                 dialog.vbox.show_all()
123                 #dialog.set_size_request(400, 300)
124
125                 if dialog.run() == gtk.RESPONSE_ACCEPT:
126                         _moduleLogger.info("new list name "+entryKlasse.get_text())
127                         self.view.liststorehandler.rename_list(entryKlasse.get_text())
128                 else:
129                         #print "Cancel", res
130                         pass
131                 dialog.destroy()
132
133         def __init__(self, db, view, isHildon):
134                 gtk.HBox.__init__(self, homogeneous = False, spacing = 3)
135
136                 self.db = db
137                 self.isHildon = isHildon
138                 self.view = view
139
140                 _moduleLogger.info("libBottomBar, init")
141
142                 button = gtk.Button(_("New item"))
143                 button.connect("clicked", self.new_item)
144                 self.pack_start(button, expand = False, fill = True, padding = 0)
145
146                 label = gtk.Label("  ")
147                 self.pack_start(label, expand = True, fill = True, padding = 0)
148
149                 label = gtk.Label(_("Search:"))
150                 self.pack_start(label, expand = False, fill = True, padding = 0)
151                 searchEntry = gtk.Entry()
152                 searchEntry.connect("changed", self.search_list)
153                 self.pack_start(searchEntry, expand = True, fill = True, padding = 0)
154
155                 label = gtk.Label("  ")
156                 self.pack_start(label, expand = True, fill = True, padding = 0)
157
158                 button = gtk.Button(_("Checkout all items"))
159                 button.connect("clicked", self.checkout_items)
160                 self.pack_start(button, expand = False, fill = True, padding = 0)
161
162                 button = gtk.Button(_("Del item"))
163                 button.connect("clicked", self.del_item)
164                 self.pack_start(button, expand = False, fill = True, padding = 0)