Пример #1
0
        private void DoImportAsync(object sender, DoWorkEventArgs dwe)
        {
            lock (_app._Lock) {
                var worker = (BackgroundWorker)sender;

                try {
                    var dirPath = dwe.Argument as string;

                    var sync = new MemoDataFolderSync(
                        (progress) => {
                        worker.ReportProgress(progress);
                    }
                        );
                    sync.SyncMemoDataFoldersFrom(dirPath);
                } catch (Exception e) {
                    Logger.Warn("Export failed", e);
                    throw;
                }
            }
        }
Пример #2
0
        private void WorkerDoWork(object sender, DoWorkEventArgs e)
        {
            Logger.Debug("Backup: do work");

            var sync = new MemoDataFolderSync(null);

            if (_needDailyBackup)
            {
                _inDailyBackup   = true;
                _needDailyBackup = false;
                OnDailyBackupStarted();
                lock (MemopadConsts.DataLock) {
                    sync.SyncMemoDataFoldersTo(_dailyBackupPath);
                }
            }

            if (_needWeeklyBackup)
            {
                _inWeeklyBackup   = true;
                _needWeeklyBackup = false;
                OnWeeklyBackupStarted();
                lock (MemopadConsts.DataLock) {
                    sync.SyncMemoDataFoldersTo(_weeklyBackupPath);
                }
            }

            if (_needMonthlyBackup)
            {
                _inMonthlyBackup   = true;
                _needMonthlyBackup = false;
                OnMonthlyBackupStarted();
                lock (MemopadConsts.DataLock) {
                    sync.SyncMemoDataFoldersTo(_monthlyBackupPath);
                }
            }
        }
Пример #3
0
        // ========================================
        // method
        // ========================================
        public bool ExportTo(string dirPath)
        {
            if (MemoDataFolderSync.ExistsLockFile(dirPath))
            {
                MessageBox.Show(
                    _app.MainForm,
                    "他のMochaNoteが使用中のノート格納フォルダにはエクスポートできません。",
                    "エクスポートエラー"
                    );
                return(false);
            }
            if (MemoDataFolderSync.ContainsNoMemo(dirPath))
            {
                MessageBox.Show(
                    _app.MainForm,
                    "ノートデータ以外のフォルダやファイルが格納されているフォルダにはエクスポートできません。" + Environment.NewLine +
                    "空のフォルダか以前にノートをエクスポートしたフォルダを選択してください。",
                    "エクスポートエラー"
                    );
                return(false);
            }

            var ret = MessageBox.Show(
                _app.MainForm,
                "エクスポートを実行すると\"" + dirPath + "\"に格納されているノートデータ以外のファイルやフォルダは削除されます。" + Environment.NewLine +
                "エクスポートを実行してもよろしいですか。",
                "エクスポートの確認",
                MessageBoxButtons.YesNo
                );

            if (ret == DialogResult.No)
            {
                MessageBox.Show(
                    _app.MainForm,
                    "エクスポートを中止しました。",
                    "エクスポートの中止"
                    );
                return(false);
            }

            _app.SaveAllMemos();
            _app.SaveRecentIds();
            _app.SaveFusenFormIds();

            _app.MainForm.SaveFormSettings(_app._WindowSettings);
            MemopadSettings.SaveSettings(_app._Settings);
            MemopadWindowSettings.SaveWindowSettings(_app._WindowSettings);

            _app.CloseConnections();


            var dialog = new ProgressDialog();

            dialog.Text                                 = "エクスポートの進捗";
            dialog.SupportCancel                        = false;
            dialog.Font                                 = _app.Theme.CaptionFont;
            dialog.BackgroundWorker.DoWork             += DoExportAsync;
            dialog.BackgroundWorker.RunWorkerCompleted += (sender, e) => {
                if (e.Error != null)
                {
                    MessageBox.Show(_app.MainForm, "エクスポートに失敗しました。", "エクスポートエラー");
                }
                else if (e.Cancelled)
                {
                    MessageBox.Show(_app.MainForm, "エクスポートをキャンセルしました。", "エクスポートのキャンセル");
                }
                dialog.Close();
                dialog.Dispose();

                _app.OpenConnections();
            };
            dialog.Run(_app.MainForm, dirPath);

            _app.BootstrapSettings.LastExportDirectory = dirPath;

            return(true);
        }
Пример #4
0
        public bool ImportFrom(string dirPath)
        {
            if (!MemoDataFolderSync.ContainsMemo(dirPath))
            {
                MessageBox.Show(
                    _app.MainForm,
                    "ノートデータが格納されていないフォルダからはインポートできません。",
                    "インポートエラー"
                    );
                return(false);
            }
            if (MemoDataFolderSync.ExistsLockFile(dirPath))
            {
                MessageBox.Show(
                    _app.MainForm,
                    "他のMochaNoteが使用中のノート格納フォルダからはインポートできません。",
                    "インポートエラー"
                    );
                return(false);
            }

            var ret = MessageBox.Show(
                _app.MainForm,
                "\"" + dirPath + "\"からのインポートを実行してもよろしいですか。",
                "インポートの確認",
                MessageBoxButtons.YesNo
                );

            if (ret == DialogResult.No)
            {
                MessageBox.Show(
                    _app.MainForm,
                    "インポートを中止しました。",
                    "インポートの中止"
                    );
                return(false);
            }

            _app.SaveAllMemos();

            _app.SaveRecentIds();
            _app.SaveFusenFormIds();

            _app.MainForm.SaveFormSettings(_app._WindowSettings);
            MemopadSettings.SaveSettings(_app._Settings);
            MemopadWindowSettings.SaveWindowSettings(_app._WindowSettings);

            _app.BootstrapSettings.LastImportDirectory = dirPath;
            _app.SaveBootstrapSettings();

            _app.CloseConnections();
            log4net.LogManager.Shutdown();

            var dialog = new ProgressDialog();

            dialog.Text                                 = "インポートの進捗";
            dialog.SupportCancel                        = false;
            dialog.Font                                 = _app.Theme.CaptionFont;
            dialog.BackgroundWorker.DoWork             += DoImportAsync;
            dialog.BackgroundWorker.RunWorkerCompleted += (sender, e) => {
                if (e.Error != null)
                {
                    MessageBox.Show(_app.MainForm, "インポートに失敗しました。", "インポートエラー");
                }
                else if (e.Cancelled)
                {
                    MessageBox.Show(_app.MainForm, "インポートをキャンセルしました。", "インポートのキャンセル");
                }
                dialog.Close();
                dialog.Dispose();

                /// インポート前のmemoinfosなどが上書きされないように
                /// 終了時のSaveAll()を防ぐ
                _app._PreventSaveAll = true;
                Application.Restart();
            };
            dialog.Run(_app.MainForm, dirPath);

            return(true);
        }