Exemple #1
0
 public override void HandleEvent(ref Event Event)
 {
     base.HandleEvent(ref Event);
     if (Event.What == Event.MouseDown)
     {
         FocusLink(ref Event);
     }
     else
     if (Event.What == Event.KeyDown)
     {
         char C = HotKey(Text);
         if ((Drivers.GetAltCode(C) == (char)Event.KeyCode) ||
             ((C != '\x0000') && (Owner.Phase == Phases.phPostProcess) && (char.ToUpper((char)Event.CharCode) == C)))
         {
             FocusLink(ref Event);
         }
     }
     else
     {
         if (Event.What == Event.Broadcast)
         {
             if (((Event.Command == cmReceivedFocus) || (Event.Command == cmReleasedFocus)) && (Link != null))
             {
                 Light = (Link.State & StateFlags.Focused) != 0;
                 DrawView();
             }
         }
     }
 }
Exemple #2
0
        public override void HandleEvent(ref Event Event)
        {
            Point Mouse;
            bool  Down;
            char  C;

            Rect ClickRect = GetExtent();

            ClickRect.A.X++;
            ClickRect.B.X--;
            ClickRect.B.Y--;
            if (Event.What == Event.MouseDown)
            {
                Mouse = MakeLocal(Event.Where);
                if (!ClickRect.Contains(Mouse))
                {
                    ClearEvent(ref Event);
                }
            }
            if ((Flags & ButtonFlags.GrabFocus) != 0)
            {
                base.HandleEvent(ref Event);
            }
            switch (Event.What)
            {
            case Event.MouseDown:
            {
                if ((State & StateFlags.Disabled) == 0)
                {
                    ClickRect.B.X++;
                    Down = false;
                    do
                    {
                        Mouse = MakeLocal(Event.Where);
                        if (Down != ClickRect.Contains(Mouse))
                        {
                            Down = !Down;
                            DrawState(Down);
                        }
                    }while(MouseEvent(ref Event, Event.MouseMove));
                    if (Down)
                    {
                        Press();
                        DrawState(false);
                    }
                }
                ClearEvent(ref Event);
            }
            break;

            case Event.KeyDown:
                if (Title != "")
                {
                    C = HotKey(Title);
                    if ((Event.KeyCode == (KeyboardKeys)Drivers.GetAltCode(C)) ||
                        ((Owner.Phase == Phases.phPostProcess) && (C != '\x00') &&
                         (char.ToUpper((char)Event.CharCode) == C)) ||
                        (((State & StateFlags.Focused) != 0) && (Event.CharCode == ' ')))
                    {
                        Press();
                        ClearEvent(ref Event);
                    }
                }
                break;

            case Event.Broadcast:
                switch (Event.Command)
                {
                case cmDefault:
                    if (AmDefault && ((State & StateFlags.Disabled) == 0))
                    {
                        Press();
                        ClearEvent(ref Event);
                    }
                    break;

                case cmGrabDefault:
                case cmReleaseDefault:
                    if ((Flags & ButtonFlags.Default) != 0)
                    {
                        AmDefault = Event.Command == cmReleaseDefault;
                        DrawView();
                    }
                    break;

                case cmCommandSetChanged:
                {
                    SetState(StateFlags.Disabled, !CommandEnabled(Command));
                    DrawView();
                }
                break;
                }
                break;
            }
        }
Exemple #3
0
        public override void HandleEvent(ref Event Event)
        {
            Point Mouse;

            base.HandleEvent(ref Event);
            if ((Options & OptionFlags.ofSelectable) == 0)
            {
                return;
            }
            if (Event.What == Event.MouseDown)
            {
                Mouse = MakeLocal(Event.Where);
                int I = FindSel(Mouse);
                if (I != -1)
                {
                    if (ButtonState(I))
                    {
                        Sel = I;
                    }
                }
                DrawView();
                do
                {
                    Mouse = MakeLocal(Event.Where);
                    if (FindSel(Mouse) == Sel)
                    {
                        ShowCursor();
                    }
                    else
                    {
                        HideCursor();
                    }
                } while (MouseEvent(ref Event, Event.MouseMove));
                ShowCursor();
                Mouse = MakeLocal(Event.Where);
                if ((FindSel(Mouse) == Sel) && (ButtonState(Sel)))
                {
                    Press(Sel);
                    DrawView();
                }
                ClearEvent(ref Event);
            }
            else if (Event.What == Event.KeyDown)
            {
                int S = Sel;
                switch (Drivers.CtrlToArrow(Event.KeyCode))
                {
                case KeyboardKeys.Up:
                    if ((State & StateFlags.Focused) != 0)
                    {
                        int I = 0;
                        do
                        {
                            I++;
                            S--;
                            if (S < 0)
                            {
                                S = Strings.Count - 1;
                            }
                        }while(!(ButtonState(S) || (I > Strings.Count)));
                        MoveSel(I, S);
                        ClearEvent(ref Event);
                    }
                    break;

                case KeyboardKeys.Down:
                    if ((State & StateFlags.Focused) != 0)
                    {
                        int I = 0;
                        do
                        {
                            I++;
                            S++;
                            if (S >= Strings.Count)
                            {
                                S = 0;
                            }
                        } while (!(ButtonState(S) || (I > Strings.Count)));
                        MoveSel(I, S);
                        ClearEvent(ref Event);
                    }
                    break;

                case KeyboardKeys.Right:
                    if ((State & StateFlags.Focused) != 0)
                    {
                        int I = 0;
                        do
                        {
                            I++;
                            S += Size.Y;
                            if (S > Strings.Count)
                            {
                                S = (S + 1) % Size.Y;
                                if (S >= Strings.Count)
                                {
                                    S = 0;
                                }
                            }
                        } while (!(ButtonState(S) || (I > Strings.Count)));
                        MoveSel(I, S);
                        ClearEvent(ref Event);
                    }
                    break;

                case KeyboardKeys.Left:
                    if ((State & StateFlags.Focused) != 0)
                    {
                        int I = 0;
                        do
                        {
                            I++;
                            if (S > 0)
                            {
                                S -= Size.Y;
                                if (S < 0)
                                {
                                    S = ((Strings.Count + Size.Y - 1) / Size.Y) * Size.Y + S - 1;
                                    if (S >= Strings.Count)
                                    {
                                        S = Strings.Count - 1;
                                    }
                                }
                            }
                            else
                            {
                                S = Strings.Count - 1;
                            }
                        } while (!(ButtonState(S) || (I > Strings.Count)));
                        MoveSel(I, S);
                        ClearEvent(ref Event);
                    }
                    break;

                default:
                {
                    for (int I = 0; I < Strings.Count; I++)
                    {
                        char C = HotKey(Strings[I]);
                        if ((Drivers.GetAltCode(C) == (uint)Event.KeyCode) ||
                            (((Owner.Phase == Phases.phPostProcess) || ((State & StateFlags.Focused) != 0)) &&
                             (C != '\x0000') && (char.ToUpper((char)Event.CharCode) == C)))
                        {
                            if (ButtonState(I))
                            {
                                if (Focus())
                                {
                                    Sel = I;
                                    MovedTo(Sel);
                                    Press(Sel);
                                    DrawView();
                                }
                                ClearEvent(ref Event);
                            }
                            return;
                        }
                    }
                    if ((Event.CharCode == ' ') && ((State & StateFlags.Focused) != 0) && ButtonState(Sel))
                    {
                        Press(Sel);
                        DrawView();
                        ClearEvent(ref Event);
                    }
                }
                break;
                }
            }
        }