WMSplitView *WMCreateSplitView(WMWidget * parent) { WMSplitView *sPtr; sPtr = wmalloc(sizeof(WMSplitView)); sPtr->widgetClass = WC_SplitView; sPtr->view = W_CreateView(W_VIEW(parent)); if (!sPtr->view) { wfree(sPtr); return NULL; } sPtr->view->self = sPtr; WMSetViewNotifySizeChanges(sPtr->view, True); WMCreateEventHandler(sPtr->view, ExposureMask | StructureNotifyMask | ClientMessageMask, handleEvents, sPtr); WMCreateEventHandler(sPtr->view, ButtonPressMask | ButtonReleaseMask | EnterWindowMask | LeaveWindowMask, handleActionEvents, sPtr); WMAddNotificationObserver(handleViewResized, sPtr, WMViewSizeDidChangeNotification, sPtr->view); sPtr->subviews = WMCreateArrayWithDestructor(8, wfree); return sPtr; }
WMTabView *WMCreateTabView(WMWidget * parent) { TabView *tPtr; WMScreen *scr = WMWidgetScreen(parent); tPtr = wmalloc(sizeof(TabView)); tPtr->widgetClass = WC_TabView; tPtr->view = W_CreateView(W_VIEW(parent)); if (!tPtr->view) { wfree(tPtr); return NULL; } tPtr->view->self = tPtr; tPtr->view->delegate = &delegate; tPtr->lightGray = WMCreateRGBColor(scr, 0xd9d9, 0xd9d9, 0xd9d9, False); tPtr->tabColor = WMCreateRGBColor(scr, 0x8420, 0x8420, 0x8420, False); tPtr->font = WMRetainFont(scr->normalFont); tPtr->flags.type = WTTopTabsBevelBorder; tPtr->flags.bordered = 1; tPtr->flags.uniformTabs = 0; tPtr->flags.enabled = 1; WMCreateEventHandler(tPtr->view, ExposureMask | StructureNotifyMask | ButtonPressMask, handleEvents, tPtr); WMResizeWidget(tPtr, DEFAULT_WIDTH, DEFAULT_HEIGHT); tPtr->tabHeight = WMFontHeight(tPtr->font) + 3; return tPtr; }
WMLabel *WMCreateLabel(WMWidget * parent) { Label *lPtr; lPtr = wmalloc(sizeof(Label)); lPtr->widgetClass = WC_Label; lPtr->view = W_CreateView(W_VIEW(parent)); if (!lPtr->view) { wfree(lPtr); return NULL; } lPtr->view->self = lPtr; lPtr->textColor = WMRetainColor(lPtr->view->screen->black); WMCreateEventHandler(lPtr->view, ExposureMask | StructureNotifyMask, handleEvents, lPtr); W_ResizeView(lPtr->view, DEFAULT_WIDTH, DEFAULT_HEIGHT); lPtr->flags.alignment = DEFAULT_ALIGNMENT; lPtr->flags.relief = DEFAULT_RELIEF; lPtr->flags.imagePosition = DEFAULT_IMAGE_POSITION; lPtr->flags.noWrap = 1; return lPtr; }
WMScroller *WMCreateScroller(WMWidget * parent) { Scroller *sPtr; sPtr = wmalloc(sizeof(Scroller)); sPtr->widgetClass = WC_Scroller; sPtr->view = W_CreateView(W_VIEW(parent)); if (!sPtr->view) { wfree(sPtr); return NULL; } sPtr->view->self = sPtr; sPtr->view->delegate = &_ScrollerViewDelegate; sPtr->flags.documentFullyVisible = 1; WMCreateEventHandler(sPtr->view, ExposureMask | StructureNotifyMask | ClientMessageMask, handleEvents, sPtr); W_ResizeView(sPtr->view, DEFAULT_WIDTH, DEFAULT_WIDTH); sPtr->flags.arrowsPosition = DEFAULT_ARROWS_POSITION; WMCreateEventHandler(sPtr->view, ButtonPressMask | ButtonReleaseMask | EnterWindowMask | LeaveWindowMask | ButtonMotionMask, handleActionEvents, sPtr); sPtr->flags.hitPart = WSNoPart; sPtr->floatValue = 0.0; sPtr->knobProportion = 1.0; return sPtr; }
WMBox *WMCreateBox(WMWidget * parent) { Box *bPtr; bPtr = wmalloc(sizeof(Box)); bPtr->widgetClass = WC_Box; bPtr->view = W_CreateView(W_VIEW(parent)); if (!bPtr->view) { wfree(bPtr); return NULL; } bPtr->view->self = bPtr; bPtr->view->delegate = &delegate; bPtr->subviews = WMCreateArrayWithDestructor(2, wfree); WMCreateEventHandler(bPtr->view, StructureNotifyMask, handleEvents, bPtr); WMResizeWidget(bPtr, DEFAULT_WIDTH, DEFAULT_HEIGHT); return bPtr; }
WMScrollView* WMCreateScrollView(WMWidget *parent) { ScrollView *sPtr; sPtr = wmalloc(sizeof(ScrollView)); memset(sPtr, 0, sizeof(ScrollView)); sPtr->widgetClass = WC_ScrollView; sPtr->view = W_CreateView(W_VIEW(parent)); if (!sPtr->view) { wfree(sPtr); return NULL; } sPtr->viewport = W_CreateView(sPtr->view); if (!sPtr->viewport) { W_DestroyView(sPtr->view); wfree(sPtr); return NULL; } sPtr->view->self = sPtr; sPtr->viewport->self = sPtr; sPtr->view->delegate = &_ScrollViewViewDelegate; sPtr->viewport->flags.mapWhenRealized = 1; WMCreateEventHandler(sPtr->view, StructureNotifyMask|ExposureMask, handleEvents, sPtr); WMCreateEventHandler(sPtr->viewport, SubstructureNotifyMask, handleViewportEvents, sPtr); sPtr->lineScroll = 4; sPtr->pageScroll = 0; return sPtr; }
WMTextField *WMCreateTextField(WMWidget * parent) { TextField *tPtr; tPtr = wmalloc(sizeof(TextField)); tPtr->widgetClass = WC_TextField; tPtr->view = W_CreateView(W_VIEW(parent)); if (!tPtr->view) { wfree(tPtr); return NULL; } tPtr->view->self = tPtr; tPtr->view->delegate = &_TextFieldViewDelegate; tPtr->view->attribFlags |= CWCursor; tPtr->view->attribs.cursor = tPtr->view->screen->textCursor; W_SetViewBackgroundColor(tPtr->view, tPtr->view->screen->white); tPtr->text = wmalloc(MIN_TEXT_BUFFER); tPtr->textLen = 0; tPtr->bufferSize = MIN_TEXT_BUFFER; tPtr->flags.enabled = 1; WMCreateEventHandler(tPtr->view, ExposureMask | StructureNotifyMask | FocusChangeMask, handleEvents, tPtr); tPtr->font = WMRetainFont(tPtr->view->screen->normalFont); tPtr->flags.bordered = DEFAULT_BORDERED; tPtr->flags.beveled = True; tPtr->flags.alignment = DEFAULT_ALIGNMENT; tPtr->offsetWidth = WMAX((tPtr->view->size.height - WMFontHeight(tPtr->font)) / 2, 1); W_ResizeView(tPtr->view, DEFAULT_WIDTH, DEFAULT_HEIGHT); WMCreateEventHandler(tPtr->view, EnterWindowMask | LeaveWindowMask | ButtonReleaseMask | ButtonPressMask | KeyPressMask | Button1MotionMask, handleTextFieldActionEvents, tPtr); WMAddNotificationObserver(selectionNotification, tPtr->view, WMSelectionOwnerDidChangeNotification, (void *)XA_PRIMARY); WMAddNotificationObserver(realizeObserver, tPtr, WMViewRealizedNotification, tPtr->view); tPtr->flags.cursorOn = 1; return tPtr; }
WMRuler *WMCreateRuler(WMWidget * parent) { Ruler *rPtr = wmalloc(sizeof(Ruler)); unsigned int w = WMWidgetWidth(parent); rPtr->widgetClass = WC_Ruler; rPtr->view = W_CreateView(W_VIEW(parent)); if (!rPtr->view) { wfree(rPtr); return NULL; } rPtr->view->self = rPtr; rPtr->drawBuffer = (Pixmap) NULL; W_ResizeView(rPtr->view, w, 40); WMCreateEventHandler(rPtr->view, ExposureMask | StructureNotifyMask | EnterWindowMask | LeaveWindowMask | FocusChangeMask | ButtonReleaseMask | ButtonPressMask | KeyReleaseMask | KeyPressMask | Button1MotionMask, handleEvents, rPtr); rPtr->view->delegate = &_RulerViewDelegate; rPtr->fg = WMBlackColor(rPtr->view->screen); rPtr->fgGC = WMColorGC(rPtr->fg); rPtr->bgGC = WMColorGC(WMGrayColor(rPtr->view->screen)); rPtr->font = WMSystemFontOfSize(rPtr->view->screen, 8); rPtr->offset = 22; rPtr->margins.left = 22; rPtr->margins.body = 22; rPtr->margins.first = 42; rPtr->margins.right = (w < 502 ? w : 502); rPtr->margins.tabs = NULL; rPtr->flags.whichMarker = 0; /* none */ rPtr->flags.buttonPressed = False; rPtr->flags.redraw = True; rPtr->moveAction = NULL; rPtr->releaseAction = NULL; rPtr->pview = W_VIEW(parent); return rPtr; }
WMBrowser *WMCreateBrowser(WMWidget * parent) { WMBrowser *bPtr; int i; wassertrv(parent, NULL); bPtr = wmalloc(sizeof(WMBrowser)); bPtr->widgetClass = WC_Browser; bPtr->view = W_CreateView(W_VIEW(parent)); if (!bPtr->view) { wfree(bPtr); return NULL; } bPtr->view->self = bPtr; bPtr->view->delegate = &_BrowserViewDelegate; WMCreateEventHandler(bPtr->view, ExposureMask | StructureNotifyMask | ClientMessageMask, handleEvents, bPtr); /* default configuration */ bPtr->flags.hasScroller = DEFAULT_HAS_SCROLLER; bPtr->titleHeight = DEFAULT_TITLE_HEIGHT; bPtr->flags.isTitled = DEFAULT_IS_TITLED; bPtr->maxVisibleColumns = DEFAULT_MAX_VISIBLE_COLUMNS; WMResizeWidget(bPtr, DEFAULT_WIDTH, DEFAULT_HEIGHT); bPtr->pathSeparator = wstrdup(DEFAULT_SEPARATOR); if (bPtr->flags.hasScroller) setupScroller(bPtr); for (i = 0; i < bPtr->maxVisibleColumns; i++) { WMAddBrowserColumn(bPtr); } bPtr->usedColumnCount = 0; bPtr->selectedColumn = -1; return bPtr; }