summaryrefslogtreecommitdiff
path: root/SparkleShare/Linux/SparkleUI.cs
diff options
context:
space:
mode:
Diffstat (limited to 'SparkleShare/Linux/SparkleUI.cs')
-rw-r--r--SparkleShare/Linux/SparkleUI.cs67
1 files changed, 55 insertions, 12 deletions
diff --git a/SparkleShare/Linux/SparkleUI.cs b/SparkleShare/Linux/SparkleUI.cs
index a5dcf6f..4c5b27b 100644
--- a/SparkleShare/Linux/SparkleUI.cs
+++ b/SparkleShare/Linux/SparkleUI.cs
@@ -17,6 +17,7 @@
using System;
+using GLib;
using Gtk;
using SparkleLib;
@@ -24,33 +25,75 @@ namespace SparkleShare {
public class SparkleUI {
+ public static string AssetsPath = Defines.INSTALL_DIR;
+
public SparkleStatusIcon StatusIcon;
public SparkleEventLog EventLog;
public SparkleBubbles Bubbles;
public SparkleSetup Setup;
public SparkleAbout About;
+ public SparkleNote Note;
- public static string AssetsPath = Defines.INSTALL_DIR;
+ public readonly string SecondaryTextColor;
+ public readonly string SecondaryTextColorSelected;
+
+ private Gtk.Application application;
public SparkleUI ()
{
- Application.Init ();
-
- Setup = new SparkleSetup ();
- EventLog = new SparkleEventLog ();
- About = new SparkleAbout ();
- Bubbles = new SparkleBubbles ();
- StatusIcon = new SparkleStatusIcon ();
-
- Program.Controller.UIHasLoaded ();
+ this.application = new Gtk.Application ("org.sparkleshare.sparkleshare", 0);
+
+ this.application.Register (null);
+ this.application.Activated += ApplicationActivatedDelegate;
+
+ Gdk.Color color = SparkleUIHelpers.RGBAToColor (new Label().StyleContext.GetColor (StateFlags.Insensitive));
+ SecondaryTextColor = SparkleUIHelpers.ColorToHex (color);
+
+ color = SparkleUIHelpers.MixColors (
+ SparkleUIHelpers.RGBAToColor (new TreeView ().StyleContext.GetColor (StateFlags.Selected)),
+ SparkleUIHelpers.RGBAToColor (new TreeView ().StyleContext.GetBackgroundColor (StateFlags.Selected)),
+ 0.39);
+
+ SecondaryTextColorSelected = SparkleUIHelpers.ColorToHex (color);
}
- // Runs the application
public void Run ()
+ {
+ (this.application as GLib.Application).Run (null, null);
+ }
+
+
+ private void ApplicationActivatedDelegate (object sender, EventArgs args)
{
- Application.Run ();
+ if (this.application.Windows.Length > 0) {
+ bool has_visible_windows = false;
+
+ foreach (Window window in this.application.Windows) {
+ if (window.Visible) {
+ window.Present ();
+ has_visible_windows = true;
+ }
+ }
+
+ if (!has_visible_windows)
+ Program.Controller.HandleReopen ();
+
+ } else {
+ Setup = new SparkleSetup ();
+ EventLog = new SparkleEventLog ();
+ About = new SparkleAbout ();
+ Bubbles = new SparkleBubbles ();
+ StatusIcon = new SparkleStatusIcon ();
+ Note = new SparkleNote ();
+
+ Setup.Application = this.application;
+ EventLog.Application = this.application;
+ About.Application = this.application;
+
+ Program.Controller.UIHasLoaded ();
+ }
}
}
}