Add template for a preferences dialog

This commit is contained in:
Gergely Polonkai 2014-10-15 21:52:12 +02:00
parent f8a419aab1
commit 3d884c1fdc
6 changed files with 67 additions and 0 deletions

View File

@ -21,6 +21,7 @@ gg-resources.c: $(res_src) $(resource_files)
VALA_SOURCES = \ VALA_SOURCES = \
gg-application.vala \ gg-application.vala \
gg-window.vala \ gg-window.vala \
gg-preferences.vala \
gg-main.vala gg-main.vala
gnome_gitlab_SOURCES = \ gnome_gitlab_SOURCES = \

View File

@ -8,6 +8,7 @@ namespace GnomeGitlab
}; };
const GLib.ActionEntry[] action_entries = { const GLib.ActionEntry[] action_entries = {
{ "preferences", on_preferences_activate },
{ "quit", on_quit_activate } { "quit", on_quit_activate }
}; };
@ -59,5 +60,12 @@ namespace GnomeGitlab
{ {
quit (); quit ();
} }
void on_preferences_activate ()
{
Preferences.show ((Window)get_active_window ());
return;
}
} }
} }

28
src/gg-preferences.vala Normal file
View File

@ -0,0 +1,28 @@
namespace GnomeGitlab
{
[GtkTemplate (ui = "/eu/polonkai/gergely/gnome-gitlab/ui/gg-preferences.ui")]
public class Preferences : Gtk.Dialog
{
private static GLib.Once<Preferences> instance;
private Preferences () {
response.connect (() => {
hide ();
});
}
public static void show (Window parent)
{
Preferences inst;
inst = instance.once (() => { return new Preferences (); });
if (parent != inst.get_transient_for ()) {
inst.set_transient_for (parent);
}
inst.present ();
}
}
}

View File

@ -2,5 +2,6 @@
<gresources> <gresources>
<gresource prefix="/eu/polonkai/gergely/gnome-gitlab"> <gresource prefix="/eu/polonkai/gergely/gnome-gitlab">
<file>ui/gg-window.ui</file> <file>ui/gg-window.ui</file>
<file>ui/gg-preferences.ui</file>
</gresource> </gresource>
</gresources> </gresources>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk+" version="3.12"/>
<template class="GnomeGitlabPreferences" parent="GtkDialog">
<property name="title" translatable="yes">Preferences</property>
<property name="type_hint">normal</property>
<property name="can_focus">False</property>
<child internal-child="vbox">
<object class="GtkBox">
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="label">Preferences dialog</property>
</object>
</child>
</object>
</child>
</template>
</interface>

View File

@ -38,6 +38,16 @@
<property name="fill">True</property> <property name="fill">True</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkButton">
<property name="label" translatable="yes">Manage GitLab instances</property>
<property name="action_name">app.preferences</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
</object> </object>
<packing> <packing>
<property name="name">no-instances</property> <property name="name">no-instances</property>