mirror of
https://github.com/linuxmint/timeshift.git
synced 2024-08-16 20:10:39 +03:00
About: Update info and use a Gtk.AboutDialog
This commit is contained in:
parent
712aa213de
commit
d7d6edbdc1
@ -906,40 +906,18 @@ class MainWindow : Gtk.Window{
|
||||
}
|
||||
|
||||
private void btn_about_clicked (){
|
||||
|
||||
var dialog = new AboutWindow(this);
|
||||
dialog.set_transient_for (this);
|
||||
|
||||
dialog.authors = {
|
||||
"Tony George:teejeetech@gmail.com"
|
||||
};
|
||||
|
||||
dialog.translators = null;
|
||||
|
||||
dialog.contributors = {
|
||||
"View on GitHub:https://github.com/teejee2008/timeshift/graphs/contributors"
|
||||
};
|
||||
|
||||
dialog.third_party = {
|
||||
"rsync by Andrew Tridgell, Wayne Davison, and others:http://rsync.samba.org/"
|
||||
};
|
||||
|
||||
dialog.documenters = null;
|
||||
dialog.artists = null;
|
||||
dialog.donations = null;
|
||||
|
||||
dialog.program_name = AppName;
|
||||
dialog.comments = _("System Restore Utility");
|
||||
dialog.copyright = "Copyright © 2012-21 Tony George (%s)".printf(AppAuthorEmail);
|
||||
dialog.version = AppVersion;
|
||||
dialog.logo = IconManager.lookup("timeshift", 256);
|
||||
|
||||
//dialog.license = "";
|
||||
dialog.website = "https://teejeetech.com/";
|
||||
dialog.website_label = "https://teejeetech.com/";
|
||||
|
||||
dialog.initialize();
|
||||
dialog.show_all();
|
||||
var dialog = new Gtk.AboutDialog();
|
||||
dialog.set_transient_for(this);
|
||||
dialog.set_program_name(AppName);
|
||||
dialog.set_comments(_("System Restore Utility"));
|
||||
dialog.set_copyright("Copyright © 2012-21 Tony George (%s)".printf(AppAuthorEmail));
|
||||
dialog.set_version(AppVersion);
|
||||
dialog.set_logo_icon_name("timeshift");
|
||||
dialog.set_license_type(Gtk.License.GPL_2_0);
|
||||
dialog.set_website_label("https://github.com/linuxmint/timeshift");
|
||||
dialog.set_website("https://github.com/linuxmint/timeshift");
|
||||
dialog.run();
|
||||
dialog.destroy();
|
||||
}
|
||||
|
||||
private void ui_sensitive(bool enable){
|
||||
|
@ -1,520 +0,0 @@
|
||||
/*
|
||||
* AboutWindow.vala
|
||||
*
|
||||
* Copyright 2012-2018 Tony George <teejeetech@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301, USA.
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
using Gtk;
|
||||
|
||||
using TeeJee.Logging;
|
||||
using TeeJee.FileSystem;
|
||||
using TeeJee.JsonHelper;
|
||||
using TeeJee.ProcessHelper;
|
||||
using TeeJee.GtkHelper;
|
||||
using TeeJee.System;
|
||||
using TeeJee.Misc;
|
||||
|
||||
public class AboutWindow : Gtk.Window {
|
||||
|
||||
private Gtk.Box vbox_main;
|
||||
private Gtk.Box vbox_logo;
|
||||
private Gtk.Box vbox_credits;
|
||||
private Gtk.Box vbox_license;
|
||||
private Gtk.Box vbox_lines;
|
||||
private Gtk.Box hbox_action;
|
||||
private Gtk.Button btn_license;
|
||||
private Gtk.Button btn_credits;
|
||||
private Gtk.Button btn_close;
|
||||
private Gtk.Window window;
|
||||
|
||||
private Gtk.Image img_logo;
|
||||
private Gtk.Label lbl_program_name;
|
||||
private Gtk.Label lbl_version;
|
||||
private Gtk.Label lbl_comments;
|
||||
private Gtk.Label lbl_license;
|
||||
private Gtk.LinkButton lbtn_website;
|
||||
private Gtk.Label lbl_copyright;
|
||||
|
||||
private string[] _artists;
|
||||
public string[] artists{
|
||||
get{
|
||||
return _artists;
|
||||
}
|
||||
set{
|
||||
_artists = value;
|
||||
}
|
||||
}
|
||||
|
||||
private string[] _authors;
|
||||
public string[] authors{
|
||||
get{
|
||||
return _authors;
|
||||
}
|
||||
set{
|
||||
_authors = value;
|
||||
}
|
||||
}
|
||||
|
||||
private string[] _contributors;
|
||||
public string[] contributors{
|
||||
get{
|
||||
return _contributors;
|
||||
}
|
||||
set{
|
||||
_contributors = value;
|
||||
}
|
||||
}
|
||||
|
||||
private string _comments = "";
|
||||
public string comments{
|
||||
get{
|
||||
return _comments;
|
||||
}
|
||||
set{
|
||||
_comments = value;
|
||||
}
|
||||
}
|
||||
|
||||
private string _copyright = "";
|
||||
public string copyright{
|
||||
get{
|
||||
return _copyright;
|
||||
}
|
||||
set{
|
||||
_copyright = value;
|
||||
}
|
||||
}
|
||||
|
||||
private string[] _documenters;
|
||||
public string[] documenters{
|
||||
get{
|
||||
return _documenters;
|
||||
}
|
||||
set{
|
||||
_documenters = value;
|
||||
}
|
||||
}
|
||||
|
||||
private string[] _donations;
|
||||
public string[] donations{
|
||||
get{
|
||||
return _donations;
|
||||
}
|
||||
set{
|
||||
_donations = value;
|
||||
}
|
||||
}
|
||||
|
||||
private string _license = "";
|
||||
public string license{
|
||||
get{
|
||||
return _license;
|
||||
}
|
||||
set{
|
||||
_license = value;
|
||||
}
|
||||
}
|
||||
|
||||
private Gdk.Pixbuf _logo;
|
||||
public Gdk.Pixbuf logo{
|
||||
get{
|
||||
return _logo;
|
||||
}
|
||||
set{
|
||||
_logo = value;
|
||||
}
|
||||
}
|
||||
|
||||
private string _program_name = "";
|
||||
public string program_name{
|
||||
get{
|
||||
return _program_name;
|
||||
}
|
||||
set{
|
||||
_program_name = value;
|
||||
}
|
||||
}
|
||||
|
||||
private string[] _translators;
|
||||
public string[] translators{
|
||||
get{
|
||||
return _translators;
|
||||
}
|
||||
set{
|
||||
_translators = value;
|
||||
}
|
||||
}
|
||||
|
||||
private string[] _third_party;
|
||||
public string[] third_party{
|
||||
get{
|
||||
return _third_party;
|
||||
}
|
||||
set{
|
||||
_third_party = value;
|
||||
}
|
||||
}
|
||||
|
||||
private string _version = "";
|
||||
public string version{
|
||||
get{
|
||||
return _version;
|
||||
}
|
||||
set{
|
||||
_version = value;
|
||||
}
|
||||
}
|
||||
|
||||
private string _website = "";
|
||||
public string website{
|
||||
get{
|
||||
return _website;
|
||||
}
|
||||
set{
|
||||
_website = value;
|
||||
}
|
||||
}
|
||||
|
||||
private string _website_label = "";
|
||||
public string website_label{
|
||||
get{
|
||||
return _website_label;
|
||||
}
|
||||
set{
|
||||
_website_label = value;
|
||||
}
|
||||
}
|
||||
|
||||
private string username = "";
|
||||
|
||||
public AboutWindow(Gtk.Window _window) {
|
||||
|
||||
window = _window;
|
||||
|
||||
window_position = WindowPosition.CENTER_ON_PARENT;
|
||||
set_destroy_with_parent (true);
|
||||
set_modal (true);
|
||||
skip_taskbar_hint = false;
|
||||
set_default_size(450, 450);
|
||||
|
||||
if (get_user_id_effective() == 0){
|
||||
username = get_username();
|
||||
log_debug("username: %s".printf(username));
|
||||
}
|
||||
|
||||
vbox_main = new Gtk.Box(Orientation.VERTICAL,0);
|
||||
vbox_main.margin = 12;
|
||||
vbox_main.spacing = 6;
|
||||
this.add(vbox_main);
|
||||
|
||||
vbox_logo = new Gtk.Box(Orientation.VERTICAL,0);
|
||||
vbox_main.add(vbox_logo);
|
||||
|
||||
// license -------------------------------------
|
||||
|
||||
vbox_license = new Gtk.Box(Orientation.VERTICAL,0);
|
||||
vbox_license.no_show_all = true;
|
||||
vbox_main.add(vbox_license);
|
||||
|
||||
var sw_license = new Gtk.ScrolledWindow(null, null);
|
||||
sw_license.set_shadow_type(ShadowType.ETCHED_IN);
|
||||
sw_license.expand = true;
|
||||
vbox_license.add(sw_license);
|
||||
|
||||
var label = new Gtk.Label("");
|
||||
label.set_use_markup(true);
|
||||
label.margin_top = 5;
|
||||
label.xalign = 0.0f;
|
||||
label.yalign = 0.0f;
|
||||
//label.max_width_chars = 70;
|
||||
label.wrap = true;
|
||||
label.wrap_mode = Pango.WrapMode.WORD_CHAR;
|
||||
label.use_markup = true;
|
||||
label.margin = 6;
|
||||
sw_license.add(label);
|
||||
lbl_license = label;
|
||||
|
||||
// credits --------------------------------
|
||||
|
||||
vbox_credits = new Gtk.Box(Orientation.VERTICAL,0);
|
||||
vbox_credits.no_show_all = true;
|
||||
vbox_main.add(vbox_credits);
|
||||
|
||||
var sw_credits = new Gtk.ScrolledWindow(null, null);
|
||||
sw_credits.set_shadow_type(ShadowType.ETCHED_IN);
|
||||
sw_credits.expand = true;
|
||||
vbox_credits.add(sw_credits);
|
||||
|
||||
vbox_lines = new Gtk.Box(Orientation.VERTICAL,0);
|
||||
vbox_lines.margin_top = 10;
|
||||
sw_credits.add(vbox_lines);
|
||||
|
||||
//logo
|
||||
img_logo = new Gtk.Image();
|
||||
img_logo.margin_top = 6;
|
||||
img_logo.margin_bottom = 6;
|
||||
vbox_logo.add(img_logo);
|
||||
|
||||
//program_name
|
||||
lbl_program_name = new Gtk.Label("");
|
||||
lbl_program_name.set_use_markup(true);
|
||||
vbox_logo.add(lbl_program_name);
|
||||
|
||||
//version
|
||||
lbl_version = new Gtk.Label("");
|
||||
lbl_version.set_use_markup(true);
|
||||
lbl_version.margin_top = 5;
|
||||
vbox_logo.add(lbl_version);
|
||||
|
||||
//comments
|
||||
lbl_comments = new Gtk.Label("");
|
||||
lbl_comments.set_use_markup(true);
|
||||
lbl_comments.margin_top = 10;
|
||||
vbox_logo.add(lbl_comments);
|
||||
|
||||
//website
|
||||
lbtn_website = new LinkButton("");
|
||||
lbtn_website.margin_top = 5;
|
||||
vbox_logo.add(lbtn_website);
|
||||
|
||||
lbtn_website.activate_link.connect(()=>{
|
||||
return xdg_open(lbtn_website.uri, username);
|
||||
});
|
||||
|
||||
//copyright
|
||||
lbl_copyright = new Gtk.Label("");
|
||||
lbl_copyright.set_use_markup(true);
|
||||
lbl_copyright.margin_top = 5;
|
||||
vbox_logo.add(lbl_copyright);
|
||||
|
||||
//spacer_bottom
|
||||
var spacer_bottom = new Gtk.Label("");
|
||||
spacer_bottom.margin_top = 20;
|
||||
vbox_logo.add(spacer_bottom);
|
||||
|
||||
add_action_buttons();
|
||||
}
|
||||
|
||||
private void add_action_buttons(){
|
||||
|
||||
hbox_action = add_button_box(vbox_main, Gtk.Orientation.HORIZONTAL, Gtk.ButtonBoxStyle.CENTER, 6);
|
||||
|
||||
//btn_license
|
||||
btn_license = new Gtk.Button.with_label(" " + _("License"));
|
||||
btn_license.image = IconManager.lookup_image("help-about-symbolic", 16);
|
||||
hbox_action.add(btn_license);
|
||||
|
||||
//btn_credits
|
||||
btn_credits = new Gtk.Button.with_label(" " + _("Credits"));
|
||||
btn_credits.image = IconManager.lookup_image("help-about-symbolic", 16);
|
||||
hbox_action.add(btn_credits);
|
||||
|
||||
//btn_close
|
||||
btn_close = new Gtk.Button.with_label(" " + _("Close"));
|
||||
btn_close.image = IconManager.lookup_image("help-about-symbolic", 16);
|
||||
hbox_action.add(btn_close);
|
||||
|
||||
// handlers
|
||||
|
||||
btn_license.clicked.connect(()=>{
|
||||
|
||||
vbox_logo.visible = !vbox_logo.visible;
|
||||
|
||||
vbox_license.visible = !vbox_license.visible;
|
||||
|
||||
if (vbox_license.visible){
|
||||
vbox_license.set_no_show_all(false);
|
||||
vbox_license.show_all();
|
||||
vbox_credits.hide();
|
||||
vbox_logo.hide();
|
||||
}
|
||||
else{
|
||||
vbox_logo.show_all();
|
||||
}
|
||||
|
||||
if (vbox_license.visible){
|
||||
btn_license.label = " " + _("Back");
|
||||
btn_license.image = IconManager.lookup_image("go-previous-symbolic", 16);
|
||||
btn_license.always_show_image = true;
|
||||
btn_credits.hide();
|
||||
this.resize(800, 500);
|
||||
}
|
||||
else{
|
||||
btn_license.label = " " + _("License");
|
||||
btn_license.image = IconManager.lookup_image("help-about-symbolic", 16);
|
||||
btn_license.always_show_image = true;
|
||||
btn_credits.show();
|
||||
this.resize(450, 400);
|
||||
}
|
||||
});
|
||||
|
||||
btn_credits.clicked.connect(()=>{
|
||||
|
||||
vbox_logo.visible = !vbox_logo.visible;
|
||||
|
||||
vbox_credits.visible = !vbox_credits.visible;
|
||||
|
||||
if (vbox_credits.visible){
|
||||
vbox_credits.set_no_show_all(false);
|
||||
vbox_credits.show_all();
|
||||
vbox_license.hide();
|
||||
vbox_logo.hide();
|
||||
}
|
||||
else{
|
||||
vbox_logo.show_all();
|
||||
}
|
||||
|
||||
if (vbox_credits.visible){
|
||||
btn_credits.label = " " + _("Back");
|
||||
btn_credits.image = IconManager.lookup_image("go-previous-symbolic", 16);
|
||||
btn_credits.always_show_image = true;
|
||||
btn_license.hide();
|
||||
}
|
||||
else{
|
||||
btn_credits.label = " " + _("Credits");
|
||||
btn_credits.image = IconManager.lookup_image("help-about-symbolic", 16);
|
||||
btn_credits.always_show_image = true;
|
||||
btn_license.show();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
btn_close.clicked.connect(()=>{ this.destroy(); });
|
||||
}
|
||||
|
||||
public void initialize() {
|
||||
|
||||
title = program_name;
|
||||
img_logo.pixbuf = logo.scale_simple(128,128,Gdk.InterpType.HYPER);
|
||||
lbl_program_name.label = "<span size='larger'>%s</span>".printf(program_name);
|
||||
lbl_version.label = "v%s".printf(version);
|
||||
lbl_comments.label = "%s".printf(comments);
|
||||
lbtn_website.uri = website;
|
||||
lbtn_website.label = website_label;
|
||||
lbl_copyright.label = "<span>%s</span>".printf(copyright);
|
||||
|
||||
if (license.length > 0){
|
||||
lbl_license.label = license;
|
||||
}
|
||||
else{
|
||||
lbl_license.label = escape_html(GPLv2LicenseText);
|
||||
}
|
||||
|
||||
if (authors.length > 0){
|
||||
add_header(_("Authors"));
|
||||
foreach(string name in authors){
|
||||
add_line("%s\n".printf(name));
|
||||
}
|
||||
add_line("\n");
|
||||
}
|
||||
|
||||
if (contributors.length > 0){
|
||||
add_header(_("Contributors"));
|
||||
foreach(string name in contributors){
|
||||
add_line("%s\n".printf(name));
|
||||
}
|
||||
add_line("\n");
|
||||
}
|
||||
|
||||
if (artists.length > 0){
|
||||
add_header(_("Artists"));
|
||||
foreach(string name in artists){
|
||||
add_line("%s\n".printf(name));
|
||||
}
|
||||
add_line("\n");
|
||||
}
|
||||
|
||||
if (translators.length > 0){
|
||||
add_header(_("Translations"));
|
||||
foreach(string name in translators){
|
||||
add_line("%s\n".printf(name));
|
||||
}
|
||||
add_line("\n");
|
||||
}
|
||||
|
||||
if (documenters.length > 0){
|
||||
add_header(_("Documentation"));
|
||||
foreach(string name in documenters){
|
||||
add_line("%s\n".printf(name));
|
||||
}
|
||||
add_line("\n");
|
||||
}
|
||||
|
||||
if (third_party.length > 0){
|
||||
add_header(_("Tools"));
|
||||
foreach(string name in third_party){
|
||||
add_line("%s\n".printf(name));
|
||||
}
|
||||
add_line("\n");
|
||||
}
|
||||
|
||||
if (donations.length > 0){
|
||||
add_header(_("Donations"));
|
||||
foreach(string name in donations){
|
||||
add_line("%s\n".printf(name));
|
||||
}
|
||||
add_line("\n");
|
||||
}
|
||||
|
||||
if (vbox_lines.get_children().length() == 0){
|
||||
btn_credits.visible = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void add_line(string text, bool escape_html_chars = true){
|
||||
|
||||
if (text.split(":").length >= 2){
|
||||
var link = new LinkButton(escape_html(text.split(":")[0]));
|
||||
vbox_lines.add(link);
|
||||
|
||||
string val = text[text.index_of(":") + 1:text.length];
|
||||
if (val.contains("@")){
|
||||
link.uri = "mailto:" + val;
|
||||
}
|
||||
else if(val.has_prefix("http://") || val.has_prefix("https://")){
|
||||
link.uri = val;
|
||||
}
|
||||
else{
|
||||
link.uri = "http://" + val;
|
||||
}
|
||||
|
||||
link.activate_link.connect(()=>{
|
||||
return xdg_open(link.uri, username);
|
||||
});
|
||||
}
|
||||
else{
|
||||
var txt = text;
|
||||
if (escape_html_chars){
|
||||
txt = escape_html(text);
|
||||
}
|
||||
|
||||
var lbl = new Gtk.Label(txt);
|
||||
lbl.set_use_markup(true);
|
||||
lbl.valign = Align.START;
|
||||
lbl.wrap = true;
|
||||
lbl.wrap_mode = Pango.WrapMode.WORD;
|
||||
vbox_lines.add(lbl);
|
||||
}
|
||||
}
|
||||
|
||||
private void add_header(string text){
|
||||
add_line("<b>%s</b>\n".printf(escape_html(text)), false);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user