2 # Based on Ry's Fremantle Python code. --danny
12 about_name = 'mEveMon'
13 about_text = ('Mobile character monitor for EVE Online')
14 about_authors = ['Ryan Campbell','Danny Campbell']
15 about_website = 'http://example.site.org'
18 menu_items = ("Settings", "About", "Refresh")
20 def __init__(self, controller):
21 self.controller = controller
23 gtk.set_application_name("mEveMon")
25 # create the main window, changing from StackableWindow() --danny
27 win.connect("destroy", self.controller.quit)
30 menu = self.create_menu(win)
31 # Attach menu to the window, changed from set_app_menu() --danny
34 # will probably need to refer to http://maemo.org/community/maemo-developers/gtktreeview_issue/ for sample code again when we make these clickable --danny
35 model = self.create_model()
36 treeview = gtk.TreeView( model = model )
37 treeview.set_model(model)
38 self.add_columns_to_treeview(treeview)
43 def create_model(self):
44 lstore = gtk.ListStore(gtk.gdk.Pixbuf, gobject.TYPE_STRING)
46 #get icon and name and put in a liststore
48 # temporary hard-coding until we can fetch the data with eveapi
50 # char list = self.controller.get_characters()
51 char_list = [("Character 1", "avatar.png"), ("Character 2", "avatar.png")]
53 for name, icon in char_list:
54 liter = lstore.append()
55 lstore.set(liter, 1, name, 0, self.set_pix(icon))
59 def set_pix(self, filename):
60 pixbuf = gtk.gdk.pixbuf_new_from_file(filename)
63 def add_columns_to_treeview(self, treeview):
64 #Column 0 for the treeview
65 renderer = gtk.CellRendererPixbuf()
66 column = gtk.TreeViewColumn()
67 column.pack_start(renderer, True)
68 column.add_attribute(renderer, "pixbuf", 0)
69 treeview.append_column(column)
71 #Column 1 for the treeview
72 renderer = gtk.CellRendererText()
73 column = gtk.TreeViewColumn('title', renderer, text=1)
74 column.set_property("expand", True)
75 treeview.append_column(column)
78 def settings_clicked(self, button, window):
82 #get the vbox to pack all the settings into
85 dialog.set_transient_for(window)
86 dialog.set_title("Settings")
88 uidLabel = gtk.Label("User ID:")
89 uidLabel.set_justify(gtk.JUSTIFY_LEFT)
92 # had to remove placeholder stuff --danny
93 uidEntry = gtk.Entry()
94 uidEntry.set_text(self.controller.get_uid())
95 uidEntry.set_property('is_focus', False)
99 apiLabel = gtk.Label("API key:")
100 apiLabel.set_justify(gtk.JUSTIFY_LEFT)
103 # had to remove placeholder stuff --danny
104 apiEntry = gtk.Entry()
105 apiEntry.set_text(self.controller.get_api_key())
106 apiEntry.set_property('is_focus', False)
110 ok_button = dialog.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK)
111 help_button = dialog.add_button(gtk.STOCK_HELP, gtk.RESPONSE_HELP)
115 result = dialog.run()
117 if result == gtk.RESPONSE_OK:
118 self.controller.set_api_key(apiEntry.get_text())
119 self.controller.set_uid(uidEntry.get_text())
125 def about_clicked(self, button):
127 dialog = gtk.AboutDialog()
128 dialog.set_website(self.about_website)
129 dialog.set_website_label(self.about_website)
130 dialog.set_name(self.about_name)
131 dialog.set_authors(self.about_authors)
132 dialog.set_comments(self.about_text)
133 dialog.set_version(self.app_version)
137 def refresh_clicked(self, button, window):
141 def create_menu(self, window):
143 # changed from hildon.AppMenu --danny
146 for command in self.menu_items:
147 # Create menu entries, changed from hildon.GtkButton() --danny
148 button = gtk.MenuItem( command )
150 if command == "About":
151 button.connect("activate", self.about_clicked)
152 elif command == "Settings":
153 button.connect("activate", self.settings_clicked, window)
154 elif command == "Refresh":
155 button.connect("activate", self.refresh_clicked, window)
157 assert False, command
159 # Add entry to the view menu
166 if __name__ == "__main__":