public void backup_Files(string backupFolder)
        {
            var files_BackupFolder = backupFolder.pathCombine("Files");

            files_BackupFolder.createDir();

            var files = WikiApi.allImages();

            "there are {0} files to download".info(files.size());
            Status_ProgressBar.maximum(files.size());
            Status_ProgressBar.value(0);
            foreach (var file in files)
            {
                if (CancelBackup)
                {
                    "In backup_Files, CancelBackup was set, so aborting backup".error();
                    break;
                }
                var web = new Web();
                if (WikiApi.BasicAuth.valid())
                {
                    web.Headers_Request.add("Authorization", "Basic " + WikiApi.BasicAuth);
                }
                web.downloadBinaryFile(file, files_BackupFolder);
                Status_ProgressBar.increment(1);
            }
        }
        public void savePages(string backupFolder, string targetFolder, List <string> pages, string mappingsFileName)
        {
            string pageMappings = "";

            "there are: {0} pages to save".info(pages.size());
            Status_ProgressBar.maximum(pages.size());
            Status_ProgressBar.value(0);
            foreach (var page in pages)
            {
                if (CancelBackup)
                {
                    "In savePages, CancelBackup was set, so aborting backup".error();
                    break;
                }
                pageMappings += "{0}	{1}".format(page, page.base64Encode()).line();
                var saveFileName = "{0}.wikitext.txt".format(Files.getSafeFileNameString(page));
                WikiApi.raw(page).saveAs(targetFolder.pathCombine(saveFileName));
                Status_ProgressBar.increment(1);
            }
            pageMappings.saveAs(backupFolder.pathCombine(mappingsFileName));
        }
        public ascx_MediaWiki_Backup buildGui(O2MediaWikiAPI wikiApi)
        {
            WikiApi = wikiApi;

            //var controls = this.add_1x1(false);
            //var configPanel = controls[0].add_Panel();
            //controls[1].add_LogViewer();
            var configPanel = this.add_Panel();

            configPanel.add_Label("Folder to store backup files", 5, 0);
            BackupFolder_TextBox = configPanel.add_TextBox().top(25);
            BackupFolder_TextBox.align_Right(configPanel)
            .widthAdd(-5);

            BackupPages_CheckBox         = configPanel.add_CheckBox("Backup content pages", 50, 0, (value) => {}).autoSize().tick();
            BackupFiles_CheckBox         = configPanel.add_CheckBox("Backup files", 70, 0, (value) => {}).autoSize().untick();
            BackupCategoryPages_CheckBox = configPanel.add_CheckBox("Backup category Pages", 90, 0, (value) => {}).autoSize().tick();
            BackupTemplates_CheckBox     = configPanel.add_CheckBox("Backup template pages", 110, 0, (value) => {}).autoSize().tick();
            BackupUsers_CheckBox         = configPanel.add_CheckBox("Backup users pages", 50, 150, (value) => {}).autoSize().tick();

            StartBackup_Button = configPanel.add_Button("Start Backup", 140, 0)
                                 .onClick(backup);
            CancelBackup_Button = configPanel.add_Button("Cancel Backup", 140, 100)
                                  .onClick(cancelBackup).enabled(false);

            Status_ProgressBar = configPanel.add_ProgressBar(170, 0);
            Status_ProgressBar.align_Right(configPanel)
            .widthAdd(-5);

            var rightPanel = configPanel.insert_Right <Panel>(configPanel.width() / 3);                 // there is a small gui frezee here which needs to be solved

            Backup_Directory = rightPanel.add_Directory(@"C:\O2");

            setup();

            return(this);
        }