Mercurial > system76-keyboard-colors
comparison ui/main_window.py @ 0:11a9d346aa7a
Sort of working model
author | Brad Greco <brad@bgreco.net> |
---|---|
date | Wed, 27 Jan 2021 21:02:30 -0500 |
parents | |
children | b6d0a1e6ba3a |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:11a9d346aa7a |
---|---|
1 import gi | |
2 import os | |
3 gi.require_version("Gtk", "3.0") | |
4 from gi.repository import Gtk | |
5 from keyboard_colors.color_profile import ProfileManager | |
6 # from ui.keyboard_section import KeyboardSection | |
7 | |
8 class MainWindow: | |
9 | |
10 def init(self): | |
11 self.profile_manager = ProfileManager() | |
12 | |
13 self.builder = Gtk.Builder() | |
14 dirname = os.path.dirname(os.path.realpath(__file__)) | |
15 self.builder.add_from_file(os.path.join(dirname, 'MainWindow.glade')) | |
16 self.builder.connect_signals(self) | |
17 window = self.builder.get_object('main_window') | |
18 | |
19 color_profile_list_store = self.builder.get_object('color_profile_list_store') | |
20 # color_profile_list_store.append(["1", "test"]) | |
21 | |
22 keyboard_section = self.builder.get_object('keyboard_section') | |
23 keyboard_section.pack_start(KeyboardSection(color_profile_list_store), False, False, 0) | |
24 keyboard_section.pack_start(KeyboardSection(color_profile_list_store), False, False, 0) | |
25 keyboard_section.pack_start(KeyboardSection(color_profile_list_store), False, False, 0) | |
26 | |
27 # for profile_id, profile_type in self.profile_manager.get_types().items(): | |
28 | |
29 menu = Gtk.Menu() | |
30 menu.set_halign(Gtk.Align.CENTER) | |
31 for profile_type in self.profile_manager.get_types(): | |
32 item = Gtk.MenuItem.new_with_label(profile_type.type_name) | |
33 item.connect('activate', self.create_profile, profile_type) | |
34 item.show() | |
35 menu.append(item) | |
36 add_button = Gtk.MenuButton() | |
37 add_button.set_popup(menu) | |
38 add_profile_button_contents = self.builder.get_object('add_profile_button_contents') | |
39 add_button.add(add_profile_button_contents) | |
40 | |
41 profile_pane = self.builder.get_object('profile_pane') | |
42 profile_pane.add(add_button) | |
43 | |
44 window.show_all() | |
45 Gtk.main() | |
46 | |
47 def create_profile(self, widget, profile_type): | |
48 profile = profile_type() | |
49 color_profile_list_store = self.builder.get_object('color_profile_list_store') | |
50 color_profile_list_store.append([profile.id, 'New ' + profile.type_name]) | |
51 self.builder.get_object('profile_tree_view').set_cursor(len(color_profile_list_store) - 1) | |
52 self.edit_profile(profile) | |
53 self.builder.get_object('edit_profile_name_entry').grab_focus() | |
54 | |
55 def edit_profile(self, profile): | |
56 self.builder.get_object('edit_profile_box').show() | |
57 | |
58 self.builder.get_object('edit_profile_type_name_label').set_text(profile.type_name) | |
59 self.builder.get_object('edit_profile_name_entry').set_text(profile.name) | |
60 | |
61 edit_profile_details_box = self.builder.get_object('edit_profile_details_box') | |
62 for child in edit_profile_details_box.get_children(): | |
63 edit_profile_details_box.remove(child) | |
64 edit_profile_details_box.add(profile.build_settings_ui()) | |
65 | |
66 def edit_profile_name_changed(self, entry): | |
67 profile_name = entry.get_text() | |
68 color_profile_list_store = self.builder.get_object('color_profile_list_store') | |
69 selection = self.builder.get_object('profile_tree_view').get_selection() | |
70 (model, tree_iter) = selection.get_selected() | |
71 model.set_value(tree_iter, 1, profile_name) | |
72 | |
73 def edit_profile_name_entry_focus_out(self, entry, event): | |
74 pass | |
75 | |
76 class KeyboardSection(Gtk.Grid): | |
77 | |
78 def __init__(self, model): | |
79 super().__init__() | |
80 | |
81 profile_label = Gtk.Label('Color profile') | |
82 # profile_combo_box = Gtk.ComboBox(model) | |
83 profile_combo_box = Gtk.ComboBox.new_with_model(model) | |
84 # profile_combo_box.set_entry_text_column(1) | |
85 # profile_combo_box.append_text('asdf') | |
86 renderer_text = Gtk.CellRendererText() | |
87 profile_combo_box.pack_start(renderer_text, True) | |
88 profile_combo_box.add_attribute(renderer_text, 'text', 1) | |
89 | |
90 self.add(profile_label) | |
91 self.add(profile_combo_box) |