Swithing over to the new code
[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 time
26 import logging
27
28 import gtk
29
30 class Bottombar(gtk.HBox):
31         
32         __gsignals__ = {
33                 'changed' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE,(gobject.TYPE_STRING,gobject.TYPE_STRING)),
34                 #'changedCategory': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE,(gobject.TYPE_STRING,gobject.TYPE_STRING))
35         }
36
37                 
38         def new_item(self,widget=None,data1=None,data2=None):
39                 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))
40                 
41                 dialog.set_position(gtk.WIN_POS_CENTER)
42                 entryKlasse=gtk.Entry()
43                 entryKlasse.set_text("")
44                 
45                 dialog.vbox.pack_start(entryKlasse, True, True, 0)
46                 
47                 dialog.vbox.show_all()
48                 #dialog.set_size_request(400,300)
49
50                 if dialog.run() == gtk.RESPONSE_ACCEPT:
51                         #logging.info("new category name "+entryKlasse.get_text())
52                         #self.view.liststorehandler.rename_category(entryKlasse.get_text())
53                         self.view.liststorehandler.add_row(entryKlasse.get_text())
54                 dialog.destroy()
55
56                 
57         def del_item(self,widget=None,data1=None,data2=None):
58                 path, col = self.view.treeview.get_cursor()
59                 if path!=None:
60                         mbox=gtk.MessageDialog(None,gtk.DIALOG_MODAL,gtk.MESSAGE_QUESTION,gtk.BUTTONS_YES_NO,_("Delete current item?")) 
61                         response=mbox.run() 
62                         mbox.hide() 
63                         mbox.destroy() 
64                         if response==gtk.RESPONSE_YES:
65                                 self.view.del_active_row()
66                 else:
67                         mbox=gtk.MessageDialog(None,gtk.DIALOG_MODAL,gtk.MESSAGE_ERROR,gtk.BUTTONS_OK,_("No item selected!")) 
68                         response=mbox.run() 
69                         mbox.hide() 
70                         mbox.destroy()                  
71                 
72                 
73         def checkout_items(self,widget=None,data1=None,data2=None):
74                 #self.view.del_active_row()
75                 mbox=gtk.MessageDialog(None,gtk.DIALOG_MODAL,gtk.MESSAGE_QUESTION,gtk.BUTTONS_YES_NO,(_("Really checkout all items?"))) 
76                 response=mbox.run() 
77                 mbox.hide() 
78                 mbox.destroy() 
79                 if response==gtk.RESPONSE_YES:
80                         self.view.liststorehandler.checkout_rows()
81                         #n=len(self.view.liststorehandler.get_liststore())
82                         #for i in range(n):
83                         #       self.view.liststorehandler.checkout_rows()
84                         #       #print i
85                         
86         def search_list(self,widget=None,data1=None,data2=None):
87                 self.view.liststorehandler.get_liststore(widget.get_text())
88                         
89         
90         def rename_category(self,widget=None,data1=None,data2=None):
91                 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))
92                 
93                 dialog.set_position(gtk.WIN_POS_CENTER)
94                 entryKlasse=gtk.Entry()
95                 entryKlasse.set_text(self.view.liststorehandler.selection.get_category())
96                 
97                 dialog.vbox.pack_start(entryKlasse, True, True, 0)
98                 
99                 dialog.vbox.show_all()
100                 #dialog.set_size_request(400,300)
101
102                 if dialog.run() == gtk.RESPONSE_ACCEPT:
103                         logging.info("new category name "+entryKlasse.get_text())
104                         self.view.liststorehandler.rename_category(entryKlasse.get_text())
105                 else:
106                         #print "Cancel",res
107                         pass
108                 dialog.destroy()
109                 
110                 
111         def rename_list(self,widget=None,data1=None,data2=None):
112                 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))
113                 
114                 dialog.set_position(gtk.WIN_POS_CENTER)
115                 entryKlasse=gtk.Entry()
116                 entryKlasse.set_text(self.view.liststorehandler.selection.get_list())
117                 
118                 dialog.vbox.pack_start(entryKlasse, True, True, 0)
119                 
120                 dialog.vbox.show_all()
121                 #dialog.set_size_request(400,300)
122
123                 if dialog.run() == gtk.RESPONSE_ACCEPT:
124                         logging.info("new list name "+entryKlasse.get_text())
125                         self.view.liststorehandler.rename_list(entryKlasse.get_text())
126                 else:
127                         #print "Cancel",res
128                         pass
129                 dialog.destroy()
130         
131         def __init__(self,db,view,isHildon):
132                 gtk.HBox.__init__(self,homogeneous=False, spacing=3)
133                 
134                 self.db=db
135                 self.isHildon=isHildon
136                 self.view=view
137                 
138                 logging.info("libBottomBar, init")
139                         
140                 
141                 button=gtk.Button(_("New item"))
142                 button.connect("clicked",self.new_item)
143                 self.pack_start(button, expand=False, fill=True, padding=0)
144                 
145                 label=gtk.Label("  ")
146                 self.pack_start(label, expand=True, fill=True, padding=0)
147                 
148                 label=gtk.Label(_("Search:"))
149                 self.pack_start(label, expand=False, fill=True, padding=0)
150                 searchEntry=gtk.Entry()
151                 searchEntry.connect("changed",self.search_list)
152                 self.pack_start(searchEntry, expand=True, fill=True, padding=0)
153                 
154                 label=gtk.Label("  ")
155                 self.pack_start(label, expand=True, fill=True, padding=0)
156                 
157                 button=gtk.Button(_("Checkout all items"))
158                 button.connect("clicked",self.checkout_items)
159                 self.pack_start(button, expand=False, fill=True, padding=0)
160                 
161                 button=gtk.Button(_("Del item"))
162                 button.connect("clicked",self.del_item)
163                 self.pack_start(button, expand=False, fill=True, padding=0)
164                 
165                 
166