diff --git a/NotifySharp/NotifySharp.csproj b/NotifySharp/NotifySharp.csproj index 6053fdf9..4562b26f 100644 --- a/NotifySharp/NotifySharp.csproj +++ b/NotifySharp/NotifySharp.csproj @@ -1 +1,41 @@ - Debug AnyCPU 8.0.50727 2.0 {005CCA8E-DFBF-464A-B6DA-452C62D4589C} Library notifysharp notify-sharp true full false bin\Debug DEBUG prompt 4 none false bin\Release prompt 4 \ No newline at end of file + + + + Debug + AnyCPU + 8.0.50727 + 2.0 + {005CCA8E-DFBF-464A-B6DA-452C62D4589C} + Library + notifysharp + notify-sharp + + + true + full + false + bin\Debug + DEBUG + prompt + 4 + + + none + false + bin\Release + prompt + 4 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SparkleShare.sln b/SparkleShare.sln index e1d2563c..df6e25f5 100644 --- a/SparkleShare.sln +++ b/SparkleShare.sln @@ -5,6 +5,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SparkleShare", "SparkleShar EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NotifySharp", "NotifySharp\NotifySharp.csproj", "{005CCA8E-DFBF-464A-B6DA-452C62D4589C}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpSSH", "SharpSSH\SharpSSH.csproj", "{BB50B7E2-4622-4D8B-B7FF-5E5D8F02D91F}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -19,10 +21,13 @@ Global {728483AA-E34B-4441-BF2C-C8BC2901E4E0}.Debug|Any CPU.Build.0 = Debug|Any CPU {728483AA-E34B-4441-BF2C-C8BC2901E4E0}.Release|Any CPU.ActiveCfg = Release|Any CPU {728483AA-E34B-4441-BF2C-C8BC2901E4E0}.Release|Any CPU.Build.0 = Release|Any CPU + {BB50B7E2-4622-4D8B-B7FF-5E5D8F02D91F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BB50B7E2-4622-4D8B-B7FF-5E5D8F02D91F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BB50B7E2-4622-4D8B-B7FF-5E5D8F02D91F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BB50B7E2-4622-4D8B-B7FF-5E5D8F02D91F}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(MonoDevelopProperties) = preSolution - name = SparkleShare - version = 0.1 StartupItem = SparkleShare\SparkleShare.csproj + name = SparkleShare EndGlobalSection -EndGlobal +EndGlobal diff --git a/SparkleShare/SparkleIntro.cs b/SparkleShare/SparkleIntro.cs index 853dd808..005e25a3 100644 --- a/SparkleShare/SparkleIntro.cs +++ b/SparkleShare/SparkleIntro.cs @@ -39,7 +39,7 @@ namespace SparkleShare { { BorderWidth = 0; - SetSizeRequest (600, 400); + SetSizeRequest (640, 400); Resizable = false; IconName = "folder-sparkleshare"; @@ -55,13 +55,14 @@ namespace SparkleShare { VBox layout_vertical = new VBox (false, 0); - Label introduction = new Label ("Welcome to SparkleShare!"); + Label introduction = new Label ("Welcome to SparkleShare!"); introduction.UseMarkup = true; introduction.Xalign = 0; - Label information = new Label ("Before we can create a SparkleShare folder on this \n" + + Label information = new Label ("Before we can create a SparkleShare folder on this " + "computer, we need a few bits of information from you."); information.Xalign = 0; + information.Wrap = true; Entry name_entry = new Entry (""); @@ -113,7 +114,21 @@ namespace SparkleShare { HButtonBox controls = new HButtonBox (); controls.Layout = ButtonBoxStyle.End; - Button done_button = new Button ("Next"); + + Button done_button = new Button (_("Next")); + + done_button.Clicked += delegate (object o, EventArgs args) { + done_button.Remove (done_button.Child); + HBox hbox = new HBox (); + hbox.Add (new SparkleSpinner ()); + hbox.Add (new Label ("Configuring…")); + done_button.Add (hbox); + done_button.Sensitive = false; + table.Sensitive = false; + done_button.ShowAll (); + ShowStepTwo (); + }; + controls.Add (done_button); layout_vertical.PackStart (introduction, false, false, 0); @@ -131,6 +146,70 @@ namespace SparkleShare { ShowAll (); } + + + public void ShowStepTwo () + { + + Remove (Child); + + HBox layout_horizontal = new HBox (false, 6); + + Image side_splash = new Image ("/home/hbons/github/SparkleShare/data/side-splash.png"); + + layout_horizontal.PackStart (side_splash, false, false, 0); + + VBox wrapper = new VBox (false, 0); + + VBox layout_vertical = new VBox (false, 0); + layout_vertical.BorderWidth = 30; + + Label introduction; + introduction = new Label ("SparkleShare ready to go!"); + + introduction.UseMarkup = true; + introduction.Xalign = 0; + + Label information; + information = new Label ("You can now start accepting invitations from others. " + + "Just click on invitations you get by email and " + + "we'll take care of the rest."); + + information.UseMarkup = true; + information.Wrap = true; + information.Xalign = 0; + + HBox link_wrapper = new HBox (false, 0); + LinkButton link = new LinkButton ("http://www.sparkleshare.org/", + _("Learn how to host your own SparkleSpace")); + + link_wrapper.PackStart (link, false, false, 0); + + layout_vertical.PackStart (introduction, false, false, 0); + layout_vertical.PackStart (information, false, false, 21); + layout_vertical.PackStart (link_wrapper, false, false, 0); + + HButtonBox controls = new HButtonBox (); + controls.Layout = ButtonBoxStyle.End; + controls.BorderWidth = 12; + + Button finish_button = new Button (_("Finish")); + + finish_button.Clicked += delegate (object o, EventArgs args) { + Destroy (); + }; + + controls.Add (finish_button); + + wrapper.PackStart (layout_vertical, true, true, 0); + wrapper.PackStart (controls, false, false, 0); + + layout_horizontal.Add (wrapper); + + Add (layout_horizontal); + ShowAll (); + + } } diff --git a/SparkleShare/SparkleShare.csproj b/SparkleShare/SparkleShare.csproj new file mode 100644 index 00000000..f42c092b --- /dev/null +++ b/SparkleShare/SparkleShare.csproj @@ -0,0 +1,56 @@ + + + + Debug + AnyCPU + 8.0.50727 + {728483AA-E34B-4441-BF2C-C8BC2901E4E0} + Exe + SparkleShare + 2.0 + SparkleShare + + + true + full + false + bin\Debug + DEBUG + prompt + 4 + + + none + false + bin\Release + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + + + + {005CCA8E-DFBF-464A-B6DA-452C62D4589C} + NotifySharp + + + diff --git a/SparkleShare/SparkleSpinner.cs b/SparkleShare/SparkleSpinner.cs new file mode 100644 index 00000000..e18d7e5d --- /dev/null +++ b/SparkleShare/SparkleSpinner.cs @@ -0,0 +1,97 @@ +// SparkleShare, an instant update workflow to Git. +// Copyright (C) 2010 Hylke Bons +// +// 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 . + +using Gtk; +using System.Timers; + +namespace SparkleShare { + + // This is a close implementation of GtkSpinner + public class SparkleSpinner : Image + { + + public bool Active; + + private Gdk.Pixbuf [] Images; + private Timer Timer; + private int CycleDuration; + private int CurrentStep; + private int NumSteps; + private int Size; + + public SparkleSpinner () : base () + { + + CycleDuration = 750; + CurrentStep = 0; + Size = 16; + + Gdk.Pixbuf spinner_gallery = SparkleHelpers.GetIcon ("process-working", Size); + + int frames_in_width = spinner_gallery.Width / Size; + int frames_in_height = spinner_gallery.Height / Size; + NumSteps = frames_in_width * frames_in_height; + Images = new Gdk.Pixbuf [NumSteps - 1]; + + int i = 0; + for (int y = 0; y < frames_in_height; y++) { + for (int x = 0; x < frames_in_width; x++) { + if (!(y == 0 && x == 0)) { + Images [i] = new Gdk.Pixbuf (spinner_gallery, x * Size, y * Size, Size, Size); + i++; + } + } + } + + Timer = new Timer (); + Timer.Interval = CycleDuration / NumSteps; + Timer.Elapsed += delegate { + NextImage (); + }; + Start (); + + } + + private void NextImage () + { + if (CurrentStep < NumSteps) + CurrentStep++; + else + CurrentStep = 0; + Pixbuf = Images [CurrentStep]; + } + + public bool IsActive () + { + return Active; + } + + public void Start () + { + CurrentStep = 0; + Active = true; + Timer.Start (); + } + + public void Stop () + { + Active = false; + Timer.Stop (); + } + + } + +}