Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
 /// <summary>
 /// ランチャーが終了する時のイベント (後処理)
 /// </summary>
 private void Launcher_FormClosing(object sender, FormClosingEventArgs e)
 {
     // フックを解除
     Dll.EndHook();
     MysetManager.SaveMyset();
     GHManager.SaveSetting();
     GHManager.UnregistHotKey(Handle);
 }
Ejemplo n.º 4
0
 static void Main()
 {
     Application.EnableVisualStyles();
     Application.SetCompatibleTextRenderingDefault(false);
     if (GHManager.Initialize() == 0)
     {
         Application.Run(GHManager.Launcher);
     }
     else
     {
         MessageBox.Show("アプリケーションの起動に失敗しました。", "Error");
     }
 }
Ejemplo n.º 5
0
        /// <summary>
        /// 更新を行うタイマーイベント 低速 500ms
        /// </summary>
        private void UpdateTimer_Tick(object sender, EventArgs e)
        {
            // 設定の確定
            GHManager.Commit();
            // 更新
            GHFormUpdate();
            GHManager.ItemList.GHFormUpdate();
            GHManager.MysetList.GHFormUpdate();

            if (FormVisible)
            {
                // グループとグループアイテムの情報を更新
                GroupManager.UpdateGroup();
            }
        }
Ejemplo n.º 6
0
 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;
     }
 }
Ejemplo n.º 7
0
        // ショートカットキー入力の確定
        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);
        }
Ejemplo n.º 8
0
        /// <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);
            }
        }
Ejemplo n.º 9
0
        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);
            }
        }
Ejemplo n.º 10
0
 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();
             }
         }
     }
 }
Ejemplo n.º 11
0
        /// <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();
        }
Ejemplo n.º 12
0
 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();
         }
     }
 }
Ejemplo n.º 13
0
        /// <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);
            }
        }
Ejemplo n.º 14
0
        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();
                        }
                    }
                }
            }
        }
Ejemplo n.º 15
0
 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();
             }
         }
     }
 }
Ejemplo n.º 16
0
        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();
        }