diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/main_window.py	Wed Jan 27 21:02:30 2021 -0500
@@ -0,0 +1,91 @@
+import gi
+import os
+gi.require_version("Gtk", "3.0")
+from gi.repository import Gtk
+from keyboard_colors.color_profile import ProfileManager
+# from ui.keyboard_section import KeyboardSection
+
+class MainWindow:
+
+	def init(self):
+		self.profile_manager = ProfileManager()
+
+		self.builder = Gtk.Builder()
+		dirname = os.path.dirname(os.path.realpath(__file__))
+		self.builder.add_from_file(os.path.join(dirname, 'MainWindow.glade'))
+		self.builder.connect_signals(self)
+		window = self.builder.get_object('main_window')
+
+		color_profile_list_store = self.builder.get_object('color_profile_list_store')
+		# color_profile_list_store.append(["1", "test"])
+
+		keyboard_section = self.builder.get_object('keyboard_section')
+		keyboard_section.pack_start(KeyboardSection(color_profile_list_store), False, False, 0)
+		keyboard_section.pack_start(KeyboardSection(color_profile_list_store), False, False, 0)
+		keyboard_section.pack_start(KeyboardSection(color_profile_list_store), False, False, 0)
+
+		# for profile_id, profile_type in self.profile_manager.get_types().items():
+
+		menu = Gtk.Menu()
+		menu.set_halign(Gtk.Align.CENTER)
+		for profile_type in self.profile_manager.get_types():
+			item = Gtk.MenuItem.new_with_label(profile_type.type_name)
+			item.connect('activate', self.create_profile, profile_type)
+			item.show()
+			menu.append(item)
+		add_button = Gtk.MenuButton()
+		add_button.set_popup(menu)
+		add_profile_button_contents = self.builder.get_object('add_profile_button_contents')
+		add_button.add(add_profile_button_contents)
+
+		profile_pane = self.builder.get_object('profile_pane')
+		profile_pane.add(add_button)
+
+		window.show_all()
+		Gtk.main()
+
+	def create_profile(self, widget, profile_type):
+		profile = profile_type()
+		color_profile_list_store = self.builder.get_object('color_profile_list_store')
+		color_profile_list_store.append([profile.id, 'New ' + profile.type_name])
+		self.builder.get_object('profile_tree_view').set_cursor(len(color_profile_list_store) - 1)
+		self.edit_profile(profile)
+		self.builder.get_object('edit_profile_name_entry').grab_focus()
+
+	def edit_profile(self, profile):
+		self.builder.get_object('edit_profile_box').show()
+
+		self.builder.get_object('edit_profile_type_name_label').set_text(profile.type_name)
+		self.builder.get_object('edit_profile_name_entry').set_text(profile.name)
+
+		edit_profile_details_box = self.builder.get_object('edit_profile_details_box')
+		for child in edit_profile_details_box.get_children():
+			edit_profile_details_box.remove(child)
+		edit_profile_details_box.add(profile.build_settings_ui())
+
+	def edit_profile_name_changed(self, entry):
+		profile_name = entry.get_text()
+		color_profile_list_store = self.builder.get_object('color_profile_list_store')
+		selection = self.builder.get_object('profile_tree_view').get_selection()
+		(model, tree_iter) = selection.get_selected()
+		model.set_value(tree_iter, 1, profile_name)
+
+	def edit_profile_name_entry_focus_out(self, entry, event):
+		pass
+
+class KeyboardSection(Gtk.Grid):
+
+	def __init__(self, model):
+		super().__init__()
+
+		profile_label = Gtk.Label('Color profile')
+		# profile_combo_box = Gtk.ComboBox(model)
+		profile_combo_box = Gtk.ComboBox.new_with_model(model)
+		# profile_combo_box.set_entry_text_column(1)
+		# profile_combo_box.append_text('asdf')
+		renderer_text = Gtk.CellRendererText()
+		profile_combo_box.pack_start(renderer_text, True)
+		profile_combo_box.add_attribute(renderer_text, 'text', 1)
+
+		self.add(profile_label)
+		self.add(profile_combo_box)