Пример #1
0
        public void UpdateContent(string html)
        {
            string pixmaps_path = IO.Path.Combine(SparkleUI.AssetsPath, "pixmaps");
            string icons_path = new string [] { SparkleUI.AssetsPath, "icons", "hicolor", "12x12", "status" }.Combine();

            html = html.Replace("<!-- $body-font-size -->", (double)(Style.FontDescription.Size / 1024 + 3) + "px");
            html = html.Replace("<!-- $day-entry-header-font-size -->", (Style.FontDescription.Size / 1024 + 3) + "px");
            html = html.Replace("<!-- $a-color -->", "#0085cf");
            html = html.Replace("<!-- $a-hover-color -->", "#009ff8");
            html = html.Replace("<!-- $body-font-family -->", "\"" + Style.FontDescription.Family + "\"");
            html = html.Replace("<!-- $body-color -->", SparkleUIHelpers.GdkColorToHex(Style.Foreground(StateType.Normal)));
            html = html.Replace("<!-- $body-background-color -->", SparkleUIHelpers.GdkColorToHex(new TreeView().Style.Base(StateType.Normal)));
            html = html.Replace("<!-- $day-entry-header-background-color -->", SparkleUIHelpers.GdkColorToHex(Style.Background(StateType.Normal)));
            html = html.Replace("<!-- $secondary-font-color -->", SparkleUIHelpers.GdkColorToHex(Style.Foreground(StateType.Insensitive)));
            html = html.Replace("<!-- $small-color -->", SparkleUIHelpers.GdkColorToHex(Style.Foreground(StateType.Insensitive)));
            html = html.Replace("<!-- $small-font-size -->", "85%");
            html = html.Replace("<!-- $pixmaps-path -->", pixmaps_path);
            html = html.Replace("<!-- $document-added-background-image -->", "file://" + IO.Path.Combine(icons_path, "document-added.png"));
            html = html.Replace("<!-- $document-edited-background-image -->", "file://" + IO.Path.Combine(icons_path, "document-edited.png"));
            html = html.Replace("<!-- $document-deleted-background-image -->", "file://" + IO.Path.Combine(icons_path, "document-deleted.png"));
            html = html.Replace("<!-- $document-moved-background-image -->", "file://" + IO.Path.Combine(icons_path, "document-moved.png"));

            this.spinner.Stop();

            this.web_view.NavigationRequested -= WebViewNavigationRequested;
            this.web_view.LoadHtmlString(html, "file://");
            this.web_view.NavigationRequested += WebViewNavigationRequested;

            this.content_wrapper.Remove(this.content_wrapper.Child);
            this.content_wrapper.Add(this.scrolled_window);
            this.content_wrapper.ShowAll();
        }
Пример #2
0
        public void UpdateContent(string html)
        {
            Thread thread = new Thread(new ThreadStart(delegate {
                if (html == null)
                {
                    html = Controller.HTML;
                }

                if (html == null)
                {
                    return;
                }

                html = html.Replace("<!-- $body-font-size -->", (double)(Style.FontDescription.Size / 1024 + 3) + "px");
                html = html.Replace("<!-- $day-entry-header-font-size -->", (Style.FontDescription.Size / 1024 + 3) + "px");
                html = html.Replace("<!-- $a-color -->", "#0085cf");
                html = html.Replace("<!-- $a-hover-color -->", "#009ff8");
                html = html.Replace("<!-- $body-font-family -->", "\"" + Style.FontDescription.Family + "\"");
                html = html.Replace("<!-- $body-color -->", SparkleUIHelpers.GdkColorToHex(Style.Foreground(StateType.Normal)));
                html = html.Replace("<!-- $body-background-color -->", SparkleUIHelpers.GdkColorToHex(new TreeView().Style.Base(StateType.Normal)));
                html = html.Replace("<!-- $day-entry-header-background-color -->", SparkleUIHelpers.GdkColorToHex(Style.Background(StateType.Normal)));
                html = html.Replace("<!-- $secondary-font-color -->", SparkleUIHelpers.GdkColorToHex(Style.Foreground(StateType.Insensitive)));
                html = html.Replace("<!-- $small-color -->", SparkleUIHelpers.GdkColorToHex(Style.Foreground(StateType.Insensitive)));
                html = html.Replace("<!-- $no-buddy-icon-background-image -->", "file://" +
                                    new string [] { SparkleUI.AssetsPath, "icons",
                                                    "hicolor", "32x32", "status", "avatar-default.png" }.Combine());
                html = html.Replace("<!-- $document-added-background-image -->", "file://" +
                                    new string [] { SparkleUI.AssetsPath, "icons",
                                                    "hicolor", "12x12", "status", "document-added.png" }.Combine());
                html = html.Replace("<!-- $document-edited-background-image -->", "file://" +
                                    new string [] { SparkleUI.AssetsPath, "icons",
                                                    "hicolor", "12x12", "status", "document-edited.png" }.Combine());
                html = html.Replace("<!-- $document-deleted-background-image -->", "file://" +
                                    new string [] { SparkleUI.AssetsPath, "icons",
                                                    "hicolor", "12x12", "status", "document-deleted.png" }.Combine());
                html = html.Replace("<!-- $document-moved-background-image -->", "file://" +
                                    new string [] { SparkleUI.AssetsPath, "icons",
                                                    "hicolor", "12x12", "status", "document-moved.png" }.Combine());

                Application.Invoke(delegate {
                    this.spinner.Stop();
                    this.web_view.LoadString(html, null, null, "file:///");
                    this.content_wrapper.Remove(this.content_wrapper.Child);
                    this.content_wrapper.Add(this.scrolled_window);
                    this.content_wrapper.ShowAll();
                });
            }));

            thread.Start();
        }
