split ui classes into separate modules
[mevemon] / package / src / ui / fremantle / gui.py
1 #
2 # mEveMon - A character monitor for EVE Online
3 # Copyright (c) 2010  Ryan and Danny Campbell, and the mEveMon Team
4 #
5 # mEveMon is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; either version 3 of the License, or
8 # (at your option) any later version.
9 #
10 # mEveMon is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 # GNU General Public License for more details.
14 #
15 # You should have received a copy of the GNU General Public License
16 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 #
18
19 import gtk
20 import hildon
21 import gobject
22
23 from characterSheet import CharacterSheetUI
24 import ui.models as models
25 import validation
26 import ui.fremantle.base as base
27
28 class mEveMonUI(base.BaseUI):
29
30     def __init__(self, controller):
31         self.controller = controller
32         gtk.set_application_name("mEveMon")
33
34
35     def run(self):
36         # create the main window
37         self.win = hildon.StackableWindow()
38         self.win.connect("destroy", self.controller.quit)
39         self.win.show_all()
40         hildon.hildon_gtk_window_set_progress_indicator(self.win, 1)
41
42         # Create menu
43         menu = self.create_menu(self.win)
44         # Attach menu to the window
45         self.win.set_app_menu(menu)
46
47         pannable_area = hildon.PannableArea()
48
49
50         # gtk.HILDON_UI_MODE_NORMAL -> not selection in the treeview
51         # gtk.HILDON_UI_MODE_EDIT -> selection in the treeview
52         treeview = hildon.GtkTreeView(gtk.HILDON_UI_MODE_NORMAL)
53         treeview.connect('row-activated', self.do_charactersheet)
54
55         self.char_model = models.CharacterListModel(self.controller)
56         treeview.set_model(self.char_model)
57         self.add_columns_to_treeview(treeview)
58
59         pannable_area.add(treeview)
60
61         self.win.add(pannable_area);
62         
63         self.win.show_all()
64
65         hildon.hildon_gtk_window_set_progress_indicator(self.win, 0)
66
67     def add_columns_to_treeview(self, treeview):
68         #Column 0 for the treeview
69         renderer = gtk.CellRendererPixbuf()
70         column = gtk.TreeViewColumn()
71         column.pack_start(renderer, True)
72         column.add_attribute(renderer, "pixbuf", 
73                 models.CharacterListModel.C_PORTRAIT)
74         treeview.append_column(column)
75
76         #Column 1 for the treeview
77         renderer = gtk.CellRendererText()
78         column = gtk.TreeViewColumn('Character Name', renderer, 
79                 text=models.CharacterListModel.C_NAME)
80         column.set_property("expand", True)
81         treeview.append_column(column)
82  
83     def refresh_clicked(self, button):
84         hildon.hildon_gtk_window_set_progress_indicator(self.win, 1)
85         self.char_model.get_characters()
86         hildon.hildon_gtk_window_set_progress_indicator(self.win, 0)
87     
88
89     def do_charactersheet(self, treeview, path, view_column):
90
91         model = treeview.get_model()
92         miter = model.get_iter(path)
93         
94         # column 0 is the portrait, column 1 is name
95         char_name = model.get_value(miter, 1)
96         uid = model.get_value(miter, 2)
97         
98         if uid:
99             CharacterSheetUI(self.controller, char_name, uid)
100         else:
101             pass
102
103
104