private void OnSeekbarValueChanged(int value) { int index = value - 1; if (index != ImgContainerManager.CurrentImageIndex) { var t = ImgContainerManager.ChangeCurrentIndex(index); } }
// 行列設定ダイアログ private void MatrixSelecter_MatrixSelected(object sender, EventArgs e) { MatrixSelecter ms = sender as MatrixSelecter; if (ms != null) { this.MenuItem_Matrix.IsSubmenuOpen = false; Setting.TempProfile.NumofMatrix.Value = new int[] { ms.ColValue, ms.RowValue }; ImgContainerManager.ApplyGridDifinition(); this.Focus(); } }
// グリッドのアスペクト比 選択時 private void Toolbar_AspectRate_Click(object sender, RoutedEventArgs e) { MenuItem item = sender as MenuItem; if (item != null) { // 非固定を選択 if (item.Tag.ToString() == "FREE") { if (Setting.TempProfile.NonFixAspectRatio.Value) { // 非固定解除 Setting.TempProfile.NonFixAspectRatio.Value = false; } else { // 非固定にする Setting.TempProfile.NonFixAspectRatio.Value = true; } UpdateToolbarViewing(); return; } // 固定値を選択 else { Setting.TempProfile.NonFixAspectRatio.Value = false; string[] str = item.Tag.ToString().Split('_'); int w = int.Parse(str[0]); int h = int.Parse(str[1]); Setting.TempProfile.AspectRatio.Value = new int[] { w, h }; ImgContainerManager.ApplyAspectRatio(true); } } }
private void InitEvent() { this.SourceInitialized += (s, e) => { // ウインドウ位置復元が正常に行われたかチェック Win32.SetWindowPosProperly(new WindowInteropHelper(this).Handle, (int)this.Left, (int)this.Top, true, 0, true); }; this.SizeChanged += (s, e) => { // 以下の処理は、ウインドウ枠ドラッグでのサイズ変更時のみ有効 if (IgnoreResizeEvent) { return; } // 画像拡大パネルのサイズ更新、拡大中ならリセット if (TileExpantionPanel.IsShowing) { TileExpantionPanel.FitToMainWindow(); } // アス比非固定時 if (Setting.TempProfile.NonFixAspectRatio.Value) { // 現在のプロファイル Profile pf = Setting.TempProfile; // タイルサイズ(アス比)の決定 double w = (this.Width - MainContent.Margin.Left * 2) / pf.NumofMatrix.Col; double h = (this.Height - MainContent.Margin.Left * 2) / pf.NumofMatrix.Row; double gridRatio = h / w; int gridWidth = ImgContainer.StandardInnerTileWidth + pf.TilePadding.Value * 2; int gridHeight = (int)(gridWidth * gridRatio); pf.AspectRatio.Value = new int[] { ImgContainer.StandardInnerTileWidth, gridHeight - pf.TilePadding.Value * 2 }; // コンテナサイズの決定 ImgContainerManager.InitContainerSize(); ImgContainerManager.InitWrapPoint(pf.SlideDirection.Value); // BitmapDecodePixelOfTilewを更新 ImgContainerManager.InitBitmapDecodePixelOfTile(); // 位置を正規化 ImgContainerManager.InitContainerPos(); } // アス比固定・非固定に関わらず拡大縮小 FitMainContentToWindow(); }; this.Closing += (s, e) => { ShortcutManager.UnhookWindowsHook(); }; this.PreviewDragOver += (s, e) => { if (e.Data.GetDataPresent(DataFormats.FileDrop, true)) { e.Effects = DragDropEffects.All; } else { e.Effects = DragDropEffects.None; } e.Handled = true; }; this.Drop += (s, e) => { SaveHistoryItem(); // メインウインドウをアクティブに this.Activate(); string[] files = e.Data.GetData(DataFormats.FileDrop) as string[]; if (IsCtrlOrShiftKeyPressed) { // 追加読み込み ReadFiles(files, true); var t = ImgContainerManager.InitAllContainer(0); } else { // 通常読み込み DropNewFiles(files); } }; // end of method }
// ツールバーボタン(読み込み) private void MenuItem_Load_SubmenuOpened(object sender, RoutedEventArgs e) { // イベントの発生元チェック(子要素からのイベントなら無視) MenuItem miSrc = e.OriginalSource as MenuItem; if (miSrc == null || miSrc.Name != MenuItem_Load.Name) { return; } // 項目追加前に、基本メニュー以外を削除 for (int i = MenuItem_Load.Items.Count - 1; i >= 0; i--) { MenuItem mi = MenuItem_Load.Items[i] as MenuItem; if (mi != null && (string)mi.Tag == "BasicItemLast") { break; } MenuItem_Load.Items.RemoveAt(i); } // 追加読み込み if (Setting.ShowMenuItem_AdditionalRead) { MenuItem_Load.Items.Add(new Separator()); MenuItem mi_addFolder = new MenuItem(); mi_addFolder.Header = "フォルダを追加読み込み"; mi_addFolder.Click += Toolbar_Add_Folder_Click; MenuItem_Load.Items.Add(mi_addFolder); MenuItem mi_addFile = new MenuItem(); mi_addFile.Header = "ファイルを追加読み込み"; mi_addFile.Click += Toolbar_Add_File_Click; MenuItem_Load.Items.Add(mi_addFile); } // 再読込み(必ず表示) MenuItem_Load.Items.Add(new Separator()); MenuItem mi_reload = new MenuItem(); mi_reload.Header = "再読み込み"; mi_reload.Click += Toolbar_Load_Reload_Click; MenuItem_Load.Items.Add(mi_reload); // エクスプローラーでフォルダを開く(必ず表示) MenuItem mi_openFolder = new MenuItem(); mi_openFolder.Header = "エクスプローラーでフォルダを開く"; mi_openFolder.Click += (s, ev) => { OpenCurrentFolderByExplorer(); }; MenuItem_Load.Items.Add(mi_openFolder); // ヒストリーなし Action addHistorySettingMenu = () => { MenuItem_Load.Items.Add(new Separator()); MenuItem m0 = new MenuItem(); m0.Header = "履歴設定..."; m0.Click += (s, ev) => ShowAppSettingDialog((int)AppSettingDialogTabIndex.History); MenuItem_Load.Items.Add(m0); }; if (Setting.History.Count < 1) { addHistorySettingMenu.Invoke(); return; } // セパレータ MenuItem_Load.Items.Add(new Separator()); // ヒストリーの右クリックメニュー ContextMenu contextMenu = new ContextMenu(); MenuItem cmi1 = new MenuItem(); MenuItem cmi2 = new MenuItem(); MenuItem cmi3 = new MenuItem(); cmi1.Header = "追加読み込み"; cmi2.Header = "エクスプローラーで開く"; cmi3.Header = "削除"; // 追加読み込み cmi1.Click += (se, ev) => { MenuItem mi = ((ev.Source as MenuItem).Parent as ContextMenu).PlacementTarget as MenuItem; if (mi == null) { return; } string[] path = { mi.ToolTip.ToString() }; ReadFiles(path, true); var t = ImgContainerManager.InitAllContainer(0); }; // エクスプローラーで開く cmi2.Click += (se, ev) => { MenuItem mi = ((ev.Source as MenuItem).Parent as ContextMenu).PlacementTarget as MenuItem; if (mi == null) { return; } string path = mi.ToolTip.ToString(); //Process.Start(path); Process.Start("explorer.exe", "/select,\"" + path + "\""); }; // 削除 cmi3.Click += (se, ev) => { MenuItem mi = ((ev.Source as MenuItem).Parent as ContextMenu).PlacementTarget as MenuItem; if (mi == null) { return; } string path = mi.ToolTip.ToString(); Setting.History.RemoveAll(h => h.ArchiverPath == path); MenuItem_Load_SubmenuOpened(this, new RoutedEventArgs(null, MenuItem_Load)); }; contextMenu.Items.Add(cmi1); contextMenu.Items.Add(cmi2); contextMenu.Items.Add(cmi3); // メインヒストリー追加 for (int i = 0; i < Setting.NumofHistoryInMainMenu; i++) { if (i < Setting.History.Count) { MenuItem mi = new MenuItem(); mi.Header = System.IO.Path.GetFileName(Setting.History[i].ArchiverPath).Replace("_", "__"); mi.ToolTip = Setting.History[i].ArchiverPath; mi.Click += OnHistoryItemSelected; mi.ContextMenu = contextMenu; MenuItem_Load.Items.Add(mi); } } // サブヒストリー追加 if (Setting.History.Count > Setting.NumofHistoryInMainMenu && Setting.NumofHistoryInMenu > Setting.NumofHistoryInMainMenu) { MenuItem continuation = new MenuItem(); continuation.Header = "フォルダ履歴の続き"; MenuItem_Load.Items.Add(continuation); for (int i = Setting.NumofHistoryInMainMenu; i < Setting.NumofHistoryInMenu; i++) { if (i > Setting.History.Count - 1) { break; } MenuItem mi = new MenuItem(); mi.Header = System.IO.Path.GetFileName(Setting.History[i].ArchiverPath).Replace("_", "__"); mi.ToolTip = Setting.History[i].ArchiverPath; mi.Click += OnHistoryItemSelected; mi.ContextMenu = contextMenu; continuation.Items.Add(mi); } } // 履歴設定 addHistorySettingMenu.Invoke(); }