From 881eb91a1076bd871725eda2b42c121e29f96fb2 Mon Sep 17 00:00:00 2001 From: Page Asgardius Date: Wed, 2 Oct 2024 13:32:03 -0700 Subject: [PATCH] pygtk placeholer --- objectlist-new.py | 360 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 360 insertions(+) create mode 100644 objectlist-new.py diff --git a/objectlist-new.py b/objectlist-new.py new file mode 100644 index 0000000..1dcb76c --- /dev/null +++ b/objectlist-new.py @@ -0,0 +1,360 @@ +import sys +import gi +import os +gi.require_version('Gtk', '4.0') +gi.require_version('Adw', '1') +from gi.repository import Gtk, Adw, GLib, Gio, Gdk + +class MainWindow (Gtk.Window): + def __init__ (self, *args, **kwargs): + super ().__init__ (*args, **kwargs) + + GLib.set_prgname ( + 'Adwaita Examples by Afacanc38' + ) + GLib.set_application_name ( + 'Adwaita ListBox' + ) + + self.set_default_size (650, 500) + self.set_size_request (400, 400) + + self.scroll = Gtk.ScrolledWindow () + self.scroll.set_policy (Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC) + self.set_child (self.scroll) + + self.box_main = Gtk.Box ( + orientation = Gtk.Orientation.VERTICAL + ) + self.scroll.set_child ( + self.box_main + ) + + # HeaderBar + self.hb = Gtk.HeaderBar () + self.set_titlebar ( + self.hb + ) + + # Clamp + self.clamp = Adw.Clamp () + self.box_main.append ( + self.clamp + ) + + # Wrapper + self.box_wrapper = Gtk.Box ( + orientation = Gtk.Orientation.VERTICAL, + margin_top = 20, + margin_bottom = 20, + margin_start = 20, + margin_end = 20 + ) + self.clamp.set_child ( + self.box_wrapper + ) + + # Header + self.box_header = Gtk.Box ( + orientation = Gtk.Orientation.VERTICAL, + margin_bottom = 10 + ) + self.box_wrapper.append ( + self.box_header + ) + + # Title + self.lbl_title = Gtk.Label ( + label = "Lists", + halign = Gtk.Align.CENTER, + wrap = True + ) + self.lbl_title.get_style_context ().add_class ('title-1') + self.box_header.append ( + self.lbl_title + ) + + self.box_listbox_wrapper = Gtk.Box ( + spacing = 20, + orientation = Gtk.Orientation.VERTICAL + ) + self.box_wrapper.append ( + self.box_listbox_wrapper + ) + + # ListBox + self.listbox1 = Gtk.ListBox ( + selection_mode = Gtk.SelectionMode.NONE + ) + self.listbox1.get_style_context ().add_class ('boxed-list') + self.box_listbox_wrapper.append ( + self.listbox1 + ) + + # Row 1 + self.row_listbox1_1 = Adw.ActionRow ( + title = 'ActionRow', + subtitle = 'This ActionRow has subtitle and icon', + icon_name = 'emblem-system-symbolic' + ) + self.listbox1.append ( + self.row_listbox1_1 + ) + + # Row 2 + self.row_listbox1_2 = Adw.ActionRow ( + title = 'ActionRow can have suffix widgets', + icon_name = 'go-home-symbolic', + subtitle = 'This listbox has subtitle, suffix widget and icon' + ) + + self.btn_listbox1_2_suffix = Gtk.Button ( + label = 'Button', + halign = Gtk.Align.CENTER, + valign = Gtk.Align.CENTER, + ) + self.row_listbox1_2.add_suffix ( + self.btn_listbox1_2_suffix + ) + + self.listbox1.append ( + self.row_listbox1_2 + ) + + # ListBox 2 + self.listbox2 = Gtk.ListBox ( + selection_mode = Gtk.SelectionMode.NONE + ) + self.listbox2.get_style_context ().add_class ('boxed-list') + self.box_listbox_wrapper.append ( + self.listbox2 + ) + + # Row 1 + self.row_listbox2_1 = Adw.ActionRow ( + title = 'ActionRow can have prefix widgets', + activatable = True + ) + + self.rd_listbox2_1_prefix = Gtk.CheckButton () + self.row_listbox2_1.add_prefix ( + self.rd_listbox2_1_prefix + ) + self.row_listbox2_1.set_activatable_widget ( + self.rd_listbox2_1_prefix + ) + + self.listbox2.append ( + self.row_listbox2_1 + ) + + # Row 2 + self.row_listbox2_2 = Adw.ActionRow ( + title = 'ActionRow can have prefix widgets', + activatable = True + ) + + self.rd_listbox2_2_prefix = Gtk.CheckButton () + self.row_listbox2_2.add_prefix ( + self.rd_listbox2_2_prefix + ) + self.rd_listbox2_2_prefix.set_group ( + self.rd_listbox2_1_prefix + ) + self.row_listbox2_2.set_activatable_widget ( + self.rd_listbox2_2_prefix + ) + + self.listbox2.append ( + self.row_listbox2_2 + ) + + # ListBox 3 + self.prfgr_listbox3 = Adw.PreferencesGroup ( + title = 'Expander Rows', + margin_top = 10 + ) + self.box_wrapper.append ( + self.prfgr_listbox3 + ) + + self.listbox3 = Gtk.ListBox ( + selection_mode = Gtk.SelectionMode.NONE + ) + self.listbox3.get_style_context ().add_class ('boxed-list') + self.prfgr_listbox3.add ( + self.listbox3 + ) + + # ExpanderRow 1 + self.row_listbox3_1 = Adw.ExpanderRow ( + title = 'ExpanderRow', + subtitle = 'This ActionRow has subtitle and icon', + icon_name = 'emblem-system-symbolic' + ) + self.listbox3.append ( + self.row_listbox3_1 + ) + + for x in range(3): + self.row_listbox3_1.add_row ( + Adw.ActionRow ( + title = 'Nested row', + ) + ) + # ExpanderRow 2 + self.row_listbox3_2 = Adw.ExpanderRow ( + title = 'ExpanderRow', + subtitle = 'With an action', + icon_name = 'emblem-system-symbolic' + ) + self.btn_listbox3_2_action = Gtk.Button.new_from_icon_name ( + 'edit-copy-symbolic', + ) + self.btn_listbox3_2_action.set_halign (Gtk.Align.CENTER) + self.btn_listbox3_2_action.set_valign (Gtk.Align.CENTER) + self.row_listbox3_2.add_action ( + self.btn_listbox3_2_action + ) + self.listbox3.append ( + self.row_listbox3_2 + ) + + for x in range(3): + self.row_listbox3_2.add_row ( + Adw.ActionRow ( + title = 'Nested row', + ) + ) + + # ListBox 4 + self.prfgr_listbox4 = Adw.PreferencesGroup ( + title = 'Preferences Group has a suffix', + margin_top = 10 + ) + + self.btn_prfgr_listbox4_suffix = Gtk.Button () + self.btn_prfgr_listbox4_suffix.get_style_context ().add_class ( + 'image-text-button' + ) + self.btn_prfgr_listbox4_suffix.get_style_context ().add_class ( + 'flat' + ) + + self.btn_prfgr_listbox4_suffix_content = Adw.ButtonContent ( + label = 'Button', + icon_name = 'view-pin-symbolic' + ) + self.btn_prfgr_listbox4_suffix.set_child ( + self.btn_prfgr_listbox4_suffix_content + ) + + self.prfgr_listbox4.set_header_suffix ( + self.btn_prfgr_listbox4_suffix + ) + + self.box_wrapper.append ( + self.prfgr_listbox4 + ) + + self.listbox4 = Gtk.ListBox ( + selection_mode = Gtk.SelectionMode.NONE + ) + self.listbox4.get_style_context ().add_class ('boxed-list') + self.prfgr_listbox4.add ( + self.listbox4 + ) + + # ExpanderRow 1 + self.row_listbox4_1 = Adw.ExpanderRow ( + title = 'ExpanderRow', + subtitle = 'This ActionRow has subtitle and icon', + icon_name = 'emblem-system-symbolic' + ) + self.listbox4.append ( + self.row_listbox4_1 + ) + + for x in range(3): + self.row_listbox4_1.add_row ( + Adw.ActionRow ( + title = 'Nested row', + ) + ) + + # ExpanderRow 2 + self.row_listbox4_2 = Adw.ExpanderRow ( + title = 'ExpanderRow', + subtitle = 'This ActionRow has subtitle and icon', + icon_name = 'emblem-system-symbolic', + show_enable_switch = True + ) + self.listbox4.append ( + self.row_listbox4_2 + ) + + for x in range(3): + self.row_listbox4_2.add_row ( + Adw.ActionRow ( + title = 'Nested row', + ) + ) + + # ListBox 5 + self.prfgr_listbox5 = Adw.PreferencesGroup ( + title = 'Combo Rows', + margin_top = 10 + ) + self.box_wrapper.append ( + self.prfgr_listbox5 + ) + + self.listbox5 = Gtk.ListBox ( + selection_mode = Gtk.SelectionMode.NONE + ) + self.listbox5.get_style_context ().add_class ('boxed-list') + self.prfgr_listbox5.add ( + self.listbox5 + ) + + self.strlist_listbox5_1 = Gtk.StringList () + self.strlist_listbox5_1.append ('Foo') + self.strlist_listbox5_1.append ('Bar') + self.strlist_listbox5_1.append ('Baz') + # Row 1 + self.row_listbox5_1 = Adw.ComboRow ( + title = 'This a combo row' + ) + self.row_listbox5_1.connect ( + 'notify::selected-item', + self.on_row_listbox5_1_select + ) + self.row_listbox5_1.set_model ( + self.strlist_listbox5_1 + ) + self.listbox5.append ( + self.row_listbox5_1 + ) + def on_row_listbox5_1_select (self, widget, event): + print (f'"{self.row_listbox5_1.get_selected_item ().get_string ()}" is selected.') + +class MyApp (Adw.Application): + def __init__ (self, **kwargs): + super ().__init__ ( + **kwargs + ) + self.connect ( + 'activate', + self.on_activate + ) + + def on_activate (self, app): + self.win = MainWindow ( + application = app + ) + self.win.present () + +app = MyApp ( + application_id = 'io.github.afacanc38.adw-listbox' +) +app.run (sys.argv)