Пример #3
0
        private void GenerateHTML()
        {
            HTML = SparkleShare.Controller.GetHTMLLog(System.IO.Path.GetFileName(LocalPath));

            HTML = HTML.Replace("<!-- $body-font-size -->", (double)(Style.FontDescription.Size / 1024 + 3) + "px");
            HTML = HTML.Replace("<!-- $day-entry-header-font-size -->", (Style.FontDescription.Size / 1024 + 3) + "px");
            HTML = HTML.Replace("<!-- $a-color -->", "#0085cf");
            HTML = HTML.Replace("<!-- $a-hover-color -->", "#009ff8");
            HTML = HTML.Replace("<!-- $body-font-family -->", "\"" + Style.FontDescription.Family + "\"");
            HTML = HTML.Replace("<!-- $body-color -->", SparkleUIHelpers.GdkColorToHex(Style.Foreground(StateType.Normal)));
            HTML = HTML.Replace("<!-- $body-background-color -->", SparkleUIHelpers.GdkColorToHex(new TreeView().Style.Base(StateType.Normal)));
            HTML = HTML.Replace("<!-- $day-entry-header-background-color -->", SparkleUIHelpers.GdkColorToHex(Style.Background(StateType.Normal)));
            HTML = HTML.Replace("<!-- $secondary-font-color -->", SparkleUIHelpers.GdkColorToHex(Style.Foreground(StateType.Insensitive)));
            HTML = HTML.Replace("<!-- $small-color -->", SparkleUIHelpers.GdkColorToHex(Style.Foreground(StateType.Insensitive)));
            HTML = HTML.Replace("<!-- $no-buddy-icon-background-image -->", "file://" +
                                SparkleHelpers.CombineMore(Defines.PREFIX, "share", "sparkleshare", "icons",
                                                           "hicolor", "32x32", "status", "avatar-default.png"));
        }
Пример #4
0
        public SparkleSetupWindow() : base("")
        {
            Title          = Catalog.GetString("SparkleShare Setup");
            BorderWidth    = 0;
            IconName       = "folder-sparkleshare";
            Resizable      = false;
            WindowPosition = WindowPosition.Center;
            Deletable      = false;

            DeleteEvent += delegate(object sender, DeleteEventArgs args) {
                args.RetVal = true;
            };

            SecondaryTextColor = SparkleUIHelpers.GdkColorToHex(Style.Foreground(StateType.Insensitive));

            SecondaryTextColorSelected =
                SparkleUIHelpers.GdkColorToHex(
                    MixColors(
                        new TreeView().Style.Foreground(StateType.Selected),
                        new TreeView().Style.Background(StateType.Selected),
                        0.15
                        )
                    );

            SetSizeRequest(680, 400);

            HBox = new HBox(false, 0);

            VBox = new VBox(false, 0);

            Wrapper = new VBox(false, 0)
            {
                BorderWidth = 0
            };

            OptionArea = new VBox(false, 0)
            {
                BorderWidth = 0
            };

            Buttons = CreateButtonBox();


            HBox layout_horizontal = new HBox(false, 0)
            {
                BorderWidth = 0
            };

            layout_horizontal.PackStart(OptionArea, true, true, 0);
            layout_horizontal.PackStart(Buttons, false, false, 0);

            VBox.PackStart(Wrapper, true, true, 0);
            VBox.PackStart(layout_horizontal, false, false, 15);

            EventBox box = new EventBox();

            Gdk.Color bg_color = new Gdk.Color();
            Gdk.Color.Parse("#000", ref bg_color);
            box.ModifyBg(StateType.Normal, bg_color);

            Image side_splash = SparkleUIHelpers.GetImage("side-splash.png");

            side_splash.Yalign = 1;

            box.Add(side_splash);

            HBox.PackStart(box, false, false, 0);
            HBox.PackStart(VBox, true, true, 30);

            base.Add(HBox);
        }
