diff --git a/SparkleShare/Mac/SparkleSetup.cs b/SparkleShare/Mac/SparkleSetup.cs
index ff7a33b4..55989bf3 100755
--- a/SparkleShare/Mac/SparkleSetup.cs
+++ b/SparkleShare/Mac/SparkleSetup.cs
@@ -36,8 +36,12 @@ namespace SparkleShare {
private NSButton SyncButton;
private NSButton TryAgainButton;
private NSButton CancelButton;
+ private NSButton SkipTutorialButton;
private NSButton OpenFolderButton;
private NSButton FinishButton;
+ private NSButton AddProjectButton;
+ private NSImage SlideImage;
+ private NSImageView SlideImageView;
private NSForm UserInfoForm;
private NSProgressIndicator ProgressIndicator;
private NSTextField AddressTextField;
@@ -46,6 +50,7 @@ namespace SparkleShare {
private NSTextField AddressLabel;
private NSTextField FolderNameLabel;
private NSTextField FolderNameHelpLabel;
+ private NSTextField AddProjectTextField;
private NSButtonCell ButtonCellProto;
private NSMatrix Matrix;
private int ServerType;
@@ -127,7 +132,7 @@ namespace SparkleShare {
BackgroundColor = NSColor.WindowBackground,
Bordered = false,
Editable = false,
- Frame = new RectangleF (150, Frame.Height - 139 , 160, 17),
+ Frame = new RectangleF (150, Frame.Height - 159 , 160, 17),
StringValue = "Server Type:",
Font = SparkleUI.Font
};
@@ -137,7 +142,7 @@ namespace SparkleShare {
BackgroundColor = NSColor.WindowBackground,
Bordered = false,
Editable = false,
- Frame = new RectangleF (150, Frame.Height - 237 , 160, 17),
+ Frame = new RectangleF (150, Frame.Height - 257 , 160, 17),
StringValue = "Address:",
Font = SparkleUI.Font
};
@@ -147,14 +152,14 @@ namespace SparkleShare {
BackgroundColor = NSColor.WindowBackground,
Bordered = false,
Editable = false,
- Frame = new RectangleF (150, Frame.Height - 264 , 160, 17),
+ Frame = new RectangleF (150, Frame.Height - 284 , 160, 17),
StringValue = "Folder Name:",
Font = SparkleUI.Font
};
AddressTextField = new NSTextField () {
- Frame = new RectangleF (320, Frame.Height - 240 , 256, 22),
+ Frame = new RectangleF (320, Frame.Height - 260 , 256, 22),
Font = SparkleUI.Font,
StringValue = Controller.PreviousServer
};
@@ -162,7 +167,7 @@ namespace SparkleShare {
AddressTextField.Cell.LineBreakMode = NSLineBreakMode.TruncatingTail;
FolderNameTextField = new NSTextField () {
- Frame = new RectangleF (320, Frame.Height - (240 + 22 + 4) , 256, 22),
+ Frame = new RectangleF (320, Frame.Height - (260 + 22 + 4) , 256, 22),
StringValue = Controller.PreviousFolder
};
@@ -173,7 +178,7 @@ namespace SparkleShare {
Bordered = false,
TextColor = NSColor.DisabledControlText,
Editable = false,
- Frame = new RectangleF (320, Frame.Height - 285 , 200, 17),
+ Frame = new RectangleF (320, Frame.Height - 305 , 200, 17),
StringValue = "e.g. ‘rupert/website-design’"
};
@@ -182,7 +187,7 @@ namespace SparkleShare {
ButtonCellProto = new NSButtonCell ();
ButtonCellProto.SetButtonType (NSButtonType.Radio) ;
- Matrix = new NSMatrix (new RectangleF (315, 180, 256, 78),
+ Matrix = new NSMatrix (new RectangleF (315, Frame.Height - 220, 256, 78),
NSMatrixMode.Radio, ButtonCellProto, 4, 1);
Matrix.CellSize = new SizeF (256, 18);
@@ -297,8 +302,10 @@ namespace SparkleShare {
ProgressIndicator = new NSProgressIndicator () {
Frame = new RectangleF (190, Frame.Height - 200, 640 - 150 - 80, 20),
Style = NSProgressIndicatorStyle.Bar,
- MinValue = 0.0,
- MaxValue = 100.0
+ MinValue = 0.0,
+ MaxValue = 100.0,
+ Indeterminate = false,
+ DoubleValue = 1.0
};
ProgressIndicator.StartAnimation (this);
@@ -306,7 +313,7 @@ namespace SparkleShare {
Controller.UpdateProgressBarEvent += delegate (double percentage) {
InvokeOnMainThread (delegate {
ProgressIndicator.DoubleValue = percentage;
- });
+ });
};
ContentView.AddSubview (ProgressIndicator);
@@ -383,6 +390,168 @@ namespace SparkleShare {
break;
}
+
+ case PageType.Tutorial: {
+
+ switch (Controller.TutorialPageNumber) {
+ case 1: {
+ Header = "What's happening next?";
+ Description = "SparkleShare creates a special folder in your personal folder " +
+ "that will keep track of your projects.";
+
+ SkipTutorialButton = new NSButton () {
+ Title = "Skip Tutorial"
+ };
+
+ SkipTutorialButton.Activated += delegate {
+ Controller.TutorialSkipped ();
+ };
+
+ ContinueButton = new NSButton () {
+ Title = "Continue"
+ };
+
+ ContinueButton.Activated += delegate {
+ Controller.TutorialPageCompleted ();
+ };
+
+ string slide_image_path = Path.Combine (NSBundle.MainBundle.ResourcePath,
+ "Pixmaps", "tutorial-slide-1.png");
+
+ SlideImage = new NSImage (slide_image_path) {
+ Size = new SizeF (350, 200)
+ };
+
+ SlideImageView = new NSImageView () {
+ Image = SlideImage,
+ Frame = new RectangleF (215, Frame.Height - 350, 350, 200)
+ };
+
+ ContentView.AddSubview (SlideImageView);
+ Buttons.Add (ContinueButton);
+ Buttons.Add (SkipTutorialButton);
+
+ break;
+ }
+
+ case 2: {
+ Header = "Sharing files with others";
+ Description = "All files added to your project folders are synced with the host " +
+ "automatically, as well as with your collaborators.";
+
+ ContinueButton = new NSButton () {
+ Title = "Continue"
+ };
+
+ ContinueButton.Activated += delegate {
+ Controller.TutorialPageCompleted ();
+ };
+
+ string slide_image_path = Path.Combine (NSBundle.MainBundle.ResourcePath,
+ "Pixmaps", "tutorial-slide-2.png");
+
+ SlideImage = new NSImage (slide_image_path) {
+ Size = new SizeF (350, 200)
+ };
+
+ SlideImageView = new NSImageView () {
+ Image = SlideImage,
+ Frame = new RectangleF (215, Frame.Height - 350, 350, 200)
+ };
+
+ ContentView.AddSubview (SlideImageView);
+ Buttons.Add (ContinueButton);
+
+ break;
+ }
+
+ case 3: {
+ Header = "The status icon is here to help";
+ Description = "It shows the syncing process status, " +
+ "and contains links to your projects and the event log.";
+
+ ContinueButton = new NSButton () {
+ Title = "Continue"
+ };
+
+ ContinueButton.Activated += delegate {
+ Controller.TutorialPageCompleted ();
+ };
+
+ string slide_image_path = Path.Combine (NSBundle.MainBundle.ResourcePath,
+ "Pixmaps", "tutorial-slide-3.png");
+
+ SlideImage = new NSImage (slide_image_path) {
+ Size = new SizeF (350, 200)
+ };
+
+ SlideImageView = new NSImageView () {
+ Image = SlideImage,
+ Frame = new RectangleF (215, Frame.Height - 350, 350, 200)
+ };
+
+ ContentView.AddSubview (SlideImageView);
+ Buttons.Add (ContinueButton);
+
+ break;
+ }
+
+ case 4: {
+ Header = "Adding projects to SparkleShare";
+ Description = "Just click this button when you see it on the web, and " +
+ "the project will be automatically added:";
+
+ AddProjectTextField = new NSTextField () {
+ Frame = new RectangleF (190, Frame.Height - 290, 640 - 240, 44),
+ BackgroundColor = NSColor.WindowBackground,
+ Bordered = false,
+ Editable = false,
+ Font = SparkleUI.Font,
+ StringValue = "…or select ‘Add Project…’ from the status icon menu " +
+ "to add one by hand."
+ };
+
+ AddProjectButton = new NSButton () {
+ Title = "Add Project…"
+ };
+
+ AddProjectButton.Activated += delegate {
+ Controller.TutorialPageCompleted ();
+ };
+
+ FinishButton = new NSButton () {
+ Title = "Finish"
+ };
+
+ FinishButton.Activated += delegate {
+ InvokeOnMainThread (delegate {
+ PerformClose (this);
+ });
+ };
+
+ string slide_image_path = Path.Combine (NSBundle.MainBundle.ResourcePath,
+ "Pixmaps", "tutorial-slide-4.png");
+
+ SlideImage = new NSImage (slide_image_path) {
+ Size = new SizeF (350, 64)
+ };
+
+ SlideImageView = new NSImageView () {
+ Image = SlideImage,
+ Frame = new RectangleF (215, Frame.Height - 215, 350, 64)
+ };
+
+ ContentView.AddSubview (SlideImageView);
+ ContentView.AddSubview (AddProjectTextField);
+ Buttons.Add (FinishButton);
+ Buttons.Add (AddProjectButton);
+
+ break;
+ }
+ }
+
+ break;
+ }
}
ShowAll ();
diff --git a/SparkleShare/Mac/SparkleSetupWindow.cs b/SparkleShare/Mac/SparkleSetupWindow.cs
index 08ef66ef..1da66c27 100755
--- a/SparkleShare/Mac/SparkleSetupWindow.cs
+++ b/SparkleShare/Mac/SparkleSetupWindow.cs
@@ -42,11 +42,11 @@ namespace SparkleShare {
public SparkleSetupWindow () : base ()
{
- SetFrame (new RectangleF (0, 0, 640, 380), true);
+ SetFrame (new RectangleF (0, 0, 640, 420), true);
StyleMask = NSWindowStyle.Titled;
- MaxSize = new SizeF (640, 380);
- MinSize = new SizeF (640, 380);
+ MaxSize = new SizeF (640, 420);
+ MinSize = new SizeF (640, 420);
HasShadow = true;
BackingType = NSBackingStore.Buffered;
@@ -76,7 +76,7 @@ namespace SparkleShare {
};
DescriptionTextField = new NSTextField () {
- Frame = new RectangleF (190, Frame.Height - 155 , 640 - 240, 64),
+ Frame = new RectangleF (190, Frame.Height - 130, 640 - 240, 44),
BackgroundColor = NSColor.WindowBackground,
Bordered = false,
Editable = false,
diff --git a/SparkleShare/Mac/SparkleShare.csproj b/SparkleShare/Mac/SparkleShare.csproj
index fcea732f..5f99df54 100755
--- a/SparkleShare/Mac/SparkleShare.csproj
+++ b/SparkleShare/Mac/SparkleShare.csproj
@@ -270,6 +270,18 @@
HTML\jquery.js
+
+ Pixmaps\tutorial-slide-1.png
+
+
+ Pixmaps\tutorial-slide-2.png
+
+
+ Pixmaps\tutorial-slide-3.png
+
+
+ Pixmaps\tutorial-slide-4.png
+
diff --git a/SparkleShare/SparkleSetup.cs b/SparkleShare/SparkleSetup.cs
index f71f0394..c02b5100 100755
--- a/SparkleShare/SparkleSetup.cs
+++ b/SparkleShare/SparkleSetup.cs
@@ -489,11 +489,6 @@ namespace SparkleShare {
Description = _("Just click this button when you see it on the web, and " +
"the project will be automatically added:");
- Button continue_button = new Button (_("Continue"));
- continue_button.Clicked += delegate {
- Controller.TutorialPageCompleted ();
- };
-
Label label = new Label (_("…or select ‘Add Project…’ from the status icon menu " +
"to add one by hand.")) {
Wrap = true,