0.51.1 pre snapshot. Be careful, it may be buggy. It fixes some bugs though.
[wmaker-crm.git] / WINGs / WINGs.h
blob55c5c32234d9f55668bac5a4629b569331c82a98
3 #ifndef _WINGS_H_
4 #define _WINGS_H_
6 #include <wraster.h>
7 #include <X11/Xlib.h>
9 #define WINGS_H_VERSION 981220
12 #ifdef __cplusplus
13 extern "C" {
14 #endif /* __cplusplus */
15 #if 0
17 #endif
20 typedef unsigned long WMPixel;
23 typedef struct {
24 unsigned int width;
25 unsigned int height;
26 } WMSize;
28 typedef struct {
29 int x;
30 int y;
31 } WMPoint;
33 typedef struct {
34 WMPoint pos;
35 WMSize size;
36 } WMRect;
38 typedef struct {
39 int position;
40 int count;
41 } WMRange;
44 #define ClientMessageMask (1L<<30)
47 /* window stacking level */
48 enum {
49 WMNormalWindowLevel = 0,
50 WMFloatingWindowLevel = 3,
51 WMDockWindowLevel = 5,
52 WMSubmenuWindowLevel = 10,
53 WMMainMenuWindowLevel = 20
56 /* window attributes */
57 enum {
58 WMBorderlessWindowMask = 0,
59 WMTitledWindowMask = 1,
60 WMClosableWindowMask = 2,
61 WMMiniaturizableWindowMask = 4,
62 WMResizableWindowMask = 8
66 /* button types */
67 typedef enum {
68 /* 0 is reserved for internal use */
69 WBTMomentaryPush = 1,
70 WBTPushOnPushOff = 2,
71 WBTToggle = 3,
72 WBTSwitch = 4,
73 WBTRadio = 5,
74 WBTMomentaryChange = 6,
75 WBTOnOff = 7,
76 WBTMomentaryLight = 8
77 } WMButtonType;
79 /* button behaviour masks */
80 enum {
81 WBBSpringLoadedMask = (1 << 0),
82 WBBPushInMask = (1 << 1),
83 WBBPushChangeMask = (1 << 2),
84 WBBPushLightMask = (1 << 3),
85 WBBStateLightMask = (1 << 5),
86 WBBStateChangeMask = (1 << 6),
87 WBBStatePushMask = (1 << 7)
91 /* frame title positions */
92 typedef enum {
93 WTPNoTitle,
94 WTPAboveTop,
95 WTPAtTop,
96 WTPBelowTop,
97 WTPAboveBottom,
98 WTPAtBottom,
99 WTPBelowBottom
100 } WMTitlePosition;
103 /* relief types */
104 typedef enum {
105 WRFlat,
106 WRSimple,
107 WRRaised,
108 WRSunken,
109 WRGroove,
110 WRRidge,
111 WRPushed
112 } WMReliefType;
115 /* alignment types */
116 typedef enum {
117 WALeft,
118 WACenter,
119 WARight,
120 WAJustified /* not valid for textfields */
121 } WMAlignment;
124 /* image position */
125 typedef enum {
126 WIPNoImage,
127 WIPImageOnly,
128 WIPLeft,
129 WIPRight,
130 WIPBelow,
131 WIPAbove,
132 WIPOverlaps
133 } WMImagePosition;
136 /* scroller arrow position */
137 typedef enum {
138 WSAMaxEnd,
139 WSAMinEnd,
140 WSANone
141 } WMScrollArrowPosition;
143 /* scroller parts */
144 typedef enum {
145 WSNoPart,
146 WSDecrementPage,
147 WSIncrementPage,
148 WSDecrementLine,
149 WSIncrementLine,
150 WSKnob,
151 WSKnobSlot
152 } WMScrollerPart;
154 /* usable scroller parts */
155 typedef enum {
156 WSUNoParts,
157 WSUOnlyArrows,
158 WSUAllParts
159 } WMUsableScrollerParts;
161 /* matrix types */
162 typedef enum {
163 WMMRadioMode,
164 WMMHighlightMode,
165 WMMListMode,
166 WMMTrackMode
167 } WMMatrixTypes;
170 /* text movement types */
171 enum {
172 WMIllegalTextMovement,
173 WMReturnTextMovement,
174 WMTabTextMovement,
175 WMBacktabTextMovement,
176 WMLeftTextMovement,
177 WMRightTextMovement,
178 WMUpTextMovement,
179 WMDownTextMovement
182 /* text field special events */
183 enum {
184 WMSetTextEvent,
185 WMInsertTextEvent,
186 WMDeleteTextEvent
190 typedef enum {
191 WMGrayModeColorPanel,
192 WMRGBModeColorPanel,
193 WMCMYKModeColorPanel,
194 WMHSBModeColorPanel,
195 WMCustomPaletteModeColorPanel,
196 WMColorListModeColorPanel,
197 WMWheelModeColorPanel
198 } WMColorPanelMode;
202 /* system images */
203 #define WSIReturnArrow 1
204 #define WSIHighlightedReturnArrow 2
205 #define WSIScrollerDimple 3
206 #define WSIArrowLeft 4
207 #define WSIHighlightedArrowLeft 5
208 #define WSIArrowRight 6
209 #define WSIHighlightedArrowRight 7
210 #define WSIArrowUp 8
211 #define WSIHighlightedArrowUp 9
212 #define WSIArrowDown 10
213 #define WSIHighlightedArrowDown 11
214 #define WSICheckMark 12
216 enum {
217 WLDSSelected = (1 << 16),
218 WLDSDisabled = (1 << 17),
219 WLDSFocused = (1 << 18),
220 WLDSIsBranch = (1 << 19)
223 /* alert panel return values */
224 enum {
225 WAPRDefault = 0,
226 WAPRAlternate = 1,
227 WAPROther = -1,
228 WAPRError = -2
233 /* types of input observers */
234 enum {
235 WIReadMask = (1 << 0),
236 WIWriteMask = (1 << 1),
237 WIExceptMask = (1 << 2)
242 typedef int W_Class;
244 enum {
245 WC_Window = 0,
246 WC_Frame = 1,
247 WC_Label = 2,
248 WC_Button = 3,
249 WC_TextField = 4,
250 WC_Scroller = 5,
251 WC_ScrollView = 6,
252 WC_List = 7,
253 WC_Browser = 8,
254 WC_PopUpButton = 9,
255 WC_ColorWell = 10,
256 WC_Slider = 11,
257 WC_Matrix = 12, /* not ready */
258 WC_SplitView = 13
261 /* All widgets must start with the following structure
262 * in that order. Used for typecasting to get some generic data */
263 typedef struct W_WidgetType {
264 W_Class widgetClass;
265 struct W_View *view;
267 } W_WidgetType;
270 #define WMWidgetClass(widget) (((W_WidgetType*)(widget))->widgetClass)
271 #define WMWidgetView(widget) (((W_WidgetType*)(widget))->view)
274 /* widgets */
276 typedef void WMWidget;
278 typedef struct W_Pixmap WMPixmap;
279 typedef struct W_Font WMFont;
280 typedef struct W_Color WMColor;
282 typedef struct W_Screen WMScreen;
284 typedef struct W_View WMView;
286 typedef struct W_Window WMWindow;
287 typedef struct W_Frame WMFrame;
288 typedef struct W_Button WMButton;
289 typedef struct W_Label WMLabel;
290 typedef struct W_TextField WMTextField;
291 typedef struct W_Scroller WMScroller;
292 typedef struct W_ScrollView WMScrollView;
293 typedef struct W_List WMList;
294 typedef struct W_Browser WMBrowser;
295 typedef struct W_PopUpButton WMPopUpButton;
296 typedef struct W_ColorWell WMColorWell;
297 typedef struct W_Slider WMSlider;
298 typedef struct W_Matrix WMMatrix; /* not ready */
299 typedef struct W_SplitView WMSplitView;
301 /* not widgets */
302 typedef struct W_FilePanel WMFilePanel;
303 typedef WMFilePanel WMOpenPanel;
304 typedef WMFilePanel WMSavePanel;
306 typedef struct W_FontPanel WMFontPanel;
308 typedef struct W_ColorPanel WMColorPanel;
311 /* item for WMList */
312 typedef struct WMListItem {
313 char *text;
314 void *clientData; /* ptr for user clientdata. */
316 struct WMListItem *nextPtr;
318 unsigned int uflags:16; /* flags for the user */
319 unsigned int selected:1;
320 unsigned int disabled:1;
321 unsigned int isBranch:1;
322 unsigned int loaded:1;
323 } WMListItem;
325 /* struct for message panel */
326 typedef struct WMAlertPanel {
327 WMWindow *win; /* window */
328 WMButton *defBtn; /* default button */
329 WMButton *altBtn; /* alternative button */
330 WMButton *othBtn; /* other button */
331 WMLabel *iLbl; /* icon label */
332 WMLabel *tLbl; /* title label */
333 WMLabel *mLbl; /* message label */
334 WMFrame *line; /* separator */
335 short result; /* button that was pushed */
336 short done;
338 KeyCode retKey;
339 } WMAlertPanel;
342 typedef struct WMInputPanel {
343 WMWindow *win; /* window */
344 WMButton *defBtn; /* default button */
345 WMButton *altBtn; /* alternative button */
346 WMLabel *tLbl; /* title label */
347 WMLabel *mLbl; /* message label */
348 WMTextField *text; /* text field */
349 short result; /* button that was pushed */
350 short done;
352 KeyCode retKey;
353 } WMInputPanel;
361 typedef void *WMHandlerID;
363 typedef void WMInputProc(int fd, int mask, void *clientData);
365 typedef void WMEventProc(XEvent *event, void *clientData);
367 typedef void WMEventHook(XEvent *event);
369 /* self is set to the widget from where the callback is being called and
370 * clientData to the data set to with WMSetClientData() */
371 typedef void WMAction(WMWidget *self, void *clientData);
374 typedef void WMCallback(void *data);
377 /* delegate method like stuff */
378 typedef void WMFreeDataProc(void *data);
380 typedef void WMListDrawProc(WMList *lPtr, int index, Drawable d, char *text,
381 int state, WMRect *rect);
384 typedef void WMSplitViewResizeSubviewsProc(WMSplitView *sPtr,
385 unsigned int oldWidth,
386 unsigned int oldHeight);
389 typedef void WMSplitViewConstrainProc(WMSplitView *sPtr, int dividerIndex,
390 int *minCoordinate, int *maxCoordinate);
392 typedef WMWidget *WMMatrixCreateCellProc(WMMatrix *mPtr);
395 typedef void WMBrowserFillColumnProc(WMBrowser *bPtr, int column);
398 typedef Bool WMConvertSelectionProc(WMWidget *w, Atom selection, Atom target,
399 Atom *type, void **value, unsigned *length,
400 int *format);
402 typedef void WMLoseSelectionProc(WMWidget *w, Atom selection);
404 typedef void WMSelectionDoneProc(WMWidget *w, Atom selection, Atom target);
406 /* ....................................................................... */
410 void WMInitializeApplication(char *applicationName, int *argc, char **argv);
412 void WMSetApplicationDataPath(char *path);
414 /* don't free the returned string */
415 char *WMGetApplicationName();
417 /* Try to locate resource file. ext may be NULL */
418 char *WMPathForResourceOfType(char *resource, char *ext);
420 WMScreen *WMCreateScreenWithRContext(Display *display, int screen,
421 RContext *context);
423 WMScreen *WMCreateScreen(Display *display, int screen);
425 WMScreen *WMCreateSimpleApplicationScreen(Display *display);
427 void WMScreenMainLoop(WMScreen *scr);
430 RContext *WMScreenRContext(WMScreen *scr);
432 Display *WMScreenDisplay(WMScreen *scr);
434 int WMScreenDepth(WMScreen *scr);
438 void WMSetApplicationIconImage(WMScreen *app, WMPixmap *icon);
440 WMPixmap *WMGetApplicationIconImage(WMScreen *app);
442 void WMSetFocusToWidget(WMWidget *widget);
444 WMEventHook *WMHookEventHandler(WMEventHook *handler);
446 int WMHandleEvent(XEvent *event);
448 Bool WMScreenPending(WMScreen *scr);
450 void WMCreateEventHandler(WMView *view, unsigned long mask,
451 WMEventProc *eventProc, void *clientData);
453 void WMDeleteEventHandler(WMView *view, unsigned long mask,
454 WMEventProc *eventProc, void *clientData);
456 int WMIsDoubleClick(XEvent *event);
458 void WMNextEvent(Display *dpy, XEvent *event);
460 void WMMaskEvent(Display *dpy, long mask, XEvent *event);
462 WMHandlerID WMAddTimerHandler(int milliseconds, WMCallback *callback,
463 void *cdata);
465 void WMDeleteTimerWithClientData(void *cdata);
467 void WMDeleteTimerHandler(WMHandlerID handlerID);
469 WMHandlerID WMAddIdleHandler(WMCallback *callback, void *cdata);
471 void WMDeleteIdleHandler(WMHandlerID handlerID);
473 WMHandlerID WMAddInputHandler(int fd, int condition, WMInputProc *proc,
474 void *clientData);
476 void WMDeleteInputHandler(WMHandlerID handlerID);
478 /* ....................................................................... */
480 void WMDragImageFromView(WMView *view, WMPixmap *image, WMPoint atLocation,
481 WMSize mouseOffset, XEvent *event, Bool slideBack);
485 /* ....................................................................... */
487 WMFont *WMCreateFont(WMScreen *scrPtr, char *fontName);
489 WMFont *WMCreateFontInDefaultEncoding(WMScreen *scrPtr, char *fontName);
491 WMFont *WMRetainFont(WMFont *font);
493 void WMReleaseFont(WMFont *font);
495 unsigned int WMFontHeight(WMFont *font);
498 WMFont *WMUserFontOfSize(WMScreen *scrPtr, int size);
500 WMFont *WMUserFixedPitchFontOfSize(WMScreen *scrPtr, int size);
503 WMFont *WMSystemFontOfSize(WMScreen *scrPtr, int size);
505 WMFont *WMBoldSystemFontOfSize(WMScreen *scrPtr, int size);
507 XFontSet WMGetFontFontSet(WMFont *font);
509 /* ....................................................................... */
511 WMPixmap *WMRetainPixmap(WMPixmap *pixmap);
513 void WMReleasePixmap(WMPixmap *pixmap);
515 WMPixmap *WMCreatePixmapFromXPixmaps(WMScreen *scrPtr, Pixmap pixmap,
516 Pixmap mask, int width, int height,
517 int depth);
519 WMPixmap *WMCreatePixmapFromRImage(WMScreen *scrPtr, RImage *image,
520 int threshold);
522 WMPixmap *WMCreatePixmapFromXPMData(WMScreen *scrPtr, char **data);
524 WMSize WMGetPixmapSize(WMPixmap *pixmap);
526 WMPixmap *WMCreatePixmapFromFile(WMScreen *scrPtr, char *fileName);
528 WMPixmap *WMCreateBlendedPixmapFromFile(WMScreen *scrPtr, char *fileName,
529 RColor *color);
531 void WMDrawPixmap(WMPixmap *pixmap, Drawable d, int x, int y);
533 Pixmap WMGetPixmapXID(WMPixmap *pixmap);
535 Pixmap WMGetPixmapMaskXID(WMPixmap *pixmap);
537 WMPixmap *WMGetSystemPixmap(WMScreen *scr, int image);
539 /* ....................................................................... */
542 WMColor *WMDarkGrayColor(WMScreen *scr);
544 WMColor *WMGrayColor(WMScreen *scr);
546 WMColor *WMBlackColor(WMScreen *scr);
548 WMColor *WMWhiteColor(WMScreen *scr);
550 void WMSetColorInGC(WMColor *color, GC gc);
552 GC WMColorGC(WMColor *color);
554 WMPixel WMColorPixel(WMColor *color);
556 void WMPaintColorSwatch(WMColor *color, Drawable d, int x, int y,
557 unsigned int width, unsigned int height);
559 void WMReleaseColor(WMColor *color);
561 WMColor *WMRetainColor(WMColor *color);
563 WMColor *WMCreateRGBColor(WMScreen *scr, unsigned short red,
564 unsigned short green, unsigned short blue,
565 Bool exact);
567 WMColor *WMCreateNamedColor(WMScreen *scr, char *name, Bool exact);
569 unsigned short WMRedComponentOfColor(WMColor *color);
571 unsigned short WMGreenComponentOfColor(WMColor *color);
573 unsigned short WMBlueComponentOfColor(WMColor *color);
575 char *WMGetColorRGBDescription(WMColor *color);
577 /* ....................................................................... */
580 void WMDrawString(WMScreen *scr, Drawable d, GC gc, WMFont *font, int x,
581 int y, char *text, int length);
583 void WMDrawImageString(WMScreen *scr, Drawable d, GC gc, WMFont *font, int x,
584 int y, char *text, int length);
586 int WMWidthOfString(WMFont *font, char *text, int length);
590 /* ....................................................................... */
592 WMScreen *WMWidgetScreen(WMWidget *w);
594 void WMUnmapWidget(WMWidget *w);
596 void WMMapWidget(WMWidget *w);
598 void WMMoveWidget(WMWidget *w, int x, int y);
600 void WMResizeWidget(WMWidget *w, unsigned int width, unsigned int height);
602 void WMSetWidgetBackgroundColor(WMWidget *w, WMColor *color);
604 void WMMapSubwidgets(WMWidget *w);
606 void WMUnmapSubwidgets(WMWidget *w);
608 void WMRealizeWidget(WMWidget *w);
610 void WMDestroyWidget(WMWidget *widget);
612 void WMHangData(WMWidget *widget, void *data);
614 void *WMGetHangedData(WMWidget *widget);
616 unsigned int WMWidgetWidth(WMWidget *w);
618 unsigned int WMWidgetHeight(WMWidget *w);
620 Window WMWidgetXID(WMWidget *w);
622 Window WMViewXID(WMView *view);
624 void WMRedisplayWidget(WMWidget *w);
626 void WMSetViewNotifySizeChanges(WMView *view, Bool flag);
628 WMSize WMGetViewSize(WMView *view);
630 WMPoint WMGetViewPosition(WMView *view);
632 WMWidget *WMWidgetOfView(WMView *view);
634 /* notifications */
635 extern char *WMViewSizeDidChangeNotification;
637 extern char *WMViewRealizedNotification;
639 /* ....................................................................... */
641 WMWindow *WMCreateWindow(WMScreen *screen, char *name);
643 WMWindow *WMCreateWindowWithStyle(WMScreen *screen, char *name, int style);
645 WMWindow *WMCreatePanelWithStyleForWindow(WMWindow *owner, char *name,
646 int style);
648 WMWindow *WMCreatePanelForWindow(WMWindow *owner, char *name);
650 void WMChangePanelOwner(WMWindow *win, WMWindow *newOwner);
652 void WMSetWindowTitle(WMWindow *wPtr, char *title);
654 void WMSetWindowMiniwindowTitle(WMWindow *win, char *title);
656 void WMSetWindowMiniwindowImage(WMWindow *win, WMPixmap *pixmap);
658 void WMSetWindowCloseAction(WMWindow *win, WMAction *action, void *clientData);
660 void WMSetWindowMaxSize(WMWindow *win, unsigned width, unsigned height);
662 void WMSetWindowMinSize(WMWindow *win, unsigned width, unsigned height);
664 void WMSetWindowBaseSize(WMWindow *win, unsigned width, unsigned height);
666 void WMSetWindowResizeIncrements(WMWindow *win, unsigned wIncr, unsigned hIncr);
668 void WMSetWindowLevel(WMWindow *win, int level);
670 void WMSetWindowDocumentEdited(WMWindow *win, Bool flag);
672 void WMCloseWindow(WMWindow *win);
674 /* ....................................................................... */
676 void WMSetButtonAction(WMButton *bPtr, WMAction *action, void *clientData);
678 #define WMCreateCommandButton(parent) \
679 WMCreateCustomButton((parent), WBBSpringLoadedMask\
680 |WBBPushInMask\
681 |WBBPushLightMask\
682 |WBBPushChangeMask)
684 #define WMCreateRadioButton(parent) \
685 WMCreateButton((parent), WBTRadio)
687 #define WMCreateSwitchButton(parent) \
688 WMCreateButton((parent), WBTSwitch)
690 WMButton *WMCreateButton(WMWidget *parent, WMButtonType type);
692 WMButton *WMCreateCustomButton(WMWidget *parent, int behaviourMask);
694 void WMSetButtonImage(WMButton *bPtr, WMPixmap *image);
696 void WMSetButtonAltImage(WMButton *bPtr, WMPixmap *image);
698 void WMSetButtonImagePosition(WMButton *bPtr, WMImagePosition position);
700 void WMSetButtonFont(WMButton *bPtr, WMFont *font);
702 void WMSetButtonTextAlignment(WMButton *bPtr, WMAlignment alignment);
704 void WMSetButtonText(WMButton *bPtr, char *text);
706 void WMSetButtonAltText(WMButton *bPtr, char *text);
708 void WMSetButtonSelected(WMButton *bPtr, int isSelected);
710 int WMGetButtonSelected(WMButton *bPtr);
712 void WMSetButtonBordered(WMButton *bPtr, int isBordered);
714 void WMSetButtonEnabled(WMButton *bPtr, Bool flag);
716 void WMSetButtonTag(WMButton *bPtr, int tag);
718 void WMGroupButtons(WMButton *bPtr, WMButton *newMember);
720 void WMPerformButtonClick(WMButton *bPtr);
722 void WMSetButtonContinuous(WMButton *bPtr, Bool flag);
724 void WMSetButtonPeriodicDelay(WMButton *bPtr, float delay, float interval);
726 /* ....................................................................... */
728 WMLabel *WMCreateLabel(WMWidget *parent);
730 void WMSetLabelWraps(WMLabel *lPtr, Bool flag);
732 void WMSetLabelImage(WMLabel *lPtr, WMPixmap *image);
734 WMPixmap *WMGetLabelImage(WMLabel *lPtr);
736 void WMSetLabelImagePosition(WMLabel *lPtr, WMImagePosition position);
738 void WMSetLabelTextAlignment(WMLabel *lPtr, WMAlignment alignment);
740 void WMSetLabelRelief(WMLabel *lPtr, WMReliefType relief);
742 void WMSetLabelText(WMLabel *lPtr, char *text);
744 void WMSetLabelFont(WMLabel *lPtr, WMFont *font);
746 void WMSetLabelTextColor(WMLabel *lPtr, WMColor *color);
748 /* ....................................................................... */
750 WMFrame *WMCreateFrame(WMWidget *parent);
752 void WMSetFrameTitlePosition(WMFrame *fPtr, WMTitlePosition position);
754 void WMSetFrameRelief(WMFrame *fPtr, WMReliefType relief);
756 void WMSetFrameTitle(WMFrame *fPtr, char *title);
758 /* ....................................................................... */
760 WMTextField *WMCreateTextField(WMWidget *parent);
762 void WMInsertTextFieldText(WMTextField *tPtr, char *text, int position);
764 void WMDeleteTextFieldRange(WMTextField *tPtr, WMRange range);
766 /* you can free the returned string */
767 char *WMGetTextFieldText(WMTextField *tPtr);
769 void WMSetTextFieldText(WMTextField *tPtr, char *text);
771 void WMSetTextFieldAlignment(WMTextField *tPtr, WMAlignment alignment);
773 void WMSetTextFieldBordered(WMTextField *tPtr, Bool bordered);
775 void WMSetTextFieldBeveled(WMTextField *tPtr, Bool flag);
777 Bool WMGetTextFieldEnabled(WMTextField *tPtr);
779 void WMSetTextFieldEnabled(WMTextField *tPtr, Bool flag);
781 void WMSetTextFieldSecure(WMTextField *tPtr, Bool flag);
783 void WMSelectTextFieldRange(WMTextField *tPtr, WMRange range);
785 void WMSetTextFieldCursorPosition(WMTextField *tPtr, unsigned int position);
787 void WMSetTextFieldNextTextField(WMTextField *tPtr, WMTextField *next);
789 void WMSetTextFieldPrevTextField(WMTextField *tPtr, WMTextField *prev);
792 extern char *WMTextDidChangeNotification;
793 extern char *WMTextDidBeginEditingNotification;
794 extern char *WMTextDidEndEditingNotification;
796 /* ....................................................................... */
798 WMScroller *WMCreateScroller(WMWidget *parent);
800 void WMSetScrollerParameters(WMScroller *sPtr, float floatValue,
801 float knobProportion);
803 float WMGetScrollerKnobProportion(WMScroller *sPtr);
805 float WMGetScrollerValue(WMScroller *sPtr);
807 WMScrollerPart WMGetScrollerHitPart(WMScroller *sPtr);
809 void WMSetScrollerAction(WMScroller *sPtr, WMAction *action, void *clientData);
811 void WMSetScrollerArrowsPosition(WMScroller *sPtr,
812 WMScrollArrowPosition position);
814 /* ....................................................................... */
816 WMList *WMCreateList(WMWidget *parent);
818 #define WMAddListItem(lPtr, text) WMInsertListItem((lPtr), -1, (text))
820 WMListItem *WMInsertListItem(WMList *lPtr, int row, char *text);
822 WMListItem *WMAddSortedListItem(WMList *lPtr, char *text);
824 int WMFindRowOfListItemWithTitle(WMList *lPtr, char *title);
826 WMListItem *WMGetListItem(WMList *lPtr, int row);
828 void WMRemoveListItem(WMList *lPtr, int row);
830 void WMSelectListItem(WMList *lPtr, int row);
832 void WMSetListUserDrawProc(WMList *lPtr, WMListDrawProc *proc);
834 void WMSetListUserDrawItemHeight(WMList *lPtr, unsigned short height);
836 int WMGetListItemHeight(WMList *lPtr);
838 /* don't free the returned data */
839 WMListItem *WMGetListSelectedItem(WMList *lPtr);
841 int WMGetListSelectedItemRow(WMList *lPtr);
843 void WMSetListAction(WMList *lPtr, WMAction *action, void *clientData);
845 void WMSetListDoubleAction(WMList *lPtr, WMAction *action, void *clientData);
847 void WMClearList(WMList *lPtr);
849 int WMGetListNumberOfRows(WMList *lPtr);
851 void WMSetListPosition(WMList *lPtr, int row);
853 void WMSetListBottomPosition(WMList *lPtr, int row);
855 int WMGetListPosition(WMList *lPtr);
857 extern char *WMListDidScrollNotification;
858 extern char *WMListSelectionDidChangeNotification;
860 /* ....................................................................... */
862 WMBrowser *WMCreateBrowser(WMWidget *parent);
864 void WMSetBrowserPathSeparator(WMBrowser *bPtr, char *separator);
866 void WMSetBrowserTitled(WMBrowser *bPtr, Bool flag);
868 void WMLoadBrowserColumnZero(WMBrowser *bPtr);
870 int WMAddBrowserColumn(WMBrowser *bPtr);
872 void WMRemoveBrowserItem(WMBrowser *bPtr, int column, int row);
874 void WMSetBrowserMaxVisibleColumns(WMBrowser *bPtr, int columns);
876 void WMSetBrowserColumnTitle(WMBrowser *bPtr, int column, char *title);
878 WMListItem *WMAddSortedBrowserItem(WMBrowser *bPtr, int column, char *text, Bool isBranch);
880 WMListItem *WMInsertBrowserItem(WMBrowser *bPtr, int column, int row, char *text, Bool isBranch);
882 /* Don't free the returned string. */
883 char* WMSetBrowserPath(WMBrowser *bPtr, char *path);
885 /* you can free the returned string */
886 char *WMGetBrowserPath(WMBrowser *bPtr);
887 /* you can free the returned string */
888 char *WMGetBrowserPathToColumn(WMBrowser *bPtr, int column);
890 void WMSetBrowserFillColumnProc(WMBrowser *bPtr,WMBrowserFillColumnProc *proc);
892 void WMSetBrowserAction(WMBrowser *bPtr, WMAction *action, void *clientData);
894 void WMSetBrowserDoubleAction(WMBrowser *bPtr, WMAction *action,
895 void *clientData);
897 WMListItem *WMGetBrowserSelectedItemInColumn(WMBrowser *bPtr, int column);
899 int WMGetBrowserFirstVisibleColumn(WMBrowser *bPtr);
901 int WMGetBrowserSelectedColumn(WMBrowser *bPtr);
903 int WMGetBrowserSelectedRowInColumn(WMBrowser *bPtr, int column);
905 int WMGetBrowserNumberOfColumns(WMBrowser *bPtr);
907 WMList *WMGetBrowserListInColumn(WMBrowser *bPtr, int column);
909 extern char *WMBrowserDidScrollNotification;
911 /* ....................................................................... */
913 WMPopUpButton *WMCreatePopUpButton(WMWidget *parent);
915 void WMSetPopUpButtonAction(WMPopUpButton *sPtr, WMAction *action,
916 void *clientData);
918 void WMSetPopUpButtonPullsDown(WMPopUpButton *bPtr, Bool flag);
920 void WMAddPopUpButtonItem(WMPopUpButton *bPtr, char *title);
922 void WMInsertPopUpButtonItem(WMPopUpButton *bPtr, int index, char *title);
924 void WMRemovePopUpButtonItem(WMPopUpButton *bPtr, int index);
926 void WMSetPopUpButtonItemEnabled(WMPopUpButton *bPtr, int index, Bool flag);
928 void WMSetPopUpButtonSelectedItem(WMPopUpButton *bPtr, int index);
930 int WMGetPopUpButtonSelectedItem(WMPopUpButton *bPtr);
932 void WMSetPopUpButtonText(WMPopUpButton *bPtr, char *text);
934 /* don't free the returned data */
935 char *WMGetPopUpButtonItem(WMPopUpButton *bPtr, int index);
937 int WMGetPopUpButtonNumberOfItems(WMPopUpButton *bPtr);
939 void WMSetPopUpButtonEnabled(WMPopUpButton *bPtr, Bool flag);
941 /* ....................................................................... */
943 WMColorPanel *WMGetColorPanel(WMScreen *scrPtr);
945 void WMFreeColorPanel(WMColorPanel *panel);
947 int WMRunColorPanel(WMColorPanel *panel, WMWindow *owner, RColor color);
949 void WMSetColorPanelColor(WMColorPanel *panel, RColor color);
951 RColor WMGetColorPanelColor(WMColorPanel *panel);
953 void WMSetPickerMode(WMColorPanel *panel, WMColorPanelMode mode);
955 /* ....................................................................... */
957 WMColorWell *WMCreateColorWell(WMWidget *parent);
959 void WMSetColorWellColor(WMColorWell *cPtr, WMColor *color);
961 WMColor *WMGetColorWellColor(WMColorWell *cPtr);
963 void WSetColorWellBordered(WMColorWell *cPtr, Bool flag);
965 /* ...................................................................... */
967 WMScrollView *WMCreateScrollView(WMWidget *parent);
969 void WMResizeScrollViewContent(WMScrollView *sPtr, unsigned int width,
970 unsigned int height);
972 void WMSetScrollViewHasHorizontalScroller(WMScrollView *sPtr, Bool flag);
974 void WMSetScrollViewHasVerticalScroller(WMScrollView *sPtr, Bool flag);
976 void WMSetScrollViewContentView(WMScrollView *sPtr, WMView *view);
978 void WMSetScrollViewRelief(WMScrollView *sPtr, WMReliefType type);
980 void WMSetScrollViewContentView(WMScrollView *sPtr, WMView *view);
982 WMScroller *WMGetScrollViewHorizontalScroller(WMScrollView *sPtr);
984 WMScroller *WMGetScrollViewVerticalScroller(WMScrollView *sPtr);
986 void WMSetScrollViewLineScroll(WMScrollView *sPtr, int amount);
988 void WMSetScrollViewPageScroll(WMScrollView *sPtr, int amount);
990 /* ....................................................................... */
992 WMSlider *WMCreateSlider(WMWidget *parent);
994 int WMGetSliderMinValue(WMSlider *slider);
996 int WMGetSliderMaxValue(WMSlider *slider);
998 int WMGetSliderValue(WMSlider *slider);
1000 void WMSetSliderMinValue(WMSlider *slider, int value);
1002 void WMSetSliderMaxValue(WMSlider *slider, int value);
1004 void WMSetSliderValue(WMSlider *slider, int value);
1006 void WMSetSliderContinuous(WMSlider *slider, Bool flag);
1008 void WMSetSliderAction(WMSlider *slider, WMAction *action, void *data);
1010 void WMSetSliderKnobThickness(WMSlider *sPtr, int thickness);
1012 void WMSetSliderImage(WMSlider *sPtr, WMPixmap *pixmap);
1014 /* ....................................................................... */
1016 /* only supports 2 subviews */
1017 WMSplitView *WMCreateSplitView(WMWidget *parent);
1019 void WMAddSplitViewSubview(WMSplitView *sPtr, WMView *subview);
1021 void WMAdjustSplitViewSubviews(WMSplitView *sPtr);
1023 void WMSetSplitViewConstrainProc(WMSplitView *sPtr,
1024 WMSplitViewConstrainProc *proc);
1027 void WMSetSplitViewResizeSubviewsProc(WMSplitView *sPtr,
1028 WMSplitViewResizeSubviewsProc *proc);
1031 int WMGetSplitViewDividerThickness(WMSplitView *sPtr);
1034 /* ....................................................................... */
1036 int WMRunAlertPanel(WMScreen *app, WMWindow *owner, char *title, char *msg,
1037 char *defaultButton, char *alternateButton,
1038 char *otherButton);
1040 /* you can free the returned string */
1041 char *WMRunInputPanel(WMScreen *app, WMWindow *owner, char *title, char *msg,
1042 char *defaultText, char *okButton, char *cancelButton);
1044 WMAlertPanel *WMCreateAlertPanel(WMScreen *app, WMWindow *owner, char *title,
1045 char *msg, char *defaultButton,
1046 char *alternateButton, char *otherButton);
1048 WMInputPanel *WMCreateInputPanel(WMScreen *app, WMWindow *owner, char *title,
1049 char *msg, char *defaultText, char *okButton,
1050 char *cancelButton);
1052 void WMDestroyAlertPanel(WMAlertPanel *panel);
1054 void WMDestroyInputPanel(WMInputPanel *panel);
1056 /* ....................................................................... */
1058 /* only 1 instance per WMScreen */
1059 WMOpenPanel *WMGetOpenPanel(WMScreen *scrPtr);
1061 WMSavePanel *WMGetSavePanel(WMScreen *scrPtr);
1063 void WMSetFilePanelCanChooseDirectories(WMFilePanel *panel, Bool flag);
1065 void WMSetFilePanelCanChooseFiles(WMFilePanel *panel, Bool flag);
1067 void WMSetFilePanelAutoCompletion(WMFilePanel *panel, Bool flag);
1069 void WMSetFilePanelDirectory(WMFilePanel *panel, char *path);
1071 /* you can free the returned string */
1072 char *WMGetFilePanelFileName(WMFilePanel *panel);
1074 void WMFreeFilePanel(WMFilePanel *panel);
1076 int WMRunModalFilePanelForDirectory(WMFilePanel *panel, WMWindow *owner,
1077 char *path, char *name, char **fileTypes);
1079 void WMSetFilePanelAccessoryView(WMFilePanel *panel, WMView *view);
1081 WMView *WMGetFilePanelAccessoryView(WMFilePanel *panel);
1084 /* ...................................................................... */
1086 /* only 1 instance per WMScreen */
1087 WMFontPanel *WMGetFontPanel(WMScreen *scr);
1089 void WMShowFontPanel(WMFontPanel *panel);
1091 void WMHideFontPanel(WMFontPanel *panel);
1093 void WMSetFontPanelFont(WMFontPanel *panel, WMFont *font);
1095 /* you can free the returned string */
1096 char *WMGetFontPanelFontName(WMFontPanel *panel);
1098 WMFont *WMGetFontPanelFont(WMFontPanel *panel);
1100 #ifdef __cplusplus
1102 #endif /* __cplusplus */
1104 #endif