diff options
Diffstat (limited to 'SparkleShare/Linux/SparkleUI.cs')
-rw-r--r-- | SparkleShare/Linux/SparkleUI.cs | 67 |
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 (); + } } } } |