annotate ui/main_window.py @ 1:b6d0a1e6ba3a

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