Пример #5
0
 public SparkleIntro() : base()
 {
     ServerFormOnly     = false;
     SecondaryTextColor = SparkleUIHelpers.GdkColorToHex(Style.Foreground(StateType.Insensitive));
 }
Пример #6
0
        public SparkleSetup() : base()
        {
            SecondaryTextColor         = SparkleUIHelpers.GdkColorToHex(Style.Foreground(StateType.Insensitive));
            SecondaryTextColorSelected =
                SparkleUIHelpers.GdkColorToHex(
                    MixColors(
                        new TreeView().Style.Foreground(StateType.Selected),
                        new TreeView().Style.Background(StateType.Selected),
                        0.15
                        )
                    );

            Controller.ChangePageEvent += delegate(PageType type, string [] warnings) {
                Application.Invoke(delegate {
                    Reset();

                    switch (type)
                    {
                    case PageType.Setup: {
                        Header      = _("Welcome to SparkleShare!");
                        Description = "We'll need some info to mark your changes in the event log. " +
                                      "Don't worry, this stays between you and your peers.";


                        Table table = new Table(2, 3, true)
                        {
                            RowSpacing    = 6,
                            ColumnSpacing = 6
                        };

                        Label name_label = new Label("<b>" + _("Full Name:") + "</b>")
                        {
                            UseMarkup = true,
                            Xalign    = 1
                        };

                        Entry name_entry = new Entry(Controller.GuessedUserName)
                        {
                            Xalign = 0
                        };

                        Entry email_entry = new Entry(Controller.GuessedUserEmail)
                        {
                            Xalign = 0
                        };

                        name_entry.Changed += delegate {
                            Controller.CheckSetupPage(name_entry.Text, email_entry.Text);
                        };

                        email_entry.Changed += delegate {
                            Controller.CheckSetupPage(name_entry.Text, email_entry.Text);
                        };

                        Label email_label = new Label("<b>" + _("Email:") + "</b>")
                        {
                            UseMarkup = true,
                            Xalign    = 1
                        };

                        table.Attach(name_label, 0, 1, 0, 1);
                        table.Attach(name_entry, 1, 2, 0, 1);
                        table.Attach(email_label, 0, 1, 1, 2);
                        table.Attach(email_entry, 1, 2, 1, 2);

                        VBox wrapper = new VBox(false, 9);
                        wrapper.PackStart(table, true, false, 0);

                        Button continue_button = new Button(_("Continue"))
                        {
                            Sensitive = false
                        };

                        continue_button.Clicked += delegate(object o, EventArgs args) {
                            string full_name = name_entry.Text;
                            string email     = email_entry.Text;

                            Controller.SetupPageCompleted(full_name, email);
                        };

                        AddButton(continue_button);
                        Add(wrapper);


                        Controller.UpdateSetupContinueButtonEvent += delegate(bool button_enabled) {
                            Application.Invoke(delegate {
                                    continue_button.Sensitive = button_enabled;
                                });
                        };

                        Controller.CheckSetupPage(name_entry.Text, email_entry.Text);

                        break;
                    }

                    case PageType.Add: {
                        Header = _("Where's your project hosted?");

                        VBox layout_vertical = new VBox(false, 12);
                        HBox layout_fields   = new HBox(true, 12);
                        VBox layout_address  = new VBox(true, 0);
                        VBox layout_path     = new VBox(true, 0);


                        ListStore store = new ListStore(typeof(Gdk.Pixbuf),
                                                        typeof(string), typeof(SparklePlugin));

                        SparkleTreeView tree = new SparkleTreeView(store)
                        {
                            HeadersVisible = false
                        };
                        ScrolledWindow scrolled_window = new ScrolledWindow();
                        scrolled_window.AddWithViewport(tree);

                        // Icon column
                        tree.AppendColumn("Icon", new Gtk.CellRendererPixbuf(), "pixbuf", 0);
                        tree.Columns [0].Cells [0].Xpad = 6;

                        // Service column
                        TreeViewColumn service_column = new TreeViewColumn()
                        {
                            Title = "Service"
                        };
                        CellRendererText service_cell = new CellRendererText()
                        {
                            Ypad = 4
                        };
                        service_column.PackStart(service_cell, true);
                        service_column.SetCellDataFunc(service_cell, new TreeCellDataFunc(RenderServiceColumn));

                        foreach (SparklePlugin plugin in Controller.Plugins)
                        {
                            store.AppendValues(
                                new Gdk.Pixbuf(plugin.ImagePath),
                                "<span size=\"small\"><b>" + plugin.Name + "</b>\n" +
                                "<span fgcolor=\"" + SecondaryTextColorSelected + "\">" +
                                plugin.Description + "</span>" +
                                "</span>",
                                plugin);
                        }

                        tree.AppendColumn(service_column);

                        SparkleEntry path_entry    = new SparkleEntry();
                        SparkleEntry address_entry = new SparkleEntry();


                        // Select the first plugin by default
                        TreeSelection default_selection = tree.Selection;
                        TreePath default_path           = new TreePath("0");
                        default_selection.SelectPath(default_path);
                        Controller.SelectedPluginChanged(0);

                        Controller.ChangeAddressFieldEvent += delegate(string text,
                                                                       string example_text, FieldState state) {
                            Application.Invoke(delegate {
                                    address_entry.Text      = text;
                                    address_entry.Sensitive = (state == FieldState.Enabled);

                                    if (string.IsNullOrEmpty(example_text))
                                    {
                                        address_entry.ExampleText = null;
                                    }
                                    else
                                    {
                                        address_entry.ExampleText = example_text;
                                    }

                                    if (string.IsNullOrEmpty(text))
                                    {
                                        address_entry.ExampleTextActive = true;
                                    }
                                    else
                                    {
                                        address_entry.ExampleTextActive = false;
                                    }
                                });
                        };

                        Controller.ChangePathFieldEvent += delegate(string text,
                                                                    string example_text, FieldState state) {
                            Application.Invoke(delegate {
                                    path_entry.Text      = text;
                                    path_entry.Sensitive = (state == FieldState.Enabled);

                                    if (string.IsNullOrEmpty(example_text))
                                    {
                                        path_entry.ExampleText = null;
                                    }
                                    else
                                    {
                                        path_entry.ExampleText = example_text;
                                    }

                                    if (string.IsNullOrEmpty(text))
                                    {
                                        path_entry.ExampleTextActive = true;
                                    }
                                    else
                                    {
                                        path_entry.ExampleTextActive = false;
                                    }
                                });
                        };

                        // Update the address field text when the selection changes
                        tree.CursorChanged += delegate(object sender, EventArgs e) {
                            Controller.SelectedPluginChanged(tree.SelectedRow);
                            // TODO: Scroll to selected row when using arrow keys
                        };

                        tree.Model.Foreach(new TreeModelForeachFunc(delegate(TreeModel model,
                                                                             TreePath path, TreeIter iter) {
                                string address;

                                try {
                                    address = (model.GetValue(iter, 2) as SparklePlugin).Address;
                                } catch (NullReferenceException) {
                                    address = "";
                                }

                                if (!string.IsNullOrEmpty(address) &&
                                    address.Equals(Controller.PreviousAddress))
                                {
                                    tree.SetCursor(path, service_column, false);
                                    SparklePlugin plugin = (SparklePlugin)model.GetValue(iter, 2);

                                    if (plugin.Address != null)
                                    {
                                        address_entry.Sensitive = false;
                                    }

                                    if (plugin.Path != null)
                                    {
                                        path_entry.Sensitive = false;
                                    }

                                    // TODO: Scroll to the selection

                                    return(true);
                                }
                                else
                                {
                                    return(false);
                                }
                            }));

                        address_entry.Completion = new EntryCompletion();
                        ListStore server_store   = new ListStore(typeof(string));

                        foreach (string host in Program.Controller.PreviousHosts)
                        {
                            server_store.AppendValues(host);
                        }

                        address_entry.Completion.Model      = server_store;
                        address_entry.Completion.TextColumn = 0;

                        address_entry.Changed += delegate {
                            Controller.CheckAddPage(address_entry.Text, path_entry.Text, tree.SelectedRow);
                        };

                        layout_address.PackStart(new Label()
                            {
                                Markup = "<b>" + _("Address") + "</b>",
                                Xalign = 0
                            }, true, true, 0);

                        layout_address.PackStart(address_entry, true, true, 0);

                        path_entry.Completion = new EntryCompletion();

                        ListStore folder_store = new ListStore(typeof(string));

                        //foreach (string host in Program.Controller.FolderPaths)
                        //    folder_store.AppendValues (host);

                        path_entry.Completion.Model      = folder_store;
                        path_entry.Completion.TextColumn = 0;

                        path_entry.Changed += delegate {
                            Controller.CheckAddPage(address_entry.Text, path_entry.Text, tree.SelectedRow);
                        };

                        layout_path.PackStart(new Label()
                            {
                                Markup = "<b>" + _("Remote Path") + "</b>",
                                Xalign = 0
                            }, true, true, 0);

                        layout_path.PackStart(path_entry, true, true, 0);

                        layout_fields.PackStart(layout_address);
                        layout_fields.PackStart(layout_path);

                        layout_vertical.PackStart(new Label(""), false, false, 0);
                        layout_vertical.PackStart(scrolled_window, true, true, 0);
                        layout_vertical.PackStart(layout_fields, false, false, 0);

                        Add(layout_vertical);

                        // Cancel button
                        Button cancel_button = new Button(_("Cancel"));

                        cancel_button.Clicked += delegate {
                            Close();
                        };

                        // Sync button
                        Button add_button = new Button(_("Add"));

                        add_button.Clicked += delegate {
                            string server      = address_entry.Text;
                            string folder_name = path_entry.Text;

                            Controller.AddPageCompleted(server, folder_name);
                        };

                        AddButton(cancel_button);
                        AddButton(add_button);

                        Controller.CheckAddPage(address_entry.Text, path_entry.Text, tree.SelectedRow);

                        break;
                    }

                    case PageType.Syncing: {
                        Header      = String.Format(_("Adding project ‘{0}’…"), Controller.SyncingFolder);
                        Description = _("This may take a while.") + Environment.NewLine +
                                      _("Are you sure it’s not coffee o'clock?");

                        Button finish_button = new Button()
                        {
                            Sensitive = false,
                            Label     = _("Finish")
                        };

                        Button cancel_button = new Button()
                        {
                            Label = _("Cancel")
                        };

                        cancel_button.Clicked += delegate {
                            Controller.SyncingCancelled();
                        };

                        AddButton(cancel_button);
                        AddButton(finish_button);

                        Controller.UpdateProgressBarEvent += delegate(double percentage) {
                            Application.Invoke(delegate {
                                    this.progress_bar.Fraction = percentage / 100;
                                });
                        };

                        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") + "…";

                        VBox points          = new VBox(false, 0);
                        Image list_point_one = new Image(SparkleUIHelpers.GetIcon("list-point", 16))
                        {
                        };
                        Image list_point_two = new Image(SparkleUIHelpers.GetIcon("list-point", 16))
                        {
                        };
                        Image list_point_three = new Image(SparkleUIHelpers.GetIcon("list-point", 16))
                        {
                        };

                        Label label_one = new Label()
                        {
                            Text   = "First, have you tried turning it off and on again?",
                            Wrap   = true,
                            Xalign = 0
                        };

                        Label label_two = new Label()
                        {
                            Markup = "<b>" + Controller.PreviousUrl + "</b> is the address we've compiled. " +
                                     "Does this look alright?",
                            Wrap   = true,
                            Xalign = 0
                        };

                        Label label_three = new Label()
                        {
                            Text = "The host needs to know who you are. Did you upload the key that's in " +
                                   "your SparkleShare folder?",
                            Wrap   = true,
                            Xalign = 0
                        };


                        points.PackStart(new Label("Please check the following:")
                            {
                                Xalign = 0
                            }, false, false, 6);

                        HBox point_one = new HBox(false, 0);
                        point_one.PackStart(list_point_one, false, false, 0);
                        point_one.PackStart(label_one, true, true, 12);
                        points.PackStart(point_one, false, false, 12);

                        HBox point_two = new HBox(false, 0);
                        point_two.PackStart(list_point_two, false, false, 0);
                        point_two.PackStart(label_two, true, true, 12);
                        points.PackStart(point_two, false, false, 12);

                        HBox point_three = new HBox(false, 0);
                        point_three.PackStart(list_point_three, false, false, 0);
                        point_three.PackStart(label_three, true, true, 12);
                        points.PackStart(point_three, false, false, 12);

                        points.PackStart(new Label(""), true, true, 0);


                        Button try_again_button = new Button(_("Try Again…"))
                        {
                            Sensitive = true
                        };

                        try_again_button.Clicked += delegate {
                            Controller.ErrorPageCompleted();
                        };

                        AddButton(try_again_button);
                        Add(points);

                        break;
                    }

                    case PageType.Finished: {
                        UrgencyHint = true;

                        if (!HasToplevelFocus)
                        {
                            string title   = String.Format(_("‘{0}’ has been successfully added"), Controller.SyncingFolder);
                            string subtext = "";

                            SparkleUI.Bubbles.Controller.ShowBubble(title, subtext, null);
                        }

                        Header      = _("Project successfully added!");
                        Description = _("Access the 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 {
                            Program.Controller.OpenSparkleShareFolder(Controller.SyncingFolder);
                        };

                        Button finish_button = new Button(_("Finish"));

                        finish_button.Clicked += delegate {
                            Controller.FinishedPageCompleted();
                            Close();
                        };


                        if (warnings != null)
                        {
                            Image warning_image = new Image(
                                SparkleUIHelpers.GetIcon("dialog-warning", 24)
                                );

                            Label warning_label = new Label(warnings [0])
                            {
                                Xalign = 0,
                                Wrap   = true
                            };

                            HBox warning_layout = new HBox(false, 0);
                            warning_layout.PackStart(warning_image, false, false, 0);
                            warning_layout.PackStart(warning_label, true, true, 15);

                            VBox warning_wrapper = new VBox(false, 0);
                            warning_wrapper.PackStart(warning_layout, false, false, 0);

                            Add(warning_wrapper);
                        }
                        else
                        {
                            Add(null);
                        }


                        AddButton(open_folder_button);
                        AddButton(finish_button);

                        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.");

                            Button skip_tutorial_button   = new Button(_("Skip Tutorial"));
                            skip_tutorial_button.Clicked += delegate {
                                Controller.TutorialSkipped();
                            };

                            Button continue_button   = new Button(_("Continue"));
                            continue_button.Clicked += delegate {
                                Controller.TutorialPageCompleted();
                            };

                            Image slide = SparkleUIHelpers.GetImage("tutorial-slide-1.png");

                            Add(slide);

                            AddButton(skip_tutorial_button);
                            AddButton(continue_button);

                            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.");

                            Button continue_button   = new Button(_("Continue"));
                            continue_button.Clicked += delegate {
                                Controller.TutorialPageCompleted();
                            };

                            Image slide = SparkleUIHelpers.GetImage("tutorial-slide-2.png");

                            Add(slide);
                            AddButton(continue_button);

                            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.");

                            Button continue_button   = new Button(_("Continue"));
                            continue_button.Clicked += delegate {
                                Controller.TutorialPageCompleted();
                            };

                            Image slide = SparkleUIHelpers.GetImage("tutorial-slide-3.png");

                            Add(slide);
                            AddButton(continue_button);

                            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:");

                            Label label = new Label(_("…or select <b>‘Add Hosted Project…’</b> from the status icon menu " +
                                                      "to add one by hand."))
                            {
                                Wrap      = true,
                                Xalign    = 0,
                                UseMarkup = true
                            };

                            Image slide = SparkleUIHelpers.GetImage("tutorial-slide-4.png");

                            Button finish_button   = new Button(_("Finish"));
                            finish_button.Clicked += delegate {
                                Close();
                            };


                            VBox box = new VBox(false, 0);
                            box.Add(slide);
                            box.Add(label);

                            Add(box);
                            AddButton(finish_button);

                            break;
                        }
                        }

                        break;
                    }
                    }

                    ShowAll();
                });
            };
        }
Пример #7
0
        public SparkleDialog() : base("")
        {
            DefaultSize = new Gdk.Size(360, 260);

            BorderWidth    = 0;
            IconName       = "folder-sparkleshare";
            Resizable      = true;
            WindowPosition = WindowPosition.Center;
            Title          = "About SparkleShare";
            Resizable      = false;

            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>" + Defines.VERSION + "</small></span>",
                Xalign = 0,
                Xpad   = 18,
                Ypad   = 18
            };

            box.Add(header);

            Label license = new Label()
            {
                Xalign       = 0,
                Xpad         = 18,
                Ypad         = 22,
                LineWrap     = true,
                Wrap         = true,
                LineWrapMode = Pango.WrapMode.Word,

                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>"
            };

            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(license, true, true, 0);
            vbox.PackStart(button_bar, false, false, 0);

            Add(vbox);
        }