code cleanup
This commit is contained in:
parent
9d0d25b94e
commit
97d0208495
49
SparkleShare/SparkleBubble.cs
Normal file
49
SparkleShare/SparkleBubble.cs
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
// SparkleShare, an instant update workflow to Git.
|
||||||
|
// 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 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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
using Gtk;
|
||||||
|
using Notifications;
|
||||||
|
using SparkleShare;
|
||||||
|
|
||||||
|
namespace SparkleShare {
|
||||||
|
|
||||||
|
public class SparkleBubble : Notification {
|
||||||
|
|
||||||
|
public SparkleBubble (string title, string subtext) : base (title, subtext)
|
||||||
|
{
|
||||||
|
|
||||||
|
IconName = "folder-sparkleshare";
|
||||||
|
Timeout = 4500;
|
||||||
|
Urgency = Urgency.Low;
|
||||||
|
|
||||||
|
AttachToStatusIcon (SparkleUI.NotificationIcon);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Checks whether the system allows adding buttons to a notification,
|
||||||
|
// prevents error messages in Ubuntu.
|
||||||
|
new public void AddAction (string action, string label, ActionHandler handler)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (System.Array.IndexOf (Notifications.Global.Capabilities, "actions") > -1)
|
||||||
|
base.AddAction (action, label, handler);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -29,32 +29,32 @@ namespace SparkleShare {
|
||||||
|
|
||||||
public class SparkleIntro : Window {
|
public class SparkleIntro : Window {
|
||||||
|
|
||||||
|
public Entry NameEntry;
|
||||||
|
public Entry EmailEntry;
|
||||||
|
public Entry ServerEntry;
|
||||||
|
|
||||||
// Short alias for the translations
|
// Short alias for the translations
|
||||||
public static string _ (string s)
|
public static string _ (string s)
|
||||||
{
|
{
|
||||||
return Catalog.GetString (s);
|
return Catalog.GetString (s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public SparkleIntro () : base ("")
|
public SparkleIntro () : base ("")
|
||||||
{
|
{
|
||||||
|
|
||||||
// using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
|
BorderWidth = 0;
|
||||||
// {
|
IconName = "folder-sparkleshare";
|
||||||
// File.WriteAllText ("PublicKeyOnly.xml", rsa.ToXmlString (false));
|
Resizable = false;
|
||||||
// File.WriteAllText ("PublicPrivate.xml", rsa.ToXmlString (true));
|
|
||||||
//}
|
|
||||||
|
|
||||||
BorderWidth = 0;
|
|
||||||
SetSizeRequest (640, 400);
|
|
||||||
Resizable = false;
|
|
||||||
IconName = "folder-sparkleshare";
|
|
||||||
|
|
||||||
WindowPosition = WindowPosition.Center;
|
WindowPosition = WindowPosition.Center;
|
||||||
|
|
||||||
|
SetSizeRequest (640, 400);
|
||||||
|
|
||||||
ShowStepOne ();
|
ShowStepOne ();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void ShowStepOne ()
|
public void ShowStepOne ()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -63,139 +63,127 @@ namespace SparkleShare {
|
||||||
// TODO: Fix the path
|
// TODO: Fix the path
|
||||||
Image side_splash = new Image ("/home/hbons/github/SparkleShare/data/side-splash.png");
|
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 wrapper = new VBox (false, 0);
|
VBox layout_vertical = new VBox (false, 0) {
|
||||||
|
BorderWidth = 30
|
||||||
VBox layout_vertical = new VBox (false, 0) {
|
|
||||||
BorderWidth = 30
|
|
||||||
};
|
|
||||||
|
|
||||||
Label introduction = new Label ("<span size='x-large'><b>" +
|
|
||||||
_("Welcome to SparkleShare!") +
|
|
||||||
"</b></span>") {
|
|
||||||
UseMarkup = true,
|
|
||||||
Xalign = 0
|
|
||||||
};
|
|
||||||
|
|
||||||
Label information = new Label (_("Before we can create a SparkleShare folder on this " +
|
|
||||||
"computer, we need a few bits of information from you.")) {
|
|
||||||
Xalign = 0,
|
|
||||||
Wrap = true
|
|
||||||
};
|
|
||||||
|
|
||||||
UnixUserInfo unix_user_info = new UnixUserInfo (UnixEnvironment.UserName);
|
|
||||||
|
|
||||||
Label name_label = new Label ("<b>" + _("Full Name:") + "</b>") {
|
|
||||||
UseMarkup = true,
|
|
||||||
Xalign = 0
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Label introduction = new Label ("<span size='x-large'><b>" +
|
||||||
|
_("Welcome to SparkleShare!") +
|
||||||
|
"</b></span>") {
|
||||||
|
UseMarkup = true,
|
||||||
|
Xalign = 0
|
||||||
|
};
|
||||||
|
|
||||||
|
Label information = new Label (_("Before we can create a SparkleShare folder on this " +
|
||||||
|
"computer, we need a few bits of information from you.")) {
|
||||||
|
Xalign = 0,
|
||||||
|
Wrap = true
|
||||||
|
};
|
||||||
|
|
||||||
Entry name_entry = new Entry (unix_user_info.RealName);
|
UnixUserInfo unix_user_info = new UnixUserInfo (UnixEnvironment.UserName);
|
||||||
|
|
||||||
|
Label name_label = new Label ("<b>" + _("Full Name:") + "</b>") {
|
||||||
|
UseMarkup = true,
|
||||||
|
Xalign = 0
|
||||||
|
};
|
||||||
|
|
||||||
|
NameEntry = new Entry (unix_user_info.RealName);
|
||||||
|
|
||||||
|
|
||||||
Table table = new Table (6, 2, true) {
|
Table table = new Table (6, 2, true) {
|
||||||
RowSpacing = 6
|
RowSpacing = 6
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
Entry email_entry = new Entry ("");
|
EmailEntry = new Entry ("");
|
||||||
Label email_label = new Label ("<b>" + _("Email:") + "</b>") {
|
Label email_label = new Label ("<b>" + _("Email:") + "</b>") {
|
||||||
UseMarkup = true,
|
UseMarkup = true,
|
||||||
Xalign = 0
|
Xalign = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
Entry server_entry = new Entry ("ssh://gitorious.org/sparkleshare") {
|
Entry server_entry = new Entry ("ssh://gitorious.org/sparkleshare") {
|
||||||
Sensitive = false
|
Sensitive = false
|
||||||
};
|
};
|
||||||
|
|
||||||
Label server_label = new Label ("<b>" + _("Folder Address:") + "</b>") {
|
Label server_label = new Label ("<b>" + _("Folder Address:") + "</b>") {
|
||||||
UseMarkup = true,
|
UseMarkup = true,
|
||||||
Xalign = 0,
|
Xalign = 0,
|
||||||
Sensitive = false
|
Sensitive = false
|
||||||
};
|
};
|
||||||
|
|
||||||
CheckButton check_button;
|
CheckButton check_button;
|
||||||
check_button = new CheckButton (_("I already have access to an existing " +
|
check_button = new CheckButton (_("I already subscribed to an existing " +
|
||||||
"folder on a SparkleShare server"));
|
"folder on a SparkleShare server"));
|
||||||
|
|
||||||
check_button.Clicked += delegate {
|
check_button.Clicked += delegate {
|
||||||
|
|
||||||
if (check_button.Active) {
|
if (check_button.Active) {
|
||||||
|
|
||||||
server_label.Sensitive = true;
|
server_label.Sensitive = true;
|
||||||
server_entry.Sensitive = true;
|
server_entry.Sensitive = true;
|
||||||
server_entry.HasFocus = true;
|
server_entry.HasFocus = true;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
server_label.Sensitive = false;
|
server_label.Sensitive = false;
|
||||||
server_entry.Sensitive = false;
|
server_entry.Sensitive = false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ShowAll ();
|
ShowAll ();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
table.Attach (name_label, 0, 1, 0, 1);
|
table.Attach (name_label, 0, 1, 0, 1);
|
||||||
table.Attach (name_entry, 1, 2, 0, 1);
|
table.Attach (NameEntry, 1, 2, 0, 1);
|
||||||
table.Attach (email_label, 0, 1, 1, 2);
|
table.Attach (email_label, 0, 1, 1, 2);
|
||||||
table.Attach (email_entry, 1, 2, 1, 2);
|
table.Attach (EmailEntry, 1, 2, 1, 2);
|
||||||
table.Attach (check_button, 0, 2, 3, 4);
|
table.Attach (check_button, 0, 2, 3, 4);
|
||||||
table.Attach (server_label, 0, 1, 4, 5);
|
table.Attach (server_label, 0, 1, 4, 5);
|
||||||
table.Attach (server_entry, 1, 2, 4, 5);
|
table.Attach (server_entry, 1, 2, 4, 5);
|
||||||
|
|
||||||
HButtonBox controls = new HButtonBox () {
|
HButtonBox controls = new HButtonBox () {
|
||||||
BorderWidth = 12,
|
BorderWidth = 12,
|
||||||
Layout = ButtonBoxStyle.End
|
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.Clicked += delegate (object o, EventArgs args) {
|
||||||
|
|
||||||
done_button.Remove (done_button.Child);
|
done_button.Remove (done_button.Child);
|
||||||
|
|
||||||
HBox hbox = new HBox ();
|
HBox hbox = new HBox ();
|
||||||
|
|
||||||
hbox.Add (new SparkleSpinner ());
|
hbox.Add (new SparkleSpinner ());
|
||||||
hbox.Add (new Label (_("Configuring…")));
|
hbox.Add (new Label (_("Configuring…")));
|
||||||
|
|
||||||
done_button.Add (hbox);
|
done_button.Add (hbox);
|
||||||
|
|
||||||
done_button.Sensitive = false;
|
done_button.Sensitive = false;
|
||||||
table.Sensitive = false;
|
table.Sensitive = false;
|
||||||
|
|
||||||
done_button.ShowAll ();
|
done_button.ShowAll ();
|
||||||
|
|
||||||
string user_name = name_entry.Text;
|
Configure ();
|
||||||
string user_email = email_entry.Text;
|
|
||||||
|
|
||||||
string config_file_path = SparkleHelpers.CombineMore (SparklePaths.SparkleConfigPath, ".gitconfig");
|
ShowStepTwo ();
|
||||||
|
|
||||||
TextWriter writer = new StreamWriter (config_file_path);
|
};
|
||||||
writer.WriteLine ("[user]\n" +
|
|
||||||
"\tname = " + user_name + "\n" +
|
|
||||||
"\temail = " + user_email + "\n");
|
|
||||||
writer.Close ();
|
|
||||||
|
|
||||||
SparkleHelpers.DebugInfo ("Config", "Created '" + config_file_path + "'");
|
|
||||||
|
|
||||||
ShowStepTwo ();
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
controls.Add (done_button);
|
controls.Add (done_button);
|
||||||
|
|
||||||
layout_vertical.PackStart (introduction, false, false, 0);
|
layout_vertical.PackStart (introduction, false, false, 0);
|
||||||
layout_vertical.PackStart (information, false, false, 21);
|
layout_vertical.PackStart (information, false, false, 21);
|
||||||
layout_vertical.PackStart (new Label (""), false, false, 0);
|
layout_vertical.PackStart (new Label (""), false, false, 0);
|
||||||
layout_vertical.PackStart (table, false, false, 0);
|
layout_vertical.PackStart (table, false, false, 0);
|
||||||
|
|
||||||
wrapper.PackStart (layout_vertical, true, true, 0);
|
wrapper.PackStart (layout_vertical, true, true, 0);
|
||||||
|
|
||||||
wrapper.PackStart (controls, false, true, 0);
|
wrapper.PackStart (controls, false, true, 0);
|
||||||
|
|
||||||
|
layout_horizontal.PackStart (side_splash, false, false, 0);
|
||||||
layout_horizontal.PackStart (wrapper, true, true, 0);
|
layout_horizontal.PackStart (wrapper, true, true, 0);
|
||||||
|
|
||||||
Add (layout_horizontal);
|
Add (layout_horizontal);
|
||||||
|
@ -203,7 +191,8 @@ namespace SparkleShare {
|
||||||
ShowAll ();
|
ShowAll ();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void ShowStepTwo ()
|
public void ShowStepTwo ()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -240,6 +229,7 @@ namespace SparkleShare {
|
||||||
HBox link_wrapper = new HBox (false, 0);
|
HBox link_wrapper = new HBox (false, 0);
|
||||||
LinkButton link = new LinkButton ("http://www.sparkleshare.org/",
|
LinkButton link = new LinkButton ("http://www.sparkleshare.org/",
|
||||||
_("Learn how to host your own SparkleServer"));
|
_("Learn how to host your own SparkleServer"));
|
||||||
|
|
||||||
link_wrapper.PackStart (link, false, false, 0);
|
link_wrapper.PackStart (link, false, false, 0);
|
||||||
|
|
||||||
layout_vertical.PackStart (introduction, false, false, 0);
|
layout_vertical.PackStart (introduction, false, false, 0);
|
||||||
|
@ -270,6 +260,32 @@ namespace SparkleShare {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Configure SparkleShare with the user's information
|
||||||
|
public void Configure ()
|
||||||
|
{
|
||||||
|
|
||||||
|
string config_file_path = SparkleHelpers.CombineMore (SparklePaths.SparkleConfigPath, ".gitconfig");
|
||||||
|
|
||||||
|
TextWriter writer = new StreamWriter (config_file_path);
|
||||||
|
writer.WriteLine ("[user]\n" +
|
||||||
|
"\tname = " + NameEntry.Text + "\n" +
|
||||||
|
"\temail = " + EmailEntry.Text + "\n");
|
||||||
|
writer.Close ();
|
||||||
|
|
||||||
|
GenerateKeyPair ();
|
||||||
|
|
||||||
|
SparkleHelpers.DebugInfo ("Config", "Created '" + config_file_path + "'");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Generates an RSA keypair to identify this system
|
||||||
|
public void GenerateKeyPair ()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -647,11 +647,16 @@ namespace SparkleShare {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class SparkleEventArgs : System.EventArgs {
|
||||||
|
|
||||||
|
public string Message;
|
||||||
|
|
||||||
|
public SparkleEventArgs (string s)
|
||||||
|
{
|
||||||
|
Message = s;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -46,98 +46,23 @@ namespace SparkleShare {
|
||||||
|
|
||||||
string SparklePath = SparklePaths.SparklePath;
|
string SparklePath = SparklePaths.SparklePath;
|
||||||
|
|
||||||
|
EnableSystemAutostart ();
|
||||||
// Create .desktop entry in autostart folder to
|
CreateSparkleShareFolder ();
|
||||||
// start SparkleShare on each login
|
|
||||||
switch (SparklePlatform.Name) {
|
|
||||||
case "GNOME":
|
|
||||||
|
|
||||||
string autostart_path = SparkleHelpers.CombineMore (SparklePaths.HomePath, ".config", "autostart");
|
|
||||||
string desktopfile_path = SparkleHelpers.CombineMore (autostart_path, "sparkleshare.desktop");
|
|
||||||
|
|
||||||
if (!File.Exists (desktopfile_path)) {
|
|
||||||
|
|
||||||
if (!Directory.Exists (autostart_path))
|
|
||||||
Directory.CreateDirectory (autostart_path);
|
|
||||||
|
|
||||||
TextWriter writer = new StreamWriter (desktopfile_path);
|
|
||||||
|
|
||||||
writer.WriteLine ("[Desktop Entry]\n" +
|
|
||||||
"Type=Application\n" +
|
|
||||||
"Name=SparkleShare\n" +
|
|
||||||
"Exec=sparkleshare start\n" +
|
|
||||||
"Icon=folder-sparkleshare\n" +
|
|
||||||
"Terminal=false\n" +
|
|
||||||
"X-GNOME-Autostart-enabled=true");
|
|
||||||
|
|
||||||
writer.Close ();
|
|
||||||
|
|
||||||
// Give the launcher the right permissions so it can be launched by the user
|
|
||||||
Syscall.chmod (desktopfile_path, FilePermissions.S_IRWXU);
|
|
||||||
|
|
||||||
SparkleHelpers.DebugInfo ("Config", "Created '" + desktopfile_path + "'");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Create 'SparkleShare' folder in the user's home folder
|
|
||||||
// if it's not there already
|
|
||||||
if (!Directory.Exists (SparklePath)) {
|
|
||||||
|
|
||||||
Directory.CreateDirectory (SparklePath);
|
|
||||||
SparkleHelpers.DebugInfo ("Config", "Created '" + SparklePath + "'");
|
|
||||||
|
|
||||||
// Add a special icon to the SparkleShare folder
|
|
||||||
switch (SparklePlatform.Name) {
|
|
||||||
case "GNOME":
|
|
||||||
|
|
||||||
Process.StartInfo.FileName = "gvfs-set-attribute";
|
|
||||||
Process.StartInfo.Arguments = SparklePath + " metadata::custom-icon " +
|
|
||||||
"file:///usr/share/icons/hicolor/48x48/places/" +
|
|
||||||
"folder-sparkleshare.png";
|
|
||||||
Process.Start ();
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add the SparkleShare folder to the bookmarks
|
|
||||||
switch (SparklePlatform.Name) {
|
|
||||||
case "GNOME":
|
|
||||||
|
|
||||||
string BookmarksFileName =
|
|
||||||
Path.Combine (SparklePaths.HomePath, ".gtk-bookmarks");
|
|
||||||
|
|
||||||
if (File.Exists (BookmarksFileName)) {
|
|
||||||
TextWriter TextWriter = File.AppendText (BookmarksFileName);
|
|
||||||
TextWriter.WriteLine ("file://" + SparklePath + " SparkleShare");
|
|
||||||
TextWriter.Close ();
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create a directory to store temporary files in
|
// Create a directory to store temporary files in
|
||||||
if (!Directory.Exists (SparklePaths.SparkleTmpPath))
|
if (!Directory.Exists (SparklePaths.SparkleTmpPath))
|
||||||
Directory.CreateDirectory (SparklePaths.SparkleTmpPath);
|
Directory.CreateDirectory (SparklePaths.SparkleTmpPath);
|
||||||
|
|
||||||
if (!HideUI)
|
|
||||||
NotificationIcon = new SparkleStatusIcon ();
|
|
||||||
|
|
||||||
UpdateRepositories ();
|
UpdateRepositories ();
|
||||||
|
|
||||||
// Don't create the window and status
|
// Don't create the window and status
|
||||||
// icon when --disable-gui was given
|
// icon when --disable-gui was given
|
||||||
if (!HideUI) {
|
if (!HideUI) {
|
||||||
|
|
||||||
SparkleIntro intro = new SparkleIntro ();
|
SparkleIntro intro = new SparkleIntro ();
|
||||||
intro.ShowAll ();
|
intro.ShowAll ();
|
||||||
|
|
||||||
|
NotificationIcon = new SparkleStatusIcon ();
|
||||||
// Show a notification if there are no folders yet
|
// Show a notification if there are no folders yet
|
||||||
if (SparkleShare.Repositories.Length == 0) {
|
if (SparkleShare.Repositories.Length == 0) {
|
||||||
|
|
||||||
|
@ -214,12 +139,110 @@ namespace SparkleShare {
|
||||||
File.Create (NotifySettingFile);
|
File.Create (NotifySettingFile);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Creates .desktop entry in autostart folder to
|
||||||
|
// start SparkleShare automnatically at login
|
||||||
|
public void EnableSystemAutostart ()
|
||||||
|
{
|
||||||
|
|
||||||
|
switch (SparklePlatform.Name) {
|
||||||
|
|
||||||
|
case "GNOME":
|
||||||
|
|
||||||
|
string autostart_path = SparkleHelpers.CombineMore (SparklePaths.HomePath, ".config", "autostart");
|
||||||
|
string desktopfile_path = SparkleHelpers.CombineMore (autostart_path, "sparkleshare.desktop");
|
||||||
|
|
||||||
|
if (!File.Exists (desktopfile_path)) {
|
||||||
|
|
||||||
|
if (!Directory.Exists (autostart_path))
|
||||||
|
Directory.CreateDirectory (autostart_path);
|
||||||
|
|
||||||
|
TextWriter writer = new StreamWriter (desktopfile_path);
|
||||||
|
|
||||||
|
writer.WriteLine ("[Desktop Entry]\n" +
|
||||||
|
"Type=Application\n" +
|
||||||
|
"Name=SparkleShare\n" +
|
||||||
|
"Exec=sparkleshare start\n" +
|
||||||
|
"Icon=folder-sparkleshare\n" +
|
||||||
|
"Terminal=false\n" +
|
||||||
|
"X-GNOME-Autostart-enabled=true");
|
||||||
|
|
||||||
|
writer.Close ();
|
||||||
|
|
||||||
|
// Give the launcher the right permissions so it can be launched by the user
|
||||||
|
Syscall.chmod (desktopfile_path, FilePermissions.S_IRWXU);
|
||||||
|
|
||||||
|
SparkleHelpers.DebugInfo ("Config", "Created '" + desktopfile_path + "'");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void AddToBookmarks ()
|
||||||
|
{
|
||||||
|
|
||||||
|
// Add the SparkleShare folder to the bookmarks
|
||||||
|
switch (SparklePlatform.Name) {
|
||||||
|
|
||||||
|
case "GNOME":
|
||||||
|
|
||||||
|
string bookmarks_file_name = Path.Combine (SparklePaths.HomePath, ".gtk-bookmarks");
|
||||||
|
|
||||||
|
if (File.Exists (bookmarks_file_name)) {
|
||||||
|
TextWriter writer = File.AppendText (bookmarks_file_name);
|
||||||
|
writer.WriteLine ("file://" + SparklePaths.SparklePath + " SparkleShare");
|
||||||
|
writer.Close ();
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Creates the 'SparkleShare' folder in the user's home folder if
|
||||||
|
// it's not already there
|
||||||
|
public void CreateSparkleShareFolder ()
|
||||||
|
{
|
||||||
|
|
||||||
|
if (!Directory.Exists (SparklePaths.SparklePath)) {
|
||||||
|
|
||||||
|
Directory.CreateDirectory (SparklePaths.SparklePath);
|
||||||
|
SparkleHelpers.DebugInfo ("Config", "Created '" + SparklePaths.SparklePath + "'");
|
||||||
|
|
||||||
|
// Add a special icon to the SparkleShare folder
|
||||||
|
switch (SparklePlatform.Name) {
|
||||||
|
|
||||||
|
case "GNOME":
|
||||||
|
|
||||||
|
Process.StartInfo.FileName = "gvfs-set-attribute";
|
||||||
|
Process.StartInfo.Arguments = SparklePaths.SparklePath + " metadata::custom-icon " +
|
||||||
|
"file:///usr/share/icons/hicolor/48x48/places/" +
|
||||||
|
"folder-sparkleshare.png";
|
||||||
|
Process.Start ();
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
AddToBookmarks ();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public void Test (object o, SparkleEventArgs args) {
|
public void Test (object o, SparkleEventArgs args) {
|
||||||
Console.WriteLine ("AAAAAAAAAAAAAAAAAA");
|
Console.WriteLine ("AAAAAAAAAAAAAAAAAA");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void UpdateRepositories ()
|
public void UpdateRepositories ()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -228,12 +251,12 @@ namespace SparkleShare {
|
||||||
SparkleRepo [] TmpRepos = new SparkleRepo [Directory.GetDirectories (SparklePath).Length];
|
SparkleRepo [] TmpRepos = new SparkleRepo [Directory.GetDirectories (SparklePath).Length];
|
||||||
|
|
||||||
int FolderCount = 0;
|
int FolderCount = 0;
|
||||||
foreach (string Folder in Directory.GetDirectories (SparklePath)) {
|
foreach (string folder in Directory.GetDirectories (SparklePath)) {
|
||||||
|
|
||||||
// Check if the folder is a git repo
|
// Check if the folder is a git repo
|
||||||
if (Directory.Exists (SparkleHelpers.CombineMore (Folder, ".git"))) {
|
if (Directory.Exists (SparkleHelpers.CombineMore (folder, ".git"))) {
|
||||||
|
|
||||||
TmpRepos [FolderCount] = new SparkleRepo (Folder);
|
TmpRepos [FolderCount] = new SparkleRepo (folder);
|
||||||
FolderCount++;
|
FolderCount++;
|
||||||
|
|
||||||
// TODO: emblems don't show up in nautilus
|
// TODO: emblems don't show up in nautilus
|
||||||
|
@ -242,7 +265,7 @@ namespace SparkleShare {
|
||||||
case "GNOME":
|
case "GNOME":
|
||||||
|
|
||||||
Process.StartInfo.FileName = "gvfs-set-attribute";
|
Process.StartInfo.FileName = "gvfs-set-attribute";
|
||||||
Process.StartInfo.Arguments = "-t string \"" + Folder +
|
Process.StartInfo.Arguments = "-t string \"" + folder +
|
||||||
"\" metadata::emblems [synced]";
|
"\" metadata::emblems [synced]";
|
||||||
Process.Start ();
|
Process.Start ();
|
||||||
|
|
||||||
|
@ -255,7 +278,7 @@ namespace SparkleShare {
|
||||||
}
|
}
|
||||||
|
|
||||||
SparkleRepo a = TmpRepos [0];
|
SparkleRepo a = TmpRepos [0];
|
||||||
a.Added += new SparkleRepo.AddedEventHandler (Test);
|
a.Added += Test;
|
||||||
|
|
||||||
|
|
||||||
SparkleShare.Repositories = new SparkleRepo [FolderCount];
|
SparkleShare.Repositories = new SparkleRepo [FolderCount];
|
||||||
|
@ -264,21 +287,6 @@ namespace SparkleShare {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public class SparkleEventArgs : System.EventArgs {
|
|
||||||
|
|
||||||
private string message;
|
|
||||||
|
|
||||||
|
|
||||||
public SparkleEventArgs (string s)
|
|
||||||
{
|
|
||||||
this.message = s;
|
|
||||||
}
|
|
||||||
|
|
||||||
public string Message ()
|
|
||||||
{
|
|
||||||
return message;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue