Mercurial > system76-keyboard-colors
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__() |