Mercurial > system76-keyboard-colors
view 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 source
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)