1
/* This file is part of GPump, a Pump.io client.
3
* GPump (THE SOFTWARE) is made available under the terms and conditions of the
4
* GNU Lesser General Public Licence 3.0. A copy of the licence can be read
5
* in the file lgpl-3.0.txt in the root of this project.
8
const Gio = imports.gi.Gio;
9
const GLib = imports.gi.GLib;
10
const Gtk = imports.gi.Gtk;
11
const Lang = imports.lang;
12
const _ = imports.gettext.gettext;
15
const SettingsData = imports.settings_data;
17
const Application = new Lang.Class ({
19
Extends: Gtk.Application,
23
application_id: "org.gego.gpump",
24
flags: Gio.ApplicationFlags.FLAGS_NONE,
25
register_session: true
27
GLib.set_application_name (_("GPump"));
29
this.settings = SettingsData.get_settings ();
32
vfunc_activate: function () {
33
/* Guarantee that only one window is present at any time. */
34
let w_list = this.get_windows ();
40
this._prepareWindow ();
41
this._prepareAppMenu ();
42
this._prepareHeaderBar ();
44
this.window.show_all ();
48
* This function is used to prepare the window, it also initializes and adds
49
* the headerbar to it.
51
_prepareWindow: function () {
52
this.window = new Gtk.ApplicationWindow ({
54
type: Gtk.WindowType.TOPLEVEL,
55
title: GLib.get_application_name (),
60
window_position: Gtk.WindowPosition.CENTER
63
this.window.set_titlebar ((this.headerbar = new Gtk.HeaderBar({
64
title: GLib.get_application_name (),
65
subtitle: _('A Pump.io client'),
66
show_close_button: true
71
this.window.add (( this.scroll_view = new Gtk.ScrolledWindow () ));
72
this.scroll_view.add ((this.list_box = new Gtk.ListBox ()));
74
this.window.connect ('delete_event',
75
Lang.bind (this.window,
76
this.window.hide_on_delete));
78
this.add_window (this.window);
82
* This function is used to create the application menu.
84
_prepareAppMenu: function () {
85
let menu = new Gio.Menu ();
86
let section = new Gio.Menu ();
88
section.append ("Preferences", "app.preferences");
89
menu.append_section (null, section);
91
section = new Gio.Menu ();
92
section.append (_("About"), "app.about");
93
section.append (_("Quit"), "app.quit");
94
menu.append_section (null, section);
96
this.set_app_menu (menu);
98
let quit_action = new Gio.SimpleAction ({name: "quit"});
99
quit_action.connect ('activate', Lang.bind (this, function () {
102
this.add_action (quit_action);
107
* This function is used to prepare the hearderbar by adding buttons and
108
* assigning callback functions to them.
110
_prepareHeaderBar: function () {
111
this.headerbar.pack_start ((this.new_post_btn = new Gtk.Button ({
112
image: (new Gtk.Image ({icon_name: 'text-editor-symbolic'})),
113
tooltip_text: _('Create new post')
116
this.headerbar.pack_start ((this.refresh_btn = new Gtk.Button({
117
image: (new Gtk.Image ({icon_name: 'emblem-synchronizing-symbolic'})),
118
tooltip_text: _('Refresh the stream')
121
this.headerbar.pack_end ((this.user_menu_btn = new Gtk.Button ({
122
image: (new Gtk.Image ({icon_name: 'emblem-system-symbolic'})),
123
tooltip_text: _('Switch and manage users')