def generate_headerbar(self): close_button = Gtk.Button(image=Gtk.Image().new_from_icon_name( "application-exit", Gtk.IconSize.SMALL_TOOLBAR)) close_button.props.name = "custom-close" close_button.props.always_show_image = True close_button.props.can_focus = False close_button.props.margin = 2 close_button.set_size_request(16, 16) close_button.get_style_context().remove_class("image-button") close_button.get_style_context().add_class("titlebutton") close_button.connect("clicked", self.on_close_window) close_button.connect("button-press-event", self.on_close_pressed) close_button.connect("held", self.on_close_held) menu_button = Gtk.Button(image=Gtk.Image().new_from_icon_name( "com.github.hezral-settings-symbolic", Gtk.IconSize.SMALL_TOOLBAR)) menu_button.props.name = "custom-menu" menu_button.props.always_show_image = True menu_button.props.can_focus = False menu_button.props.margin = 2 menu_button.set_size_request(16, 16) menu_button.get_style_context().remove_class("image-button") menu_button.get_style_context().add_class("titlebutton") # menu_button.connect("clicked", self.on_menu_clicked) menu_button.connect("clicked", self.on_settings_clicked) search_button = Gtk.Button(image=Gtk.Image().new_from_icon_name( "system-search-symbolic", Gtk.IconSize.SMALL_TOOLBAR)) search_button.props.name = "custom-search" search_button.props.always_show_image = True search_button.props.can_focus = False search_button.props.margin = 2 search_button.props.margin_right = 0 search_button.set_size_request(16, 16) search_button.get_style_context().remove_class("image-button") search_button.get_style_context().add_class("titlebutton") search_button.connect("clicked", self.on_search_clicked) self.search_revealer = Gtk.Revealer() self.search_revealer.props.transition_duration = 2000 self.search_revealer.props.transition_type = Gtk.RevealerTransitionType.CROSSFADE self.search_revealer.add(search_button) header = Handy.HeaderBar() header.props.hexpand = True # header.props.title = "Stashed" # header.props.valign = Gtk.Align.START # header.props.halign = Gtk.Align.FILL header.props.spacing = 0 header.props.has_subtitle = False header.props.show_close_button = False header.props.decoration_layout = ":" header.get_style_context().add_class( Granite.STYLE_CLASS_DEFAULT_DECORATION) header.get_style_context().add_class(Gtk.STYLE_CLASS_FLAT) header.pack_start(close_button) header.pack_end(menu_button) header.pack_end(self.search_revealer) return header
def __init__(self, names): Gtk.Window.__init__(self, title=APP_NAME) self.set_default_size(800, 600) self.set_position(Gtk.WindowPosition.CENTER) hb = Handy.HeaderBar() hb.set_show_close_button(True) hb.props.title = APP_NAME self.set_titlebar(hb) button = Gtk.Button() button.add(Gtk.Image.new_from_icon_name( "document-new", Gtk.IconSize.BUTTON)) button.connect("clicked", self.on_new_clicked) # , args) hb.pack_start(button) button = Gtk.Button() button.add(Gtk.Image.new_from_icon_name( "help-symbolic", Gtk.IconSize.BUTTON)) button.connect("clicked", self.on_about_clicked) hb.pack_end(button) scrolled = Gtk.ScrolledWindow() scrolled.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC) self.add(scrolled) self.vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) Gtk.StyleContext.add_class(self.vbox.get_style_context(), "linked") scrolled.add(self.vbox) options = ["Won", "Lost", "Draw"] self.group = [] for name in range(len(names)): self.group = Handy.PreferencesGroup() self.group.set_title(names[name]) for i in range(3): self.adjustment = Gtk.Adjustment() self.adjustment.set_value(0) self.adjustment.set_lower(-10000) self.adjustment.set_upper(10000) self.adjustment.set_step_increment(1) self.adjustment.set_page_increment(10) self.adjustment.set_page_size(0) self.player_spin = Gtk.SpinButton() self.player_spin.set_adjustment(self.adjustment) self.player_spin.set_digits(0) self.player_spin.set_value(0) self.row = Handy.ActionRow() self.row.set_title(options[i]) self.row.add_action(self.player_spin) self.row.set_activatable_widget(self.player_spin) self.group.add(self.row) self.vbox.pack_start(self.group, True, True, 0)
def __init__(self): super().__init__() self.set_title(title='Handy.HeaderBar') self.set_default_size(width=768 / 2, height=1366 / 2) self.set_position(position=Gtk.WindowPosition.CENTER) self.set_default_icon_from_file(filename='../assets/icons/icon.png') self.set_border_width(border_width=10) hdy_header_bar = Handy.HeaderBar() hdy_header_bar.set_title(title='Título') hdy_header_bar.set_subtitle(subtitle='sub-título') hdy_header_bar.set_show_close_button(setting=True) self.set_titlebar(titlebar=hdy_header_bar) hdy_search_bar = Handy.SearchBar() hdy_header_bar.add(widget=hdy_search_bar)
def __init__(self, **kwargs): super().__init__(**kwargs) header = Handy.HeaderBar() header.props.show_close_button = True header.props.hexpand = True header.props.title = "Hello World" label = Gtk.Label("Hello World") label.props.expand = True label.props.valign = label.props.halign = Gtk.Align.CENTER grid = Gtk.Grid() grid.props.expand = True grid.attach(header, 0, 0, 1, 1) grid.attach(label, 0, 1, 1, 1) self.add(grid) self.props.default_width = 480 self.props.default_height = 320 self.show_all()
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.set_icon_from_file("images/taskwarrior.png") self.set_wmclass("HandyTask", "HandyTask") # This will be in the windows group and have the "win" prefix # max_action = Gio.SimpleAction.new_stateful("maximize", None, # GLib.Variant.new_boolean(False)) # max_action.connect("change-state", self.on_maximize_toggle) # self.add_action(max_action) self.header = Handy.HeaderBar() self.header.set_title("HandyTask") self.back_button = Gtk.Button.new_from_icon_name("go-previous", Gtk.IconSize.BUTTON) # self.back_button.set_label("<") # self.back_button.set_image( # Gtk.Image.new_from_icon_name("go-previous", Gtk.IconSize.BUTTON) # ) self.back_button.connect("clicked", self.on_detail_cancel_clicked) self.header.pack_start(self.back_button) # self.back_button.show() # self.refresh_button = Gtk.ToolButton() # self.refresh_button.set_icon_name("view-refresh") self.refresh_button = Gtk.Button.new_from_icon_name("view-refresh", Gtk.IconSize.BUTTON) self.refresh_button.show() self.refresh_button.connect("clicked", self.on_refresh_clicked) self.header.pack_end(self.refresh_button) self.new_button = Gtk.Button.new_from_icon_name("appointment-new", Gtk.IconSize.BUTTON) self.new_button.connect("clicked", self.on_new_clicked) self.new_button.show() self.header.pack_end(self.new_button) self.set_titlebar(self.header) self.header.show() self.set_show_menubar(False) # Keep it in sync with the actual state # self.connect("notify::is-maximized", # lambda obj, pspec: max_action.set_state( # GLib.Variant.new_boolean(obj.props.is_maximized))) # Allocate a universal taskwarrior instance self.tasks = TaskList(taskwarrior = TaskWarrior()) # Responsive Box -> Stack transition # If there's enough width, we show the sidebar as a box (adjacent fields) # If not (see set_size_request in each of the children), Handy.Leaflet # instead displays as a stack (one view at a time) self.multi_view = Handy.Leaflet(orientation = Gtk.Orientation.HORIZONTAL) self.add(self.multi_view) self.multi_view.show() # Allocate the task list view itself self.initial_selection = True self.task_view = TaskListView( tasks = self.tasks, toggle = self.on_done_toggled, on_select = self.on_select_task ) self.multi_view.add(self.task_view) self.task_view.show() self.multi_view.bind_property( "folded", self.back_button, "visible", GObject.BindingFlags.SYNC_CREATE ) self.multi_view.bind_property( "folded", self.new_button, "visible", GObject.BindingFlags.SYNC_CREATE ) # Allocate the task detail sidebar self.detail_view = TaskDetailView( on_save = self.on_detail_save_clicked, on_cancel = self.on_detail_cancel_clicked, on_update_date = self.on_update_date ) self.multi_view.add(self.detail_view) # self.detail_view.hide() self.detail_view.show() self.task_view.unselect()
import gi gi.require_version('Handy', '0.0') gi.require_version('Gtk', '3.0') from gi.repository import Gtk, Handy, Gio # https://lazka.github.io/pgi-docs/#Handy-0.0/functions.html#Handy.init Handy.init() window = Gtk.Window(title="LibHandy Headerbar") window.set_default_size(400, 200) window.set_border_width(10) # https://lazka.github.io/pgi-docs/#Handy-0.0/classes/HeaderBar.html header = Handy.HeaderBar() header.set_title("hello") header.set_subtitle("how to use libhandy headerbar") header.set_show_close_button(True) # Override default titlebar window.set_titlebar(header) button = Gtk.Button.new() icon = Gio.ThemedIcon(name="mail-send-receive-symbolic") image = Gtk.Image.new_from_gicon(icon, Gtk.IconSize.BUTTON) button.add(image) header.pack_end(button) # box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
def __init__(self): Gtk.Window.__init__(self, title=APP_NAME) self.set_default_size(800, 600) self.set_position(Gtk.WindowPosition.CENTER) hb = Handy.HeaderBar() hb.set_show_close_button(True) hb.props.title = "Quiz" self.set_titlebar(hb) button = Gtk.Button() button.add( Gtk.Image.new_from_icon_name("document-new", Gtk.IconSize.BUTTON)) button.connect("clicked", self.on_new_clicked) # , args) hb.pack_start(button) button = Gtk.Button() button.add( Gtk.Image.new_from_icon_name("open-menu-symbolic", Gtk.IconSize.BUTTON)) button.connect("clicked", self.on_menu_clicked) hb.pack_end(button) self.popover = Gtk.PopoverMenu() vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) button = Gtk.Button() button.set_label("Information") button.connect("clicked", self.on_about) vbox.pack_start(button, True, True, 0) self.popover.add(vbox) self.popover.set_position(Gtk.PositionType.BOTTOM) self.vbox = Gtk.Box.new(Gtk.Orientation.VERTICAL, 5) # Gtk.StyleContext.add_class(self.vbox.get_style_context(), "linked") self.add(self.vbox) label = "Test" TestLabel = Gtk.Label() TestLabel.set_text(label) self.vbox.add(TestLabel) # This should be filled when clicking New game button # There would be n lists for each player # Each sub-list would have k dictionaries for each question # Each dictionary would be composed by following keys: # ['category', 'type', 'difficulty', 'question', 'correct_answer', 'incorrect_answers'] # 'type' is just 'multple' (4 answers, 1 correct and 3 wrong) or 'boolean' (True, False) self.questions = [] if (len(self.questions) != 0): pl = 0 for i in range(len(self.questions)): number = i quest = self.questions[pl]["results"][i] QuestionType = quest["type"] if TOPIC != "": cat = quest["category"] if DIFFICULTY != "": diff = quest["difficulty"] label = html.unescape(quest["question"]) QuestionLabel = Gtk.Label() QuestionLabel.set_text(label) print(label) answers = questionAPI.generate_answers(quest, QuestionType) for k in range(len(answers)): print(str(k + 1) + ". " + html.unescape(answers[k])) self.vbox.add(QuestionLabel) if (self.questions[pl]["results"][i]["type"] == "boolean"): button = Gtk.Button() button.set_label("True") button.connect("clicked", self.do_clicked) self.vbox.add(button) button = Gtk.Button() button.set_label("False") button.connect("clicked", self.do_clicked) self.vbox.add(button) self.show_all()