PreviousUpNext

15.4.874  src/lib/src/gtk-event.pkg

# gtk-event.pkg

# Compiled by:
#     src/lib/std/standard.lib


package gtk_event {
    #
    exception GTK_ERROR String;

    Widget = Int;

    Modifier
        = SHIFT_MODIFIER
        | LOCK_MODIFIER
        | CONTROL_MODIFIER
        | MOD1_MODIFIER
        | MOD2_MODIFIER
        | MOD3_MODIFIER
        | MOD4_MODIFIER
        | MOD5_MODIFIER
        | BUTTON1_MODIFIER
        | BUTTON2_MODIFIER
        | BUTTON3_MODIFIER
        | BUTTON4_MODIFIER
        | BUTTON5_MODIFIER
        | SUPER_MODIFIER
        | HYPER_MODIFIER
        | META_MODIFIER
        ;

    Motion_Event                                                                                #                               http://library.gnome.org/devel/gdk/stable/gdk-Event-Structures.html#GdkEventMotion
        =
        { window:    Widget,
          time:      Int,
          x:         Float,
          y:         Float,
          modifiers: List( Modifier ),
          is_hint:   Bool
        };

    Button_Event                                                                                #                               http://library.gnome.org/devel/gdk/stable/gdk-Event-Structures.html#GdkEventButton
        =
        { window:    Widget,
          button:    Int,
          x:         Float,
          y:         Float,
          time:      Int,
          modifiers: List( Modifier )
        };

    Key_Event                                                                                   #                               http://library.gnome.org/devel/gdk/stable/gdk-Event-Structures.html#GdkEventKey
        =
        { key:       Int,
          keycode:   Int,
          time:      Int,
          modifiers: List( Modifier )
        };

    Expose_Event                                                                                #                               http://library.gnome.org/devel/gdk/stable/gdk-Event-Structures.html#GdkEventExpose      
        =
        { window:    Widget,
          count:     Int,
          x:         Int,
          y:         Int,
          wide:      Int,
          high:      Int
        };

    Configure_Event                                                                             #                               http://library.gnome.org/devel/gdk/stable/gdk-Event-Structures.html#GdkEventConfigure
        =
        { window:    Widget,
          x:         Int,
          y:         Int,
          wide:      Int,
          high:      Int
        };

    Allocation
        =
        { x:         Int,
          y:         Int,
          wide:      Int,
          high:      Int
        };

    # Break out a C-style GdkModifierType bitbag                http://library.gnome.org/devel/gdk/stable/gdk-Windows.html#GdkModifierType
    # into a more Mythryl-ish list:
    #
    fun int_to_modifier_list  bits
        =
        {   fun bit n
                =
                (bits & (1 << n)) != 0;

            result = [];

            result =   bit 28    ??      META_MODIFIER ! result   ::   result;
            result =   bit 27    ??     HYPER_MODIFIER ! result   ::   result;
            result =   bit 26    ??     SUPER_MODIFIER ! result   ::   result;
            result =   bit 12    ??   BUTTON5_MODIFIER ! result   ::   result;
            result =   bit 11    ??   BUTTON4_MODIFIER ! result   ::   result;
            result =   bit 10    ??   BUTTON3_MODIFIER ! result   ::   result;
            result =   bit  9    ??   BUTTON2_MODIFIER ! result   ::   result;
            result =   bit  8    ??   BUTTON1_MODIFIER ! result   ::   result;
            result =   bit  7    ??      MOD5_MODIFIER ! result   ::   result;
            result =   bit  6    ??      MOD4_MODIFIER ! result   ::   result;
            result =   bit  5    ??      MOD3_MODIFIER ! result   ::   result;
            result =   bit  4    ??      MOD2_MODIFIER ! result   ::   result;
            result =   bit  3    ??      MOD1_MODIFIER ! result   ::   result;
            result =   bit  2    ??   CONTROL_MODIFIER ! result   ::   result;
            result =   bit  1    ??      LOCK_MODIFIER ! result   ::   result;
            result =   bit  0    ??     SHIFT_MODIFIER ! result   ::   result;

            result;
        };
};


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext