comparison ui/main_window.py @ 2:091a1f59a79c

Load profiles into list view
author Brad Greco <brad@bgreco.net>
date Tue, 02 Mar 2021 20:17:36 -0500
parents b6d0a1e6ba3a
children eb2aa09653bd
comparison
equal deleted inserted replaced
1:b6d0a1e6ba3a 2:091a1f59a79c
1 import gi 1 import gi
2 import os 2 import os
3 from gi.repository import Gtk
4 from keyboard_colors.color_profile import ProfileManager 3 from keyboard_colors.color_profile import ProfileManager
5 gi.require_version("Gtk", "3.0") 4 gi.require_version("Gtk", "3.0")
5 from gi.repository import Gtk
6 # from ui.keyboard_section import KeyboardSection 6 # from ui.keyboard_section import KeyboardSection
7 7
8 8
9 class MainWindow: 9 class MainWindow:
10 10
11 def init(self): 11 def init(self):
12 self.profile_manager = ProfileManager() 12 self.profile_manager = ProfileManager()
13 # self.profile_manager.save_profiles()
13 14
14 self.builder = Gtk.Builder() 15 self.builder = Gtk.Builder()
15 dirname = os.path.dirname(os.path.realpath(__file__)) 16 dirname = os.path.dirname(os.path.realpath(__file__))
16 self.builder.add_from_file(os.path.join(dirname, 'MainWindow.glade')) 17 self.builder.add_from_file(os.path.join(dirname, 'MainWindow.glade'))
17 self.builder.connect_signals(self) 18 self.builder.connect_signals(self)
18 window = self.builder.get_object('main_window') 19 window = self.builder.get_object('main_window')
19 20
20 color_profile_list_store = self.builder.get_object('color_profile_list_store') 21 self.color_profile_list_store = self.builder.get_object('color_profile_list_store')
21 # color_profile_list_store.append(["1", "test"]) 22 self.load_color_profiles()
22 23
23 keyboard_section = self.builder.get_object('keyboard_section') 24 keyboard_section = self.builder.get_object('keyboard_section')
24 keyboard_section.pack_start(KeyboardSection(color_profile_list_store), False, False, 0) 25 keyboard_section.pack_start(
25 keyboard_section.pack_start(KeyboardSection(color_profile_list_store), False, False, 0) 26 KeyboardSection(self.color_profile_list_store), False, False, 0
26 keyboard_section.pack_start(KeyboardSection(color_profile_list_store), False, False, 0) 27 )
27 28 keyboard_section.pack_start(
28 # for profile_id, profile_type in self.profile_manager.get_types().items(): 29 KeyboardSection(self.color_profile_list_store), False, False, 0
30 )
31 keyboard_section.pack_start(
32 KeyboardSection(self.color_profile_list_store), False, False, 0
33 )
29 34
30 menu = Gtk.Menu() 35 menu = Gtk.Menu()
31 menu.set_halign(Gtk.Align.CENTER) 36 menu.set_halign(Gtk.Align.CENTER)
32 for profile_type in self.profile_manager.get_types(): 37 for profile_type in self.profile_manager.get_types():
33 item = Gtk.MenuItem.new_with_label(profile_type.type_name) 38 item = Gtk.MenuItem.new_with_label(profile_type.type_name)
44 49
45 window.show_all() 50 window.show_all()
46 Gtk.main() 51 Gtk.main()
47 52
48 def create_profile(self, widget, profile_type): 53 def create_profile(self, widget, profile_type):
54 # todo move to profile manager
49 profile = profile_type() 55 profile = profile_type()
50 color_profile_list_store = self.builder.get_object('color_profile_list_store') 56 self.color_profile_list_store.append([profile.id, 'New ' + profile.type_name])
51 color_profile_list_store.append([profile.id, 'New ' + profile.type_name]) 57 self.builder.get_object('profile_tree_view').set_cursor(
52 self.builder.get_object('profile_tree_view').set_cursor(len(color_profile_list_store) - 1) 58 len(self.color_profile_list_store) - 1
59 )
53 self.edit_profile(profile) 60 self.edit_profile(profile)
54 self.builder.get_object('edit_profile_name_entry').grab_focus() 61 self.builder.get_object('edit_profile_name_entry').grab_focus()
55 62
56 def edit_profile(self, profile): 63 def edit_profile(self, profile):
57 self.builder.get_object('edit_profile_box').show() 64 self.builder.get_object('edit_profile_box').show()
62 edit_profile_details_box = self.builder.get_object('edit_profile_details_box') 69 edit_profile_details_box = self.builder.get_object('edit_profile_details_box')
63 for child in edit_profile_details_box.get_children(): 70 for child in edit_profile_details_box.get_children():
64 edit_profile_details_box.remove(child) 71 edit_profile_details_box.remove(child)
65 edit_profile_details_box.add(profile.build_settings_ui()) 72 edit_profile_details_box.add(profile.build_settings_ui())
66 73
74 def profile_tree_view_selection_changed(self, selection):
75 (model, tree_iter) = selection.get_selected()
76 profile_id = model.get_value(tree_iter, 0)
77 self.edit_profile(self.profile_manager.get_profile(profile_id))
78
67 def edit_profile_name_changed(self, entry): 79 def edit_profile_name_changed(self, entry):
68 profile_name = entry.get_text() 80 profile_name = entry.get_text()
69 color_profile_list_store = self.builder.get_object('color_profile_list_store')
70 selection = self.builder.get_object('profile_tree_view').get_selection() 81 selection = self.builder.get_object('profile_tree_view').get_selection()
71 (model, tree_iter) = selection.get_selected() 82 (model, tree_iter) = selection.get_selected()
72 model.set_value(tree_iter, 1, profile_name) 83 model.set_value(tree_iter, 1, profile_name)
73 84
74 def edit_profile_name_entry_focus_out(self, entry, event): 85 def edit_profile_name_entry_focus_out(self, entry, event):
75 pass 86 pass
76 87
88 def load_color_profiles(self):
89 for profile in self.profile_manager.get_profiles().values():
90 self.color_profile_list_store.append([profile.id, profile.name])
77 91
78 class KeyboardSection(Gtk.Grid): 92 class KeyboardSection(Gtk.Grid):
79 93
80 def __init__(self, model): 94 def __init__(self, model):
81 super().__init__() 95 super().__init__()