/* ----------------------------------------------------------------- */ /// /// Save /// /// <summary> /// CubePDF.UserSetting クラスの現在の設定を指定されたパスにXML /// 形式で保存します. /// </summary> /// /* ----------------------------------------------------------------- */ public bool Save(string path) { bool status = true; try { var param = new ParameterManager(); this.Save(param); param.Save(path, ParameterFileType.XML); } catch (Exception /* err */) { status = false; } return status; }
/* ----------------------------------------------------------------- */ /// /// Save /// /// <summary> /// CubePDF.UserSetting クラスの現在の設定をレジストリに保存します. /// </summary> /// /* ----------------------------------------------------------------- */ public bool Save() { bool status = true; try { var param = new ParameterManager(); this.Save(param); using (var root = Registry.CurrentUser.CreateSubKey(REG_ROOT + '\\' + REG_VERSION)) { param.Save(root); } } catch (Exception /* err */) { status = false; } return status; }
/* ----------------------------------------------------------------- */ /// /// Save /// /// <summary> /// 設定情報を ParameterList クラスに保存する.尚,アップデートを /// チェックする項目のみ,チェックの有無にしたがって Startup に /// 関係するレジストリの内容を変更しなければならないので,その処理 /// もこのメソッドで行う. /// </summary> /// /* ----------------------------------------------------------------- */ private void Save(ParameterManager config) { // パス関連 config.Parameters.Add(new ParameterElement(REG_LAST_OUTPUT_ACCESS, ParameterType.String, _output)); config.Parameters.Add(new ParameterElement(REG_LAST_INPUT_ACCESS, ParameterType.String, _input)); config.Parameters.Add(new ParameterElement(REG_USER_PROGRAM, ParameterType.String, _program)); config.Parameters.Add(new ParameterElement(REG_USER_ARGUMENTS, ParameterType.String, _argument)); // チェックボックスのフラグ関連 int flag = _rotation ? 1 : 0; config.Parameters.Add(new ParameterElement(REG_PAGE_ROTATION, ParameterType.Integer, flag)); flag = _embed ? 1 : 0; config.Parameters.Add(new ParameterElement(REG_EMBED_FONT, ParameterType.Integer, flag)); flag = _grayscale ? 1 : 0; config.Parameters.Add(new ParameterElement(REG_GRAYSCALE, ParameterType.Integer, flag)); flag = _web ? 1 : 0; config.Parameters.Add(new ParameterElement(REG_WEB_OPTIMIZE, ParameterType.Integer, flag)); flag = _save ? 1 : 0; config.Parameters.Add(new ParameterElement(REG_SAVE_SETTING, ParameterType.Integer, flag)); flag = _update ? 1 : 0; config.Parameters.Add(new ParameterElement(REG_CHECK_UPDATE, ParameterType.Integer, flag)); flag = _advance ? 1 : 0; config.Parameters.Add(new ParameterElement(REG_ADVANCED_MODE, ParameterType.Integer, flag)); flag = _visible ? 1 : 0; config.Parameters.Add(new ParameterElement(REG_VISIBLE, ParameterType.Integer, flag)); flag = _selectable ? 1 : 0; config.Parameters.Add(new ParameterElement(REG_SELECT_INPUT, ParameterType.Integer, flag)); // コンボボックスのインデックス関連 config.Parameters.Add(new ParameterElement(REG_FILETYPE, ParameterType.Integer, (int)_type)); config.Parameters.Add(new ParameterElement(REG_PDF_VERSION, ParameterType.Integer, (int)_pdfver)); config.Parameters.Add(new ParameterElement(REG_RESOLUTION, ParameterType.Integer, (int)_resolution)); config.Parameters.Add(new ParameterElement(REG_EXISTED_FILE, ParameterType.Integer, (int)_exist)); config.Parameters.Add(new ParameterElement(REG_POST_PROCESS, ParameterType.Integer, (int)_postproc)); config.Parameters.Add(new ParameterElement(REG_DOWNSAMPLING, ParameterType.Integer, (int)_downsampling)); config.Parameters.Add(new ParameterElement(REG_IMAGEFILTER, ParameterType.Integer, (int)_filter)); // アップデートプログラムの登録および削除 using (var startup = Registry.CurrentUser.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run")) { if (_update) { string value = startup.GetValue(UPDATE_PROGRAM) as string; if (startup.GetValue(UPDATE_PROGRAM) == null && _install.Length > 0) { startup.SetValue(UPDATE_PROGRAM, '"' + _install + '\\' + UPDATE_PROGRAM + ".exe\""); } } else startup.DeleteValue(UPDATE_PROGRAM, false); } }
/* ----------------------------------------------------------------- */ /// /// Load /// /// <summary> /// ユーザ毎の設定情報をロードします.引数なしでLoad() メソッドを /// 実行した場合,レジストリに保存されてある情報をロードします. /// </summary> /// /* ----------------------------------------------------------------- */ public bool Load() { bool status = true; try { using (RegistryKey root = Registry.CurrentUser.OpenSubKey(REG_ROOT + '\\' + REG_VERSION, false)) { var param = new ParameterManager(); param.Load(root); this.Load(param); } } catch (Exception /* err */) { status = false; } return status; }
/* ----------------------------------------------------------------- */ /// /// Load /// /// <summary> /// ParameterList クラスにロードされた内容を元に設定情報をロード /// する. /// </summary> /// /* ----------------------------------------------------------------- */ private void Load(ParameterManager param) { var v = param.Parameters; // パス関連 string desktop = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory); string s = v.Contains(REG_LAST_OUTPUT_ACCESS) ? (string)v.Find(REG_LAST_OUTPUT_ACCESS).Value : ""; _output = (s.Length > 0) ? s : desktop; s = v.Contains(REG_LAST_INPUT_ACCESS) ? (string)v.Find(REG_LAST_INPUT_ACCESS).Value : ""; _input = (s.Length > 0) ? s : desktop; s = v.Contains(REG_USER_PROGRAM) ? (string)v.Find(REG_USER_PROGRAM).Value : ""; _program = s; s = v.Contains(REG_USER_ARGUMENTS) ? (string)v.Find(REG_USER_ARGUMENTS).Value : "%%FILE%%"; _argument = s; // チェックボックスのフラグ関連 int value = v.Contains(REG_PAGE_ROTATION) ? (int)v.Find(REG_PAGE_ROTATION).Value : 1; _rotation = (value != 0); value = v.Contains(REG_EMBED_FONT) ? (int)v.Find(REG_EMBED_FONT).Value : 1; _embed = (value != 0); value = v.Contains(REG_GRAYSCALE) ? (int)v.Find(REG_GRAYSCALE).Value : 0; _grayscale = (value != 0); value = v.Contains(REG_WEB_OPTIMIZE) ? (int)v.Find(REG_WEB_OPTIMIZE).Value : 0; _web = (value != 0); value = v.Contains(REG_SAVE_SETTING) ? (int)v.Find(REG_SAVE_SETTING).Value : 0; _save = (value != 0); value = v.Contains(REG_CHECK_UPDATE) ? (int)v.Find(REG_CHECK_UPDATE).Value : 1; _update = (value != 0); value = v.Contains(REG_ADVANCED_MODE) ? (int)v.Find(REG_ADVANCED_MODE).Value : 0; _advance = (value != 0); value = v.Contains(REG_VISIBLE) ? (int)v.Find(REG_VISIBLE).Value : 1; _visible = (value != 0); value = v.Contains(REG_SELECT_INPUT) ? (int)v.Find(REG_SELECT_INPUT).Value : 0; _selectable = (value != 0); // コンボボックスのインデックス関連 value = v.Contains(REG_FILETYPE) ? (int)v.Find(REG_FILETYPE).Value : 0; foreach (int x in Enum.GetValues(typeof(Parameter.FileTypes))) { if (x == value) _type = (Parameter.FileTypes)value; } value = v.Contains(REG_PDF_VERSION) ? (int)v.Find(REG_PDF_VERSION).Value : 0; foreach (int x in Enum.GetValues(typeof(Parameter.PDFVersions))) { if (x == value) _pdfver = (Parameter.PDFVersions)value; } value = v.Contains(REG_RESOLUTION) ? (int)v.Find(REG_RESOLUTION).Value : 0; foreach (int x in Enum.GetValues(typeof(Parameter.Resolutions))) { if (x == value) _resolution = (Parameter.Resolutions)value; } value = v.Contains(REG_EXISTED_FILE) ? (int)v.Find(REG_EXISTED_FILE).Value : 0; foreach (int x in Enum.GetValues(typeof(Parameter.ExistedFiles))) { if (x == value) _exist = (Parameter.ExistedFiles)value; } value = v.Contains(REG_POST_PROCESS) ? (int)v.Find(REG_POST_PROCESS).Value : 0; foreach (int x in Enum.GetValues(typeof(Parameter.PostProcesses))) { if (x == value) _postproc = (Parameter.PostProcesses)value; } value = v.Contains(REG_DOWNSAMPLING) ? (int)v.Find(REG_DOWNSAMPLING).Value : 0; foreach (int x in Enum.GetValues(typeof(Parameter.DownSamplings))) { if (x == value) _downsampling = (Parameter.DownSamplings)value; } value = v.Contains(REG_IMAGEFILTER) ? (int)v.Find(REG_IMAGEFILTER).Value : 0; foreach (int x in Enum.GetValues(typeof(Parameter.ImageFilters))) { if (x == value) _filter = (Parameter.ImageFilters)value; } }