0
|
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)
|