04df9ad03d9c7425cdd8c7bd3cb2c657b37bb285
[mevemon] / ui / fremantle / ui.py
1
2 # Based on C code from:
3 # "Hildon Tutorial" version 2009-04-28
4 # Example 3.1, "Example of a Hildon application menu"
5
6 import sys
7
8 import gtk
9 import hildon
10
11 class mEveMonUI():
12
13     about_name = 'mEveMon'
14     about_text = ('Mobile character monitor for EVE Online')
15     about_authors = ['Ryan Campbell']
16     about_website = 'http://example.site.org'
17     app_version = '0.1'
18
19     menu_items = ("Settings", "About", "Refresh")
20
21     def __init__(self, controller):
22         self.controller = controller
23    
24         gtk.set_application_name("mEveMon")
25     
26         #create the main window
27         win = hildon.StackableWindow()
28         win.connect("destroy", self.controller.quit)
29
30         # Create menu
31         menu = self.create_menu(win)
32         # Attach menu to the window
33         win.set_app_menu(menu)
34
35         pannable_area = hildon.PannableArea()
36         table = self.create_table(win)
37
38         pannable_area.add_with_viewport(table)
39     
40         win.add(pannable_area);
41     
42         win.show_all()
43   
44     def settings_clicked(self, button, window):
45    
46         dialog = gtk.Dialog()
47     
48         #get the vbox to pack all the settings into
49         vbox = dialog.vbox
50     
51         dialog.set_transient_for(window)
52         dialog.set_title("Settings")
53
54         uidLabel = gtk.Label("User ID:")
55         uidLabel.set_justify(gtk.JUSTIFY_LEFT)
56         vbox.add(uidLabel)
57         
58         uidEntry = hildon.Entry(gtk.HILDON_SIZE_FINGER_HEIGHT)
59         uidEntry.set_placeholder("User ID")
60         uidEntry.set_property('is_focus', False)
61         
62         vbox.add(uidEntry)
63
64         apiLabel = gtk.Label("API key:")
65         apiLabel.set_justify(gtk.JUSTIFY_LEFT)
66         vbox.add(apiLabel)
67         
68         apiEntry = hildon.Entry(gtk.HILDON_SIZE_FINGER_HEIGHT)
69         apiEntry.set_placeholder("API Key")
70         apiEntry.set_property('is_focus', False)
71         vbox.add(apiEntry)
72     
73        
74         ok_button = dialog.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK)
75         help_button = dialog.add_button(gtk.STOCK_HELP, gtk.RESPONSE_HELP)
76
77
78         dialog.show_all()
79         result = dialog.run()
80         #if result == gtk.RESPONSE_OK:
81         #    self.set_api_key(apiEntry.get_text())
82         #    self.set_uid(uidEntry.get_text())
83         
84         dialog.destroy()
85
86         return result
87
88     def about_clicked(self, button):
89     
90         dialog = gtk.AboutDialog()
91         dialog.set_website(self.about_website)
92         dialog.set_website_label(self.about_website)
93         dialog.set_name(self.about_name)
94         dialog.set_authors(self.about_authors)
95         dialog.set_comments(self.about_text)
96         dialog.set_version(self.app_version)
97         dialog.run()
98         dialog.destroy()
99
100     def refresh_clicked(self, button, window):
101         pass
102   
103
104     def create_menu(self, window):
105     
106         menu = hildon.AppMenu()
107
108         for command in self.menu_items:
109             # Create menu entries
110             button = hildon.GtkButton(gtk.HILDON_SIZE_AUTO)
111             button.set_label(command)
112
113             if command == "About":
114                 button.connect("clicked", self.about_clicked)
115             elif command == "Settings":
116                 button.connect("clicked", self.settings_clicked, window)
117             elif command == "Refresh":
118                 button.connect("clicked", self.refresh_clicked, window)
119             else:
120                 assert False, command
121
122             # Add entry to the view menu
123             menu.append(button)
124         
125         menu.show_all()
126
127         return menu
128
129     def create_table(self, window):
130     
131         # create a table of 10 by 10 squares. 
132         table = gtk.Table (1, 10, False)
133         table.show()
134
135         # this simply creates a grid of toggle buttons on the table
136         # to demonstrate the scrolled window. 
137         for i in range(10):
138             data_buffer = "button %d\n" % i
139             button = gtk.ToggleButton(data_buffer)
140             table.attach(button, 0, 1 , i, i+1)
141
142         return table
143
144
145 if __name__ == "__main__":
146     main()
147