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