public new void Draw(ref Graphics graph) { GHPadding padding = GHManager.GetStyle(windowType).ItemPadding; GHPadding text_pad = GHManager.Settings.Style.ItemList.TextPadding; Rectangle iconrc = new Rectangle { X = control.Left + (control.Width - GHManager.Settings.Style.ItemList.IconSize) / 2, Y = control.Top + padding.Top, Width = GHManager.Settings.Style.ItemList.IconSize, Height = GHManager.Settings.Style.ItemList.IconSize }; rect_text = new Rectangle { X = control.Left + text_pad.Left, Y = iconrc.Bottom + padding.Bottom + text_pad.Top, Width = control.Width - text_pad.WSize, Height = control.Height - iconrc.Height - padding.Top - text_pad.HSize - GHManager.Settings.Style.ItemList.WindowPadding.Top }; SolidBrush solidBrush = new SolidBrush(GHManager.GetColor()); graph.DrawImage(image, iconrc); StringFormat format = new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center, Trimming = StringTrimming.EllipsisCharacter, FormatFlags = StringFormatFlags.NoWrap }; graph.DrawString(item_name.ToString(), GHManager.GetFont(), solidBrush, rect_text, format); solidBrush.Dispose(); format.Dispose(); }
private void Config_FormClosing(object sender, FormClosingEventArgs e) { Page = ConfigTabControl.SelectedIndex; if (!ResultOK) { // 退避した設定に戻す GHManager.Rollback(1); Skin.LoadSkinImages(); } else { for (int i = 0; i < ListViewShortcut.Items.Count; ++i) { if (ListViewShortcut.Items[i].ForeColor == Color.Red) { ConfigTabControl.SelectedIndex = 1; e.Cancel = true; ResultOK = false; return; } } // 現在の設定を保存 GHManager.UnregistHotKey(GHManager.Launcher.Handle); GHManager.RegistHotKey(GHManager.Launcher.Handle); GHManager.SaveSetting(); } GHManager.SaveClear(); }
/// <summary> /// ランチャーが終了する時のイベント (後処理) /// </summary> private void Launcher_FormClosing(object sender, FormClosingEventArgs e) { // フックを解除 Dll.EndHook(); MysetManager.SaveMyset(); GHManager.SaveSetting(); GHManager.UnregistHotKey(Handle); }
static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); if (GHManager.Initialize() == 0) { Application.Run(GHManager.Launcher); } else { MessageBox.Show("アプリケーションの起動に失敗しました。", "Error"); } }
/// <summary> /// 更新を行うタイマーイベント 低速 500ms /// </summary> private void UpdateTimer_Tick(object sender, EventArgs e) { // 設定の確定 GHManager.Commit(); // 更新 GHFormUpdate(); GHManager.ItemList.GHFormUpdate(); GHManager.MysetList.GHFormUpdate(); if (FormVisible) { // グループとグループアイテムの情報を更新 GroupManager.UpdateGroup(); } }
private static void ShowForm() { if (GHManager.Launcher.FormVisible) { FormType n = GHManager.GetActiveForm(); if (n == FormType.Launcher) { int idx = GHManager.Launcher.SelectIndex; if (GroupManager.CheckRange(idx - 1)) { GHManager.ItemList.KeyboardActive = true; GroupManager.ShowItemList(GroupManager.Items[idx - 1]); } if (idx == 0) { if (GHManager.MysetList.FormVisible) { GHManager.MysetList.FixedActive = false; GHManager.MysetList.MysetList_Hide(); } else { if (MysetManager.Items.Count > 0) { GHManager.MysetList.FixedActive = true; GHManager.MysetList.MysetList_Show(); } } } } else if (n == FormType.MysetList) { int idx = GHManager.MysetList.SelectIndex; if (0 <= idx && idx < MysetManager.Items.Count) { GHManager.MysetList.KeyboardActive = true; MysetManager.SetMysetNum(MysetManager.Items[idx]); } } else { } } else { GHManager.Launcher.KeyboardActive = true; } }
// ショートカットキー入力の確定 public bool Input_FinishInput(object sender, ListViewInputBox.InputEventArgs e) { Dll.SetKeyboardHook(false); if (ListViewHitInfo != null && ListViewHitInfo.SubItem != null) { int index = ListViewHitInfo.Item.Index; List <int> col = new List <int> { index }; if (PrevKeyStr[(int)ListViewHitInfo.Item.Tag] != e.NewName) { if (!GHManager.CheckRegistHotKey(e.HotKey.ModKey, e.HotKey.Key)) { col.Add(index); } } foreach (var item in GHManager.TempSettings.Hotkey.HotKeys.Select((kv, i) => new { kv, i })) { ListViewShortcut.Items[item.i].ForeColor = Color.FromKnownColor(KnownColor.WindowText); if ((int)ListViewHitInfo.Item.Tag == item.kv.Key) { continue; } if (e.HotKey.Equals(item.kv.Value)) { col.Add(item.i); } } if (col.Count > 1) { col.ForEach(i => ListViewShortcut.Items[i].ForeColor = Color.Red); } ListViewHitInfo.Item.SubItems[1].Text = e.NewName; GHManager.TempSettings.Hotkey.HotKeys[(int)ListViewHitInfo.Item.Tag].SetKeys(e.HotKey.ModKey, e.HotKey.Key); } else { return(false); } HotKey = null; return(true); }
/// <summary> /// アイコンの描画 /// </summary> /// <param name="graph">描画先</param> public void Draw(ref Graphics graph) { GHPadding padding = GHManager.GetStyle(windowType).ItemPadding; Rectangle rect = new Rectangle { X = control.Location.X + padding.Left, Y = control.Location.Y + padding.Top, Width = control.Width - padding.WSize, Height = control.Height - padding.HSize }; if (image != null) { graph.DrawImage(image, rect); } }
private static void SelectPrevItem() { GHManager.Launcher.KeyboardActive = true; FormType active = GHManager.GetActiveForm(); if (active == FormType.Launcher) { GHManager.Launcher.SelectNextItem(-1); } else if (active == FormType.ItemList) { GHManager.ItemList.SelectNextItem(-1); } else if (active == FormType.MysetList) { GHManager.MysetList.SelectNextItem(-1); } }
protected override void DrawPriorUpdate() { GHManager.UpdateScrSize(); if (KeyboardActive) { if (SelectIndex <= 0) { SelectIndex = 0; MysetIcon.control.Focus(); } else { if (GroupManager.CheckRange(SelectIndex - 1)) { GroupManager.Items[SelectIndex - 1].icon.control.Focus(); } } } }
/// <summary> /// ランチャーの読み込み時のイベント /// </summary> private void Launcher_Load(object sender, EventArgs e) { // タスクトレイに追加 AddNotifyIcon(); // マイセットアイコンの初期化&追加 MysetIcon = new GHIconEx(SkinImage.Myset_Open_Icon, SkinImage.Myset_Icon, FormType.Launcher); MysetIcon.control.MouseClick += (s, a) => { if (a.Button == MouseButtons.Left) { if (GHManager.MysetList.FormVisible) { GHManager.MysetList.MouseActive = false; GHManager.MysetList.MysetList_Hide(); } else { GHManager.MysetList.MouseActive = true; GHManager.MysetList.MysetList_Show(); } } }; Controls.Add(MysetIcon.control); // フック開始 if (!Dll.StartHook()) { Application.Exit(); } // ランチャーの位置・サイズを設定 Size = new Size(GHManager.Settings.Style.Launcher.Width, GHManager.Settings.Style.Launcher.Height); SetOffset(GHManager.Settings.Launcher.Offset); animateInfo = new GHAnimateInfo(GHManager.Settings.Animate.Launcher_DelayTime, GHManager.Settings.Animate.Launcher_AnimateTime, GHManager.Settings.Animate.Launcher_Slide, GHManager.Settings.Animate.Launcher_Fade); GHManager.RegistHotKey(Handle); // タイマー開始 DrawTimer.Start(); UpdateTimer.Start(); }
private static void HideForm() { if (GHManager.Launcher.FormVisible) { FormType n = GHManager.GetActiveForm(); if (n == FormType.ItemList) { GHManager.ItemList.KeyboardActive = false; GHManager.ItemList.FixedActive = false; GHManager.ItemList.HideAnimation(); } else if (n == FormType.MysetList) { GHManager.MysetList.KeyboardActive = false; GHManager.MysetList.FixedActive = false; GHManager.MysetList.HideAnimation(); } else { GHManager.Launcher.KeyboardActive = false; GHManager.Launcher.HideAnimation(); } } }
/// <summary> /// アイコンの描画 /// </summary> /// <param name="graph">描画先</param> public void Draw(ref Graphics graph, bool open) { GHPadding padding = GHManager.GetStyle(windowType).ItemPadding; Rectangle rect = new Rectangle { X = control.Location.X + padding.Left, Y = control.Location.Y + padding.Top, Width = control.Width - padding.WSize, Height = control.Height - padding.HSize }; if (open) { SkinImage skin = opened ? OpendImage : ClosedImage; Skin.GetSkinImage(skin, out Bitmap bmp); graph.DrawImage(bmp, rect); bmp.Dispose(); bmp = null; } else { Draw(ref graph); } }
private static void DeleteSelectItem() { FormType n = GHManager.GetActiveForm(); if (n == FormType.Launcher) { if (GHManager.Launcher.FormVisible) { int idx = GHManager.Launcher.SelectIndex - 1; if (0 <= idx && idx < GroupManager.Items.Count) { GroupManager.DeleteGroup(GroupManager.Items[idx]); } } } else if (n == FormType.ItemList) { if (GHManager.ItemList.FormVisible) { int select = 0; if (GHManager.ItemList.ParentGHForm == 0) { select = GHManager.Launcher.SelectIndex - 1; if (GroupManager.CheckRange(select)) { GroupManager.Items[select].DeleteItem(GHManager.ItemList.SelectIndex); if (GroupManager.Items[select].Items.Count <= 0) { GHManager.ItemList.HideItemList(); } } } else { select = GHManager.MysetList.SelectIndex; if (MysetManager.CheckRange(select)) { if (MysetManager.Items[select].DeleteItem(GHManager.ItemList.SelectIndex)) { GHManager.ItemList.HideItemList(); if (MysetManager.Items.Count <= 0) { GHManager.MysetList.MysetList_Hide(); } } } } } } else if (n == FormType.MysetList) { if (GHManager.MysetList.FormVisible) { int idx = GHManager.MysetList.SelectIndex; if (MysetManager.CheckRange(idx)) { MysetManager.DeleteMyset(MysetManager.Items[idx]); if (MysetManager.Items.Count <= 0) { GHManager.MysetList.MysetList_Hide(); } } } } }
private static void OpenSelectItem() { if (GHManager.Launcher.FormVisible) { FormType n = GHManager.GetActiveForm(); if (n == FormType.Launcher) { // ランチャー if (GHManager.Launcher.MysetIcon.control.Focused) { if (GHManager.MysetList.FormVisible) { GHManager.MysetList.FixedActive = false; GHManager.MysetList.MysetList_Hide(); } else { if (MysetManager.Items.Count > 0) { GHManager.MysetList.FixedActive = true; GHManager.MysetList.MysetList_Show(); } } } else if (GroupManager.CheckRange(GHManager.Launcher.SelectIndex - 1)) { GroupManager.Items[GHManager.Launcher.SelectIndex - 1].SwitchShowOrHide(); } } else if (n == FormType.ItemList) { // アイテムリスト int num; int select = GHManager.ItemList.SelectIndex; if (GHManager.ItemList.ParentGHForm == 0) { num = GHManager.Launcher.SelectIndex - 1; if (GroupManager.CheckRange(num)) { if (GroupManager.Items[num].CheckRange(select)) { GHProcess.SwitchShowOrHide((IntPtr)GroupManager.Items[num].Items[select].Handle); } } } else { num = GHManager.MysetList.SelectIndex; if (MysetManager.CheckRange(num)) { if (MysetManager.Items[num].CheckRange(select)) { MysetManager.Items[num].Items[select].Execute(); } } } } else if (n == FormType.MysetList) { // マイセット int num = GHManager.MysetList.SelectIndex; if (MysetManager.CheckRange(num)) { MysetManager.Items[num].ExecuteItems(); } } } }
private void Config_Load(object sender, EventArgs e) { StringBuilder sb = new StringBuilder(255); WinAPI.GetClassName(Handle, sb, 255); Dll.SetConfigClassName(sb.ToString().ToCharArray()); Dll.SetConfigText(Text.ToCharArray()); ConfigTabControl.SelectedIndex = Page; BringToFront(); ComboBoxLauncherPos.Select(); Activate(); KeysMap.Init(); // 現在の設定を退避 GHManager.SavePoint(1); // コントロールに現在の設定を設定 // ランチャーページ ComboBoxLauncherPos.SelectedIndex = (int)GHManager.Settings.Launcher.Pos; UpDownLauncherReactRange.Value = GHManager.Settings.Launcher.ReactRange; CheckLauncherMouseButton.Checked = GHManager.Settings.Launcher.ShownMouseButton; UpDownLauncherDelayTime.Value = GHManager.Settings.Animate.Launcher_DelayTime; UpDownLauncherAnimateTime.Value = GHManager.Settings.Animate.Launcher_AnimateTime; CheckLauncherSlide.Checked = GHManager.Settings.Animate.Launcher_Slide; CheckLauncherFade.Checked = GHManager.Settings.Animate.Launcher_Fade; UpDownMysetlistDelayTime.Value = GHManager.Settings.Animate.MysetList_DelayTime; UpDownMysetlistAnimateTime.Value = GHManager.Settings.Animate.MysetList_AnimateTime; CheckMysetlistSlide.Checked = GHManager.Settings.Animate.MysetList_Slide; CheckMysetlistFade.Checked = GHManager.Settings.Animate.MysetList_Fade; UpDownItemlistDelayTime.Value = GHManager.Settings.Animate.ItemList_DelayTime; UpDownItemlistAnimateTime.Value = GHManager.Settings.Animate.ItemList_AnimateTime; CheckItemlistSlide.Checked = GHManager.Settings.Animate.ItemList_Slide; CheckItemlistFade.Checked = GHManager.Settings.Animate.ItemList_Fade; // キーボードページ Dictionary <int, string> ShortcutStrMap = new Dictionary <int, string> { { GH_SHID.Show, "表示" }, { GH_SHID.Hide, "非表示" }, { GH_SHID.ShowConfig, "設定を表示" }, { GH_SHID.OpenSelectItem, "選択項目を実行" }, { GH_SHID.DeleteSelectItem, "選択項目を削除" }, { GH_SHID.SelectNextItem, "次の項目を選択" }, { GH_SHID.SelectPrevItem, "前の項目を選択" }, { GH_SHID.SelectNextGroup, "次のグループを選択" }, { GH_SHID.SelectPrevGroup, "前のグループを選択" }, { GH_SHID.SelectGroupTile, "グループのウィンドウを左右に並べて表示" }, { GH_SHID.SelectGroupTile2, "グループのウィンドウを上下に並べて表示" } }; foreach (var item in GHManager.Settings.Hotkey.HotKeys.Select((kv, i) => new { kv, i })) { if (item.i > ListViewShortcut.Items.Count) { break; } string keystr = KeysToString(item.kv.Value.ModKey, item.kv.Value.Key); ListViewShortcut.Items[item.i].SubItems[1].Text = keystr; ListViewShortcut.Items[item.i].Tag = item.kv.Key; ListViewShortcut.Items[item.i].Text = ShortcutStrMap[item.kv.Key]; PrevKeyStr.Add(item.kv.Key, keystr); } Dictionary <uint, string> wpKeyMap = new Dictionary <uint, string> { { (uint)Keys.Menu, "Alt" }, { (uint)Keys.ControlKey, "Ctrl" }, { (uint)Keys.ShiftKey, "Shift" } }; uint[] key = new uint[2] { (uint)Keys.ShiftKey, (uint)Keys.ControlKey }; if (wpKeyMap.ContainsKey(GHManager.TempSettings.Magnet.GroupKey)) { key[0] = GHManager.TempSettings.Magnet.GroupKey; } if (wpKeyMap.ContainsKey(GHManager.TempSettings.Magnet.MoveKey)) { key[1] = GHManager.TempSettings.Magnet.MoveKey; } ((RadioButton)PanelGroup.Controls["RadioButtonGroup" + wpKeyMap[key[0]]]).Checked = true; ((RadioButton)PanelMove.Controls["RadioButtonMove" + wpKeyMap[key[0]]]).Enabled = false; ((RadioButton)PanelGroup.Controls["RadioButtonGroup" + wpKeyMap[key[1]]]).Enabled = false; ((RadioButton)PanelMove.Controls["RadioButtonMove" + wpKeyMap[key[1]]]).Checked = true; // マグネットページ TrackBarFitRange.Value = GHManager.Settings.Magnet.FitRange; LabelFitRange.Text = TrackBarFitRange.Value.ToString() + "px"; CheckFitScreen.Checked = GHManager.Settings.Magnet.FitDisplay; CheckFitTaskbar.Checked = GHManager.Settings.Magnet.FitTaskbar; CheckFitWindow.Checked = GHManager.Settings.Magnet.FitWindows; //Dll.GetNoFitWindows(GHManager.settings.Magnet.NoFitWindows, 255); long[] arr = new long[255]; Dll.GetAllWindows(arr); StringBuilder windowText = new StringBuilder(255); StringBuilder className = new StringBuilder(255); for (int i = 0; i < 255; ++i) { if (WinAPI.GetWindowText((IntPtr)arr[i], windowText, 255) != 0 && WinAPI.GetClassName((IntPtr)arr[i], className, 255) != 0) { ListBoxWindows.Items.Add("[" + i.ToString("000") + "] [class:" + className.ToString() + "] [caption:" + windowText.ToString() + "]"); } } //for(int i = 0; i < 255; ++i) { // if (GHManager.settings.Magnet.NoFitWindows[i].classname != "" && // GHManager.settings.Magnet.NoFitWindows[i].text != "") { // ListBoxNoFitWindows.Items.Add("[" + i.ToString("000") + "] [class:" + GHManager.settings.Magnet.NoFitWindows[i].classname + "] [caption:" + GHManager.settings.Magnet.NoFitWindows[i].text + "]"); // } //} // スタイルページ UpDownLauncherItemSize.Value = GHManager.Settings.Style.Launcher.ItemSize; UpDownLauncherItemSpace.Value = GHManager.Settings.Style.Launcher.ItemSpace; ComboBoxGroupIcon.SelectedIndex = GHManager.Settings.GroupIconStyle; UpDownMysetItemSize.Value = GHManager.Settings.Style.MysetList.ItemSize; UpDownMysetItemSpace.Value = GHManager.Settings.Style.MysetList.ItemSpace; ComboBoxMysetIcon.SelectedIndex = GHManager.Settings.MysetIconStyle; UpDownItemListItemSizeHeight.Value = GHManager.Settings.Style.ItemList.ItemSizeHeight; UpDownItemListItemSizeWidth.Value = GHManager.Settings.Style.ItemList.ItemSizeWidth; UpDownItemListItemSpace.Value = GHManager.Settings.Style.ItemList.ItemSpace; UpDownItemList_Column.Value = GHManager.Settings.Style.ItemList.Column; UpDownItemListIconSize.Value = GHManager.Settings.Style.ItemList.IconSize; ComboboxUseIconSize.Text = GHManager.Settings.Style.ItemList.GetUseIconSize().ToString(); ComboBoxDrawQuality.SelectedIndex = GHManager.Settings.DrawQuality; Load_Skin(); }