prepare linux about dialog for makeover
This commit is contained in:
parent
1e17cdfc84
commit
7e351991e7
1
AUTHORS
1
AUTHORS
|
@ -24,6 +24,7 @@ Contributors:
|
|||
Jakub Steiner <jimmac@redhat.com>
|
||||
Kristi Tsukida <kristi.tsukida@gmail.com>
|
||||
Lapo Calamandrei <calamandrei@gmail.com>
|
||||
Lars Falk-Petersen <dev@falk-petersen.no>
|
||||
Luis Cordova <cordoval@gmail.com>
|
||||
Łukasz Jernaś <deejay1@srem.org>
|
||||
Michael Monreal <michael.monreal@gmail.com>
|
||||
|
|
|
@ -27,6 +27,8 @@ namespace SparkleShare {
|
|||
|
||||
public class SparkleAbout : Window {
|
||||
|
||||
public SparkleAboutController Controller = new SparkleAboutController ();
|
||||
|
||||
private Label version;
|
||||
|
||||
|
||||
|
@ -39,7 +41,7 @@ namespace SparkleShare {
|
|||
|
||||
public SparkleAbout () : base ("")
|
||||
{
|
||||
DefaultSize = new Gdk.Size (360, 260);
|
||||
DefaultSize = new Gdk.Size (640, 280);
|
||||
BorderWidth = 0;
|
||||
IconName = "folder-sparkleshare";
|
||||
WindowPosition = WindowPosition.Center;
|
||||
|
@ -48,21 +50,26 @@ namespace SparkleShare {
|
|||
|
||||
CreateAbout ();
|
||||
|
||||
SparkleShare.Controller.NewVersionAvailable += delegate (string new_version) {
|
||||
Controller.NewVersionEvent += delegate (string new_version) {
|
||||
Application.Invoke (delegate {
|
||||
this.version.Markup = String.Format ("<small><span fgcolor='#f57900'>{0}: {1}</span></small>", _("A newer version is available"), new_version);
|
||||
this.version.Markup = String.Format ("<small><span fgcolor='#f57900'>{0}: {1}</span></small>", _("A newer version is available!"), new_version);
|
||||
this.version.ShowAll ();
|
||||
});
|
||||
};
|
||||
|
||||
SparkleShare.Controller.VersionUpToDate += delegate {
|
||||
Controller.VersionUpToDateEvent += delegate {
|
||||
Application.Invoke (delegate {
|
||||
this.version.Markup = String.Format ("<small><span fgcolor='#4e9a06'>{0}</span></small>", _("You are running the latest version."));
|
||||
this.version.ShowAll ();
|
||||
});
|
||||
};
|
||||
|
||||
SparkleShare.Controller.CheckForNewVersion ();
|
||||
Controller.CheckingForNewVersionEvent += delegate {
|
||||
Application.Invoke (delegate {
|
||||
this.version.Markup = String.Format ("<small><span fgcolor='#4e9a06'>{0}</span></small>", _("Checking for updates..."));
|
||||
this.version.ShowAll ();
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
@ -71,17 +78,14 @@ namespace SparkleShare {
|
|||
Gdk.Color color = Style.Foreground (StateType.Insensitive);
|
||||
string secondary_text_color = SparkleUIHelpers.GdkColorToHex (color);
|
||||
|
||||
EventBox box = new EventBox ();
|
||||
box.ModifyBg (StateType.Normal, new TreeView ().Style.Base (StateType.Normal));
|
||||
|
||||
Label header = new Label () {
|
||||
Markup = "<span font_size='xx-large'>SparkleShare</span>\n<span fgcolor='" + secondary_text_color + "'><small>" + SparkleShare.Controller.Version + "</small></span>",
|
||||
Markup = "<span fgcolor='" + secondary_text_color + "'>version " + Controller.RunningVersion + "</span>",
|
||||
Xalign = 0,
|
||||
Xpad = 18,
|
||||
Ypad = 18
|
||||
};
|
||||
|
||||
box.Add (header);
|
||||
|
||||
this.version = new Label () {
|
||||
Markup = String.Format ("<small>{0}</small>", _("Checking for updates...")),
|
||||
|
@ -98,55 +102,22 @@ namespace SparkleShare {
|
|||
Wrap = true,
|
||||
LineWrapMode = Pango.WrapMode.Word,
|
||||
|
||||
Markup = "<small>Copyright © 2010–" + DateTime.Now.Year + " Hylke Bons and others\n" +
|
||||
Markup = "<small>Copyright © 2010–" + DateTime.Now.Year + " Hylke Bons and others.\n" +
|
||||
"\n" +
|
||||
"SparkleShare is Free and Open Source Software. " +
|
||||
"You are free to use, modify, and redistribute it " +
|
||||
"under the terms of the GNU General Public License version 3 or later.</small>"
|
||||
"SparkleShare is Free and Open Source Software. You are free to use, modify, " +
|
||||
"and redistribute it under the terms of the GNU General Public License " +
|
||||
"version 3 or later.</small>"
|
||||
};
|
||||
|
||||
VBox vbox = new VBox (false, 0) {
|
||||
BorderWidth = 0
|
||||
};
|
||||
|
||||
HButtonBox button_bar = new HButtonBox () {
|
||||
BorderWidth = 12
|
||||
};
|
||||
|
||||
Button credits_button = new Button (_("_Show Credits")) {
|
||||
UseUnderline = true
|
||||
};
|
||||
|
||||
credits_button.Clicked += delegate {
|
||||
|
||||
Process process = new Process ();
|
||||
process.StartInfo.FileName = "xdg-open";
|
||||
process.StartInfo.Arguments = "http://www.sparkleshare.org/credits";
|
||||
process.Start ();
|
||||
|
||||
};
|
||||
|
||||
Button website_button = new Button (_("_Visit Website")) {
|
||||
UseUnderline = true
|
||||
};
|
||||
|
||||
website_button.Clicked += delegate {
|
||||
|
||||
Process process = new Process ();
|
||||
process.StartInfo.FileName = "xdg-open";
|
||||
process.StartInfo.Arguments = "http://www.sparkleshare.org/";
|
||||
process.Start ();
|
||||
|
||||
};
|
||||
|
||||
button_bar.Add (website_button);
|
||||
button_bar.Add (credits_button);
|
||||
|
||||
vbox.PackStart (box, true, true, 0);
|
||||
vbox.PackStart (header, true, true, 0);
|
||||
vbox.PackStart (this.version, false, false, 0);
|
||||
vbox.PackStart (license, true, true, 0);
|
||||
vbox.PackStart (new Label (""), true, true, 0);
|
||||
vbox.PackStart (button_bar, false, false, 0);
|
||||
|
||||
Add (vbox);
|
||||
}
|
||||
|
|
412
SparkleShare/SparkleSetup.cs~HEAD
Normal file
412
SparkleShare/SparkleSetup.cs~HEAD
Normal file
|
@ -0,0 +1,412 @@
|
|||
// SparkleShare, a collaboration and sharing tool.
|
||||
// Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com>
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General private 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 private License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General private License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Timers;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using Gtk;
|
||||
using Mono.Unix;
|
||||
|
||||
|
||||
namespace SparkleShare {
|
||||
|
||||
public class SparkleSetup : SparkleSetupWindow {
|
||||
|
||||
public SparkleSetupController Controller = new SparkleSetupController ();
|
||||
|
||||
private string SecondaryTextColor;
|
||||
|
||||
private Entry NameEntry;
|
||||
private Entry EmailEntry;
|
||||
private SparkleEntry ServerEntry;
|
||||
private SparkleEntry FolderEntry;
|
||||
|
||||
private Button NextButton;
|
||||
private Button SyncButton;
|
||||
|
||||
private Table Table;
|
||||
|
||||
private ProgressBar progress_bar = new ProgressBar () { PulseStep = 0.01 };
|
||||
private Timer progress_bar_pulse_timer = new Timer () { Interval = 25, Enabled = true };
|
||||
|
||||
|
||||
// Short alias for the translations
|
||||
public static string _ (string s)
|
||||
{
|
||||
return Catalog.GetString (s);
|
||||
}
|
||||
|
||||
|
||||
public SparkleSetup () : base ()
|
||||
{
|
||||
SecondaryTextColor = SparkleUIHelpers.GdkColorToHex (Style.Foreground (StateType.Insensitive));
|
||||
|
||||
Controller.ChangePageEvent += delegate (PageType type) {
|
||||
Application.Invoke (delegate {
|
||||
Reset ();
|
||||
|
||||
switch (type) {
|
||||
case PageType.Setup:
|
||||
|
||||
Header = _("Welcome to SparkleShare!");
|
||||
Description = _("Before we can create a SparkleShare folder on this " +
|
||||
"computer, we need a few bits of information from you.");
|
||||
|
||||
Table = new Table (4, 2, true) {
|
||||
RowSpacing = 6
|
||||
};
|
||||
|
||||
Label name_label = new Label ("<b>" + _("Full Name:") + "</b>") {
|
||||
UseMarkup = true,
|
||||
Xalign = 0
|
||||
};
|
||||
|
||||
NameEntry = new Entry (SparkleShare.Controller.UserName);
|
||||
NameEntry.Changed += delegate {
|
||||
CheckSetupPage ();
|
||||
};
|
||||
|
||||
EmailEntry = new Entry ();
|
||||
EmailEntry.Changed += delegate {
|
||||
CheckSetupPage ();
|
||||
};
|
||||
|
||||
Label email_label = new Label ("<b>" + _("Email:") + "</b>") {
|
||||
UseMarkup = true,
|
||||
Xalign = 0
|
||||
};
|
||||
|
||||
Table.Attach (name_label, 0, 1, 0, 1);
|
||||
Table.Attach (NameEntry, 1, 2, 0, 1);
|
||||
Table.Attach (email_label, 0, 1, 1, 2);
|
||||
Table.Attach (EmailEntry, 1, 2, 1, 2);
|
||||
|
||||
NextButton = new Button (_("Next")) {
|
||||
Sensitive = false
|
||||
};
|
||||
|
||||
NextButton.Clicked += delegate (object o, EventArgs args) {
|
||||
string full_name = NameEntry.Text;
|
||||
string email = EmailEntry.Text;
|
||||
|
||||
Controller.SetupPageCompleted (full_name, email);
|
||||
};
|
||||
|
||||
AddButton (NextButton);
|
||||
Add (Table);
|
||||
|
||||
CheckSetupPage ();
|
||||
|
||||
break;
|
||||
|
||||
case PageType.Add:
|
||||
|
||||
Header = _("Where is your remote folder?");
|
||||
|
||||
Table = new Table (6, 2, false) {
|
||||
RowSpacing = 12
|
||||
};
|
||||
|
||||
HBox layout_server = new HBox (true, 0);
|
||||
|
||||
// Own server radiobutton
|
||||
RadioButton radio_button = new RadioButton ("<b>" + _("On my own server:") + "</b>");
|
||||
(radio_button.Child as Label).UseMarkup = true;
|
||||
|
||||
radio_button.Toggled += delegate {
|
||||
if (radio_button.Active) {
|
||||
FolderEntry.ExampleText = _("Folder");
|
||||
ServerEntry.Sensitive = true;
|
||||
CheckAddPage ();
|
||||
} else {
|
||||
ServerEntry.Sensitive = false;
|
||||
CheckAddPage ();
|
||||
}
|
||||
|
||||
ShowAll ();
|
||||
};
|
||||
|
||||
// Own server entry
|
||||
ServerEntry = new SparkleEntry () { };
|
||||
ServerEntry.Completion = new EntryCompletion();
|
||||
|
||||
ListStore server_store = new ListStore (typeof (string));
|
||||
|
||||
foreach (string host in SparkleShare.Controller.PreviousHosts)
|
||||
server_store.AppendValues (host);
|
||||
|
||||
ServerEntry.Completion.Model = server_store;
|
||||
ServerEntry.Completion.TextColumn = 0;
|
||||
|
||||
if (!string.IsNullOrEmpty (Controller.PreviousServer)) {
|
||||
ServerEntry.Text = Controller.PreviousServer;
|
||||
ServerEntry.ExampleTextActive = false;
|
||||
} else {
|
||||
ServerEntry.ExampleText = _("address-to-server.com");
|
||||
}
|
||||
|
||||
ServerEntry.Changed += delegate {
|
||||
CheckAddPage ();
|
||||
};
|
||||
|
||||
layout_server.Add (radio_button);
|
||||
layout_server.Add (ServerEntry);
|
||||
|
||||
Table.Attach (layout_server, 0, 2, 1, 2);
|
||||
|
||||
// Github radiobutton
|
||||
string github_text = "<b>" + "Github" + "</b>\n" +
|
||||
"<span fgcolor='" + SecondaryTextColor + "' size='small'>" +
|
||||
_("Free hosting for Free and Open Source Software projects.") + "\n" +
|
||||
_("Also has paid accounts for extra private space and bandwidth.") +
|
||||
"</span>";
|
||||
|
||||
RadioButton radio_button_github = new RadioButton (radio_button, github_text);
|
||||
(radio_button_github.Child as Label).UseMarkup = true;
|
||||
(radio_button_github.Child as Label).Wrap = true;
|
||||
|
||||
radio_button_github.Toggled += delegate {
|
||||
if (radio_button_github.Active)
|
||||
FolderEntry.ExampleText = _("Username/Folder");
|
||||
};
|
||||
|
||||
|
||||
// Gitorious radiobutton
|
||||
string gitorious_text = "<b>" + _("Gitorious") + "</b>\n" +
|
||||
"<span fgcolor='" + SecondaryTextColor + "' size='small'>" +
|
||||
_("Completely Free as in Freedom infrastructure.") + "\n" +
|
||||
_("Free accounts for Free and Open Source projects.") +
|
||||
"</span>";
|
||||
|
||||
RadioButton radio_button_gitorious = new RadioButton (radio_button, gitorious_text);
|
||||
(radio_button_gitorious.Child as Label).UseMarkup = true;
|
||||
(radio_button_gitorious.Child as Label).Wrap = true;
|
||||
|
||||
radio_button_gitorious.Toggled += delegate {
|
||||
if (radio_button_gitorious.Active)
|
||||
FolderEntry.ExampleText = _("Project/Folder");
|
||||
};
|
||||
|
||||
|
||||
// GNOME radiobutton
|
||||
string gnome_text = "<b>" + _("The GNOME Project") + "</b>\n"+
|
||||
"<span fgcolor='" + SecondaryTextColor + "' size='small'>" +
|
||||
_("GNOME is an easy to understand interface to your computer.") + "\n" +
|
||||
_("Select this option if you’re a developer or designer working on GNOME.") +
|
||||
"</span>";
|
||||
|
||||
RadioButton radio_button_gnome = new RadioButton (radio_button, gnome_text);
|
||||
(radio_button_gnome.Child as Label).UseMarkup = true;
|
||||
(radio_button_gnome.Child as Label).Wrap = true;
|
||||
|
||||
radio_button_gnome.Toggled += delegate {
|
||||
if (radio_button_gnome.Active)
|
||||
FolderEntry.ExampleText = _("Project");
|
||||
};
|
||||
|
||||
Table.Attach (radio_button_github, 0, 2, 2, 3);
|
||||
Table.Attach (radio_button_gitorious, 0, 2, 3, 4);
|
||||
Table.Attach (radio_button_gnome, 0, 2, 4, 5);
|
||||
|
||||
// Folder label and entry
|
||||
HBox layout_folder = new HBox (true, 0);
|
||||
|
||||
Label folder_label = new Label (_("Folder Name:")) {
|
||||
UseMarkup = true,
|
||||
Xalign = 1
|
||||
};
|
||||
|
||||
FolderEntry = new SparkleEntry ();
|
||||
FolderEntry.ExampleText = _("Folder");
|
||||
|
||||
FolderEntry.Changed += delegate {
|
||||
CheckAddPage ();
|
||||
};
|
||||
|
||||
layout_folder.PackStart (folder_label, true, true, 12);
|
||||
layout_folder.PackStart (FolderEntry, true, true, 0);
|
||||
|
||||
Table.Attach (layout_folder, 0, 2, 5, 6);
|
||||
Add (Table);
|
||||
|
||||
// Cancel button
|
||||
Button cancel_button = new Button (_("Cancel"));
|
||||
|
||||
cancel_button.Clicked += delegate {
|
||||
Close ();
|
||||
};
|
||||
|
||||
|
||||
// Sync button
|
||||
SyncButton = new Button (_("Sync"));
|
||||
|
||||
SyncButton.Clicked += delegate {
|
||||
string server = ServerEntry.Text;
|
||||
string folder_name = FolderEntry.Text;
|
||||
|
||||
if (radio_button_gitorious.Active)
|
||||
server = "gitorious.org";
|
||||
|
||||
if (radio_button_github.Active)
|
||||
server = "github.com";
|
||||
|
||||
if (radio_button_gnome.Active)
|
||||
server = "gnome.org";
|
||||
|
||||
Controller.AddPageCompleted (server, folder_name);
|
||||
};
|
||||
|
||||
AddButton (cancel_button);
|
||||
AddButton (SyncButton);
|
||||
|
||||
CheckAddPage ();
|
||||
|
||||
break;
|
||||
|
||||
case PageType.Syncing:
|
||||
|
||||
Header = String.Format (_("Syncing folder ‘{0}’…"), Controller.SyncingFolder);
|
||||
Description = _("This may take a while." + Environment.NewLine) +
|
||||
_("Are you sure it’s not coffee o'clock?");
|
||||
|
||||
Button button = new Button () {
|
||||
Sensitive = false,
|
||||
Label = _("Finish")
|
||||
};
|
||||
|
||||
button.Clicked += delegate {
|
||||
Close ();
|
||||
};
|
||||
|
||||
AddButton (button);
|
||||
|
||||
this.progress_bar_pulse_timer.Elapsed += delegate {
|
||||
Application.Invoke (delegate {
|
||||
progress_bar.Pulse ();
|
||||
});
|
||||
};
|
||||
|
||||
if (this.progress_bar.Parent != null)
|
||||
(this.progress_bar.Parent as Container).Remove (this.progress_bar);
|
||||
|
||||
VBox bar_wrapper = new VBox (false , 0);
|
||||
bar_wrapper.PackStart (this.progress_bar, false, false, 0);
|
||||
|
||||
Add (bar_wrapper);
|
||||
|
||||
break;
|
||||
|
||||
case PageType.Error:
|
||||
|
||||
Header = _("Something went wrong") + "…";
|
||||
|
||||
Button try_again_button = new Button (_("Try Again")) {
|
||||
Sensitive = true
|
||||
};
|
||||
|
||||
try_again_button.Clicked += delegate {
|
||||
Controller.ErrorPageCompleted ();
|
||||
};
|
||||
|
||||
AddButton (try_again_button);
|
||||
Add (null);
|
||||
|
||||
break;
|
||||
|
||||
case PageType.Finished:
|
||||
|
||||
UrgencyHint = true;
|
||||
|
||||
if (!HasToplevelFocus) {
|
||||
string title = String.Format (_("‘{0}’ has been successfully added"), Controller.SyncingFolder);
|
||||
string subtext = _("");
|
||||
|
||||
new SparkleBubble (title, subtext).Show ();
|
||||
}
|
||||
|
||||
Header = _("Folder synced successfully!");
|
||||
Description = _("Access the synced files from your SparkleShare folder.");
|
||||
|
||||
// A button that opens the synced folder
|
||||
Button open_folder_button = new Button (_("Open Folder"));
|
||||
|
||||
open_folder_button.Clicked += delegate {
|
||||
SparkleShare.Controller.OpenSparkleShareFolder (Controller.SyncingFolder);
|
||||
};
|
||||
|
||||
Button finish_button = new Button (_("Finish"));
|
||||
|
||||
finish_button.Clicked += delegate {
|
||||
Close ();
|
||||
};
|
||||
|
||||
Add (null);
|
||||
|
||||
AddButton (open_folder_button);
|
||||
AddButton (finish_button);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
ShowAll ();
|
||||
});
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
|
||||
// Enables or disables the 'Next' button depending on the
|
||||
// entries filled in by the user
|
||||
private void CheckSetupPage ()
|
||||
{
|
||||
if (NameEntry.Text.Length > 0 &&
|
||||
SparkleShare.Controller.IsValidEmail (EmailEntry.Text)) {
|
||||
|
||||
NextButton.Sensitive = true;
|
||||
} else {
|
||||
NextButton.Sensitive = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Enables or disables the 'Next' button depending on the
|
||||
// entries filled in by the user
|
||||
public void CheckAddPage ()
|
||||
{
|
||||
SyncButton.Sensitive = false;
|
||||
|
||||
if (FolderEntry.ExampleTextActive ||
|
||||
(ServerEntry.Sensitive && ServerEntry.ExampleTextActive))
|
||||
return;
|
||||
|
||||
bool IsFolder = !FolderEntry.Text.Trim ().Equals ("");
|
||||
bool IsServer = !ServerEntry.Text.Trim ().Equals ("");
|
||||
|
||||
if (ServerEntry.Sensitive == true) {
|
||||
if (IsServer && IsFolder)
|
||||
SyncButton.Sensitive = true;
|
||||
} else if (IsFolder) {
|
||||
SyncButton.Sensitive = true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue