Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
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)
Ejemplo n.º 4
0
    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()
Ejemplo n.º 5
0
  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()
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
    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()