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;
16
const PreferencesUI = imports.preferences_ui;
18
const Application = new Lang.Class ({
20
Extends: Gtk.Application,
24
application_id: "org.gego.gpump",
25
flags: Gio.ApplicationFlags.FLAGS_NONE,
26
register_session: true
28
GLib.set_application_name (_("GPump"));
30
this.settings = SettingsData.get_settings ();
33
vfunc_activate: function () {
34
/* Guarantee that only one window is present at any time. */
35
let w_list = this.get_windows ();
41
this._prepare_window ();
42
this._prepare_app_menu ();
43
this._prepare_header_bar ();
45
this.window.show_all ();
49
* This function is used to prepare the window, it also initializes and adds
50
* the headerbar to it.
52
_prepare_window: function () {
53
this.window = new Gtk.ApplicationWindow ({
55
type: Gtk.WindowType.TOPLEVEL,
56
title: GLib.get_application_name (),
61
window_position: Gtk.WindowPosition.CENTER
64
this.window.set_titlebar ((this.headerbar = new Gtk.HeaderBar({
65
title: GLib.get_application_name (),
66
subtitle: _('A Pump.io client'),
67
show_close_button: true
72
this.window.add (( this.scroll_view = new Gtk.ScrolledWindow () ));
73
this.scroll_view.add ((this.list_box = new Gtk.ListBox ()));
75
this.window.connect ('delete_event',
76
Lang.bind (this.window,
77
this.window.hide_on_delete));
79
this.add_window (this.window);
83
* This function is used to create the application menu.
85
_prepare_app_menu: function () {
86
let menu = new Gio.Menu ();
87
let section = new Gio.Menu ();
89
section.append ("Preferences", "app.preferences");
90
menu.append_section (null, section);
92
section = new Gio.Menu ();
93
section.append (_("About"), "app.about");
94
section.append (_("Quit"), "app.quit");
95
menu.append_section (null, section);
97
this.set_app_menu (menu);
99
let quit_action = new Gio.SimpleAction ({name: "quit"});
100
quit_action.connect ('activate', Lang.bind (this, function () {
103
this.add_action (quit_action);
105
let preferences_action = new Gio.SimpleAction ({name: "preferences"});
106
preferences_action.connect ('activate', Lang.bind (this, function (){
107
let pref_dialog = new PreferencesUI.PreferencesUI ();
110
this.add_action (preferences_action)
114
* This function is used to prepare the hearderbar by adding buttons and
115
* assigning callback functions to them.
117
_prepare_header_bar: function () {
118
this.headerbar.pack_start ((this.new_post_btn = new Gtk.Button ({
119
image: (new Gtk.Image ({icon_name: 'text-editor-symbolic'})),
120
tooltip_text: _('Create new post')
123
this.headerbar.pack_start ((this.refresh_btn = new Gtk.Button({
124
image: (new Gtk.Image ({icon_name: 'emblem-synchronizing-symbolic'})),
125
tooltip_text: _('Refresh the stream')
128
this.headerbar.pack_end ((this.user_menu_btn = new Gtk.Button ({
129
image: (new Gtk.Image ({icon_name: 'emblem-system-symbolic'})),
130
tooltip_text: _('Switch and manage users')