diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/deamon.vala | 11 | ||||
-rw-r--r-- | src/gui/newsWindow.vala | 93 | ||||
-rw-r--r-- | src/gui/settingsWindow.vala | 6 | ||||
-rw-r--r-- | src/utilities/bindingManager.vala | 2 | ||||
-rw-r--r-- | src/utilities/config.vala | 5 | ||||
-rw-r--r-- | src/utilities/logger.vala | 9 | ||||
-rw-r--r-- | src/utilities/paths.vala | 9 |
7 files changed, 132 insertions, 3 deletions
diff --git a/src/deamon.vala b/src/deamon.vala index 2424f8f..117e872 100644 --- a/src/deamon.vala +++ b/src/deamon.vala @@ -36,7 +36,7 @@ public class Deamon : GLib.Object { ///////////////////////////////////////////////////////////////////// public static int main(string[] args) { - version = "0.5.2"; + version = "0.5.3"; Logger.init(); Gdk.threads_init(); @@ -173,7 +173,14 @@ public class Deamon : GLib.Object { Logger.stats("LAUNCH " + version); // open pie if neccessary - if (open_pie != null) PieManager.open_pie(open_pie); + if (open_pie != null) + PieManager.open_pie(open_pie); + else if (Config.global.showed_news < NewsWindow.news_count + && Logger.get_statistics_size() > 10000) { + + var b = new NewsWindow(); + b.show(); + } Gtk.main(); diff --git a/src/gui/newsWindow.vala b/src/gui/newsWindow.vala new file mode 100644 index 0000000..9212fa6 --- /dev/null +++ b/src/gui/newsWindow.vala @@ -0,0 +1,93 @@ +/* +Copyright (c) 2011 by Simon Schneegans + +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 3 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, see <http://www.gnu.org/licenses/>. +*/ + +namespace GnomePie { + +///////////////////////////////////////////////////////////////////////// +/// +///////////////////////////////////////////////////////////////////////// + +public class NewsWindow: Gtk.Dialog { + + public static const int news_count = 1; + + ///////////////////////////////////////////////////////////////////// + /// + ///////////////////////////////////////////////////////////////////// + + public NewsWindow () { + this.title = "Gnome-Pie"; + + this.set_border_width(5); + + var box = new Gtk.VBox(false, 12); + + var image = new Gtk.Image.from_icon_name("gnome-pie", Gtk.IconSize.DIALOG); + box.pack_start(image); + + var news = new Gtk.Label(""); + news.wrap = true; + news.set_width_chars(75); + news.set_markup("<b>Gnome-Pie needs your help!</b>\n\n" + + + "Hey, this is Simon, developer of Gnome-Pie. I’m going to " + + "write my Bachelor thesis on pie menus! In order to improve " + + "Gnome-Pie to the limits, I need some information on how " + + "you use Gnome-Pie.\n\n" + + + "<b>So please help improving this software by sending the " + + "file 'gnome-pie.stats' located in <a href='file:" + + Paths.config_directory + "'>" + Paths.config_directory + + "</a> by email to <a href='mailto:pie-stats@simonschneegans.de?subject=statistics'>" + + "pie-stats@simonschneegans.de</a>!</b>\n\n" + + + "There is no personal information in this file. Only " + + "information on your usage frequency, how fast you use " + + "Gnome-Pie and how many Pies with how many Slices you " + + "have configured. If you have any questions regarding " + + "this topic please send an email to " + + "<a href='mailto:code@simonschneegans.de'>code@simonschneegans.de</a>!\n\n" + + + "Thank you so much! It’s going to be exciting!"); + + box.pack_start(news, false, false); + + var check = new Gtk.CheckButton.with_label("Don't show this window again."); + check.toggled.connect((check_box) => { + var checky = check_box as Gtk.CheckButton; + + if (checky.active) Config.global.showed_news = news_count; + else Config.global.showed_news = news_count-1; + + Config.global.save(); + }); + + box.pack_end(check); + + (this.get_content_area() as Gtk.VBox).pack_start(box); + this.get_content_area().show_all(); + + this.add_button(Gtk.Stock.CLOSE, 0); + + this.response.connect((id) => { + if (id == 0) + this.hide(); + }); + } +} + +} diff --git a/src/gui/settingsWindow.vala b/src/gui/settingsWindow.vala index 0e7af20..60bfcf3 100644 --- a/src/gui/settingsWindow.vala +++ b/src/gui/settingsWindow.vala @@ -152,17 +152,21 @@ public class SettingsWindow : GLib.Object { ///////////////////////////////////////////////////////////////////// private void on_autostart_toggled(Gtk.ToggleButton check_box) { + bool active = check_box.active; if (!active && FileUtils.test(Paths.autostart, FileTest.EXISTS)) { + Config.global.auto_start = false; // delete the autostart file FileUtils.remove (Paths.autostart); } else if (active && !FileUtils.test(Paths.autostart, FileTest.EXISTS)) { + Config.global.auto_start = true; + string autostart_entry = "#!/usr/bin/env xdg-open\n" + "[Desktop Entry]\n" + "Name=Gnome-Pie\n" + - "Exec=gnome-pie\n" + + "Exec=" + Paths.executable + "\n" + "Encoding=UTF-8\n" + "Type=Application\n" + "X-GNOME-Autostart-enabled=true\n" + diff --git a/src/utilities/bindingManager.vala b/src/utilities/bindingManager.vala index 5a4548e..669c863 100644 --- a/src/utilities/bindingManager.vala +++ b/src/utilities/bindingManager.vala @@ -48,9 +48,11 @@ public class BindingManager : GLib.Object { Gdk.ModifierType.MOD2_MASK, Gdk.ModifierType.LOCK_MASK, Gdk.ModifierType.MOD5_MASK, + Gdk.ModifierType.MOD2_MASK|Gdk.ModifierType.LOCK_MASK, Gdk.ModifierType.MOD2_MASK|Gdk.ModifierType.MOD5_MASK, Gdk.ModifierType.LOCK_MASK|Gdk.ModifierType.MOD5_MASK, + Gdk.ModifierType.MOD2_MASK|Gdk.ModifierType.LOCK_MASK|Gdk.ModifierType.MOD5_MASK }; diff --git a/src/utilities/config.vala b/src/utilities/config.vala index cc776d5..1d8b714 100644 --- a/src/utilities/config.vala +++ b/src/utilities/config.vala @@ -57,6 +57,7 @@ public class Config : GLib.Object { public bool show_indicator { get; set; default = true; } public bool show_captions { get; set; default = true; } public bool auto_start { get; set; default = false; } + public int showed_news { get; set; default = 0; } public Gee.ArrayList<Theme?> themes { get; private set; } ///////////////////////////////////////////////////////////////////// @@ -72,6 +73,7 @@ public class Config : GLib.Object { writer.write_attribute("global_scale", global_scale.to_string()); writer.write_attribute("show_indicator", show_indicator ? "true" : "false"); writer.write_attribute("show_captions", show_captions ? "true" : "false"); + writer.write_attribute("showed_news", showed_news.to_string()); writer.end_element(); writer.end_document(); } @@ -117,6 +119,9 @@ public class Config : GLib.Object { case "show_captions": show_captions = bool.parse(attr_content); break; + case "showed_news": + showed_news = int.parse(attr_content); + break; default: warning("Invalid setting \"" + attr_name + "\" in gnome-pie.conf!"); break; diff --git a/src/utilities/logger.vala b/src/utilities/logger.vala index 5334920..116cbcd 100644 --- a/src/utilities/logger.vala +++ b/src/utilities/logger.vala @@ -107,6 +107,15 @@ public class Logger { /// Appends a line to the statistics file ///////////////////////////////////////////////////////////////////// + public static int get_statistics_size() { + if (stats_length == -1) { + var stats = GLib.FileStream.open(Paths.stats, "a"); + stats_length = (int)stats.tell(); + } + + return stats_length; + } + public static void stats(string line) { var stats = GLib.FileStream.open(Paths.stats, "a"); diff --git a/src/utilities/paths.vala b/src/utilities/paths.vala index bc3e9b1..fe8897b 100644 --- a/src/utilities/paths.vala +++ b/src/utilities/paths.vala @@ -25,6 +25,13 @@ namespace GnomePie { public class Paths : GLib.Object { ///////////////////////////////////////////////////////////////////// + /// The config directory, + /// usually ~/.config/gnome-pie/. + ///////////////////////////////////////////////////////////////////// + + public static string config_directory { get; private set; default=""; } + + ///////////////////////////////////////////////////////////////////// /// The log file, /// usually ~/.config/gnome-pie/gnome-pie.log. ///////////////////////////////////////////////////////////////////// @@ -171,6 +178,8 @@ public class Paths : GLib.Object { } } + config_directory = config_dir.get_path(); + // create local themes directory if neccasary var themes_dir = config_dir.get_child("themes"); if(!themes_dir.query_exists()) { |