Initial commit
[multilist] / src / multilistclasses / libbottombar.py
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*- 
3
4
5 import gobject
6 import time
7 import logging
8
9 import gtk
10
11 class Bottombar(gtk.HBox):
12         
13         __gsignals__ = {
14                 'changed' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE,(gobject.TYPE_STRING,gobject.TYPE_STRING)),
15                 #'changedCategory': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE,(gobject.TYPE_STRING,gobject.TYPE_STRING))
16         }
17
18                 
19         def new_item(self,widget=None,data1=None,data2=None):
20                 self.view.liststorehandler.add_row()
21
22                 
23         def del_item(self,widget=None,data1=None,data2=None):
24                 path, col = self.view.treeview.get_cursor()
25                 if path!=None:
26                         mbox=gtk.MessageDialog(None,gtk.DIALOG_MODAL,gtk.MESSAGE_QUESTION,gtk.BUTTONS_YES_NO,"Delete current item?") 
27                         response=mbox.run() 
28                         mbox.hide() 
29                         mbox.destroy() 
30                         if response==gtk.RESPONSE_YES:
31                                 self.view.del_active_row()
32                 else:
33                         mbox=gtk.MessageDialog(None,gtk.DIALOG_MODAL,gtk.MESSAGE_ERROR,gtk.BUTTONS_OK,"No item selected!") 
34                         response=mbox.run() 
35                         mbox.hide() 
36                         mbox.destroy()                  
37                 
38                 
39         def checkout_items(self,widget=None,data1=None,data2=None):
40                 #self.view.del_active_row()
41                 mbox=gtk.MessageDialog(None,gtk.DIALOG_MODAL,gtk.MESSAGE_QUESTION,gtk.BUTTONS_YES_NO,"Really checlout all items?") 
42                 response=mbox.run() 
43                 mbox.hide() 
44                 mbox.destroy() 
45                 if response==gtk.RESPONSE_YES:
46                         n=len(self.view.liststorehandler.get_liststore())
47                         for i in range(n):
48                                 self.view.liststorehandler.checkout_rows()
49                                 #print i
50                         
51         def search_list(self,widget=None,data1=None,data2=None):
52                 self.view.liststorehandler.get_liststore(widget.get_text())
53                         
54         
55         def rename_category(self,widget=None,data1=None,data2=None):
56                 dialog = gtk.Dialog("New categrory name:",None,gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,(gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT,gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))
57                 
58                 dialog.set_position(gtk.WIN_POS_CENTER)
59                 entryKlasse=gtk.Entry()
60                 entryKlasse.set_text(self.view.liststorehandler.selection.get_category())
61                 
62                 dialog.vbox.pack_start(entryKlasse, True, True, 0)
63                 
64                 dialog.vbox.show_all()
65                 #dialog.set_size_request(400,300)
66
67                 if dialog.run() == gtk.RESPONSE_ACCEPT:
68                         logging.info("new category name "+entryKlasse.get_text())
69                         self.view.liststorehandler.rename_category(entryKlasse.get_text())
70                 else:
71                         #print "Cancel",res
72                         pass
73                 dialog.destroy()
74                 
75                 
76         def rename_list(self,widget=None,data1=None,data2=None):
77                 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))
78                 
79                 dialog.set_position(gtk.WIN_POS_CENTER)
80                 entryKlasse=gtk.Entry()
81                 entryKlasse.set_text(self.view.liststorehandler.selection.get_list())
82                 
83                 dialog.vbox.pack_start(entryKlasse, True, True, 0)
84                 
85                 dialog.vbox.show_all()
86                 #dialog.set_size_request(400,300)
87
88                 if dialog.run() == gtk.RESPONSE_ACCEPT:
89                         logging.info("new list name "+entryKlasse.get_text())
90                         self.view.liststorehandler.rename_list(entryKlasse.get_text())
91                 else:
92                         #print "Cancel",res
93                         pass
94                 dialog.destroy()
95         
96         def __init__(self,db,view,isHildon):
97                 gtk.HBox.__init__(self,homogeneous=False, spacing=3)
98                 
99                 self.db=db
100                 self.isHildon=isHildon
101                 self.view=view
102                 
103                 logging.info("libBottomBar, init")
104                         
105                 
106                 button=gtk.Button("New item")
107                 button.connect("clicked",self.new_item)
108                 self.pack_start(button, expand=False, fill=True, padding=0)
109                 
110                 label=gtk.Label("  ")
111                 self.pack_start(label, expand=True, fill=True, padding=0)
112                 
113                 label=gtk.Label("Search:")
114                 self.pack_start(label, expand=False, fill=True, padding=0)
115                 searchEntry=gtk.Entry()
116                 searchEntry.connect("changed",self.search_list)
117                 self.pack_start(searchEntry, expand=True, fill=True, padding=0)
118                 
119                 label=gtk.Label("  ")
120                 self.pack_start(label, expand=True, fill=True, padding=0)
121                 
122                 button=gtk.Button("Checkout all items")
123                 button.connect("clicked",self.checkout_items)
124                 self.pack_start(button, expand=False, fill=True, padding=0)
125                 
126                 button=gtk.Button("Del item")
127                 button.connect("clicked",self.del_item)
128                 self.pack_start(button, expand=False, fill=True, padding=0)
129                 
130                 
131