mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-20 21:08:08 +01:00
added menu item objetc
This commit is contained in:
296
WINGs/wmenuitem.c
Normal file
296
WINGs/wmenuitem.c
Normal file
@@ -0,0 +1,296 @@
|
||||
|
||||
|
||||
|
||||
|
||||
#include "WINGsP.h"
|
||||
|
||||
|
||||
|
||||
typedef struct W_MenuItem {
|
||||
char *title;
|
||||
|
||||
WMPixmap *image;
|
||||
|
||||
char *shortcutKey;
|
||||
int shortcutModifierMask;
|
||||
|
||||
WMAction *action;
|
||||
void *data;
|
||||
|
||||
struct W_Menu *submenu;
|
||||
|
||||
void *object;
|
||||
|
||||
WMPixmap *onStateImage;
|
||||
WMPixmap *offStateImage;
|
||||
WMPixmap *mixedStateImage;
|
||||
|
||||
struct {
|
||||
unsigned enabled:1;
|
||||
unsigned state:2;
|
||||
} flags;
|
||||
} MenuItem;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
WMMenuItem*
|
||||
WMGetSeparatorMenuItem(void)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
Bool
|
||||
WMMenuItemIsSeparator(WMMenuItem *item)
|
||||
{
|
||||
return False;
|
||||
}
|
||||
|
||||
|
||||
WMMenuItem*
|
||||
WMCreateMenuItem(void)
|
||||
{
|
||||
WMMenuItem *item;
|
||||
|
||||
item = wmalloc(sizeof(WMMenuItem));
|
||||
memset(item, 0, sizeof(WMMenuItem));
|
||||
|
||||
item->flags.enabled = 1;
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
WMDestroyMenuItem(WMMenuItem *item)
|
||||
{
|
||||
if (item->title)
|
||||
free(item->title);
|
||||
|
||||
if (item->image)
|
||||
WMReleasePixmap(item->image);
|
||||
|
||||
if (item->shortcutKey)
|
||||
free(item->shortcutKey);
|
||||
|
||||
if (item->onStateImage)
|
||||
WMReleasePixmap(item->onStateImage);
|
||||
|
||||
if (item->offStateImage)
|
||||
WMReleasePixmap(item->offStateImage);
|
||||
|
||||
if (item->mixedStateImage)
|
||||
WMReleasePixmap(item->mixedStateImage);
|
||||
}
|
||||
|
||||
|
||||
Bool
|
||||
WMGetMenuItemEnabled(WMMenuItem *item)
|
||||
{
|
||||
return item->flags.enabled;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
WMSetMenuItemEnabled(WMMenuItem *item, Bool flag)
|
||||
{
|
||||
item->flags.enabled = flag;
|
||||
}
|
||||
|
||||
|
||||
char*
|
||||
WMGetMenuItemShortcut(WMMenuItem *item)
|
||||
{
|
||||
return item->shortcutKey;
|
||||
}
|
||||
|
||||
|
||||
unsigned
|
||||
WMGetMenuItemShortcutModifierMask(WMMenuItem *item)
|
||||
{
|
||||
return item->shortcutModifierMask;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void
|
||||
WMSetMenuItemShortcut(WMMenuItem *item, char *shortcut)
|
||||
{
|
||||
if (item->shortcutKey)
|
||||
wfree(item->shortcutKey);
|
||||
|
||||
item->shortcutKey = wstrdup(shortcut);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
WMSetMenuItemShortcutModifierMask(WMMenuItem *item, unsigned mask)
|
||||
{
|
||||
item->shortcutModifierMask = mask;
|
||||
}
|
||||
|
||||
|
||||
void*
|
||||
WMGetMenuItemRepresentedObject(WMMenuItem *item)
|
||||
{
|
||||
return item->object;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
WMSetMenuItemRepresentedObject(WMMenuItem *item, void *object)
|
||||
{
|
||||
item->object = object;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
WMSetMenuItemAction(WMMenuItem *item, WMAction *action, void *data)
|
||||
{
|
||||
item->action = action;
|
||||
item->data = data;
|
||||
}
|
||||
|
||||
|
||||
WMAction*
|
||||
WMGetMenuItemAction(WMMenuItem *item)
|
||||
{
|
||||
return item->action;
|
||||
}
|
||||
|
||||
|
||||
void*
|
||||
WMGetMenuItemData(WMMenuItem *item)
|
||||
{
|
||||
return item->data;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
WMSetMenuItemTitle(WMMenuItem *item, char *title)
|
||||
{
|
||||
if (item->title)
|
||||
wfree(item->title);
|
||||
|
||||
if (title)
|
||||
item->title = wstrdup(title);
|
||||
else
|
||||
item->title = NULL;
|
||||
}
|
||||
|
||||
|
||||
char*
|
||||
WMGetMenuItemTitle(WMMenuItem *item)
|
||||
{
|
||||
return item->title;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
WMSetMenuItemState(WMMenuItem *item, int state)
|
||||
{
|
||||
item->flags.state = state;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
WMGetMenuItemState(WMMenuItem *item)
|
||||
{
|
||||
return item->flags.state;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
WMSetMenuItemPixmap(WMMenuItem *item, WMPixmap *pixmap)
|
||||
{
|
||||
if (item->image)
|
||||
WMReleasePixmap(item->image);
|
||||
|
||||
item->image = WMRetainPixmap(pixmap);
|
||||
}
|
||||
|
||||
|
||||
WMPixmap*
|
||||
WMGetMenuItemPixmap(WMMenuItem *item)
|
||||
{
|
||||
return item->image;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
WMSetMenuItemOnStatePixmap(WMMenuItem *item, WMPixmap *pixmap)
|
||||
{
|
||||
if (item->onStateImage)
|
||||
WMReleasePixmap(item->onStateImage);
|
||||
|
||||
item->onStateImage = WMRetainPixmap(pixmap);
|
||||
}
|
||||
|
||||
|
||||
WMPixmap*
|
||||
WMGetMenuItemOnStatePixmap(WMMenuItem *item)
|
||||
{
|
||||
return item->onStateImage;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
WMSetMenuItemOffStatePixmap(WMMenuItem *item, WMPixmap *pixmap)
|
||||
{
|
||||
if (item->offStateImage)
|
||||
WMReleasePixmap(item->offStateImage);
|
||||
|
||||
item->offStateImage = WMRetainPixmap(pixmap);
|
||||
}
|
||||
|
||||
|
||||
WMPixmap*
|
||||
WMGetMenuItemOffStatePixmap(WMMenuItem *item)
|
||||
{
|
||||
return item->offStateImage;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void
|
||||
WMSetMenuItemMixedStatePixmap(WMMenuItem *item, WMPixmap *pixmap)
|
||||
{
|
||||
if (item->mixedStateImage)
|
||||
WMReleasePixmap(item->mixedStateImage);
|
||||
|
||||
item->mixedStateImage = WMRetainPixmap(pixmap);
|
||||
}
|
||||
|
||||
|
||||
WMPixmap*
|
||||
WMGetMenuItemMixedStatePixmap(WMMenuItem *item)
|
||||
{
|
||||
return item->mixedStateImage;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
void
|
||||
WMSetMenuItemSubmenu(WMMenuItem *item, WMMenu *submenu)
|
||||
{
|
||||
item->submenu = submenu;
|
||||
}
|
||||
|
||||
|
||||
WMMenu*
|
||||
WMGetMenuItemSubmenu(WMMenuItem *item)
|
||||
{
|
||||
return item->submenu;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Bool
|
||||
WMGetMenuItemHasSubmenu(WMMenuItem *item)
|
||||
{
|
||||
return item->submenu != NULL;
|
||||
}
|
||||
|
||||
*/
|
||||
Reference in New Issue
Block a user