public SparkleSetupController ()
        {
            ChangePageEvent += delegate (Controller.PageType page_type, string [] warnings) {
                this.current_page = page_type;
            };

            TutorialPageNumber = 0;
            SyncingFolder      = "";

            Program.Controller.ShowSetupWindowEvent += delegate (Controller.PageType page_type) {
                if (page_type == Controller.PageType.CryptoSetup || page_type == Controller.PageType.CryptoPassword) {
                    ChangePageEvent (page_type, null);
                    return;
                }

                if (this.current_page == Controller.PageType.Syncing ||
                    this.current_page == Controller.PageType.Finished ||
                    this.current_page == Controller.PageType.CryptoSetup ||
                    this.current_page == Controller.PageType.CryptoPassword) {

                    ShowWindowEvent ();
                    return;
                }

                if (page_type == Controller.PageType.Add) {
                    if (WindowIsOpen) {
                        if (this.current_page == Controller.PageType.Error ||
                            this.current_page == Controller.PageType.Finished ||
                            this.current_page == Controller.PageType.None) {

                            ChangePageEvent (Controller.PageType.Add, null);
                        }

                        ShowWindowEvent ();

                    } else if (!RuntimeSettings.FirstRun && TutorialPageNumber == 0) {
                        WindowIsOpen = true;
                        ChangePageEvent (Controller.PageType.Add, null);
                        ShowWindowEvent ();
                    }

                    return;
                }

                WindowIsOpen = true;
                ChangePageEvent (page_type, null);
                ShowWindowEvent ();
            };
        }
 public void FinishPageCompleted ()
 {
     this.fetch_prior_history = false;
     this.current_page = Controller.PageType.None;
     HideWindowEvent ();
 }