/* Set the text from a format string. */ void AG_TextboxPrintf(AG_Textbox *tb, const char *fmt, ...) { AG_Variable *stringb; va_list args; char *text; AG_ObjectLock(tb->ed); stringb = AG_GetVariable(tb->ed, "string", &text); if (fmt != NULL && fmt[0] != '\0') { va_start(args, fmt); Vsnprintf(text, stringb->info.size, fmt, args); va_end(args); tb->ed->pos = AG_LengthUTF8(text); } else { text[0] = '\0'; tb->ed->pos = 0; } AG_TextboxBufferChanged(tb); AG_UnlockVariable(stringb); AG_ObjectUnlock(tb->ed); /* XXX for AG_Numerical, etc. */ AG_Redraw(tb); }
AG_Titlebar * AG_TitlebarNew(void *parent, Uint flags) { AG_Titlebar *tbar; tbar = Malloc(sizeof(AG_Titlebar)); AG_ObjectInit(tbar, &agTitlebarClass); tbar->flags |= flags; AG_ObjectAttach(parent, tbar); /* * Manually update the window/driver pointers since AG_TitlebarNew() * is called from the Window attach routine. */ AG_ObjectLock(tbar); tbar->win = (AG_Window *)parent; WIDGET(tbar)->window = tbar->win; WIDGET(tbar)->drv = WIDGET(parent)->drv; WIDGET(tbar)->drvOps = AGDRIVER_CLASS(WIDGET(tbar)->drv); AG_ObjectUnlock(tbar); if ((flags & AG_TITLEBAR_NO_MAXIMIZE) == 0) CreateMaximizeButton(tbar); if ((flags & AG_TITLEBAR_NO_MINIMIZE) == 0) CreateMinimizeButton(tbar); if ((flags & AG_TITLEBAR_NO_CLOSE) == 0) CreateCloseButton(tbar); return (tbar); }
void AG_SliderSetIntIncrement(AG_Slider *sl, int inc) { AG_ObjectLock(sl); AG_SetInt(sl, "inc", inc); AG_ObjectUnlock(sl); }
static void Return(AG_Event *event) { char text[AG_TEXTBOX_STRING_MAX]; AG_Textbox *tbox = AG_SELF(); AG_Combo *com = AG_PTR(1); AG_ObjectLock(com->list); AG_TextboxCopyString(tbox, text, sizeof(text)); if ((com->flags & AG_COMBO_ANY_TEXT) == 0) { AG_TlistItem *it; if (text[0] != '\0' && (it = AG_TlistSelectText(com->list, text)) != NULL) { AG_TextboxSetString(com->tbox, it->text); AG_PostEvent(NULL, com, "combo-selected", "%p", it); } else { AG_TlistDeselectAll(com->list); AG_TextboxSetString(com->tbox, ""); AG_PostEvent(NULL, com, "combo-text-unknown", "%s", text); } } else { AG_TlistDeselectAll(com->list); AG_PostEvent(NULL, com, "combo-text-entry", "%s", text); } AG_ObjectUnlock(com->list); }
void AG_SliderSetRealIncrement(AG_Slider *sl, double inc) { AG_ObjectLock(sl); AG_SetDouble(sl, "inc", inc); AG_ObjectUnlock(sl); }
AG_Label * AG_StatusbarAddLabel(AG_Statusbar *sbar, const char *fmt, ...) { AG_Label *lab; va_list ap; AG_ObjectLock(sbar); #ifdef AG_DEBUG if (sbar->nlabels+1 >= AG_STATUSBAR_MAX_LABELS) AG_FatalError("AG_StatusbarAddLabel: Too many labels"); #endif sbar->labels[sbar->nlabels] = Malloc(sizeof(AG_Label)); lab = sbar->labels[sbar->nlabels]; AG_ObjectInit(lab, &agLabelClass); lab->type = AG_LABEL_STATIC; va_start(ap, fmt); Vasprintf(&lab->text, fmt, ap); va_end(ap); AG_ExpandHoriz(lab); AG_ObjectAttach(&sbar->box, lab); lab = sbar->labels[sbar->nlabels++]; AG_ObjectUnlock(sbar); AG_Redraw(sbar); return (lab); }
void AG_GLViewSetBgColor(AG_GLView *glv, AG_Color c) { AG_ObjectLock(glv); glv->bgColor = c; AG_ObjectUnlock(glv); }
void AG_ButtonSetSticky(AG_Button *bu, int flag) { AG_ObjectLock(bu); AG_SETFLAGS(bu->flags, AG_BUTTON_STICKY, flag); AG_ObjectUnlock(bu); }
void AG_ButtonInvertState(AG_Button *bu, int flag) { AG_ObjectLock(bu); AG_SETFLAGS(bu->flags, AG_BUTTON_INVSTATE, flag); AG_ObjectUnlock(bu); }
static void Expand(AG_Event *event) { AG_UCombo *com = AG_PTR(1); AG_Driver *drv = WIDGET(com)->drv; int expand = AG_INT(2); AG_SizeReq rList; int x, y, w, h; Uint wView, hView; AG_ObjectLock(com); if (expand) { com->panel = AG_WindowNew(AG_WINDOW_POPUP|AG_WINDOW_MODAL| AG_WINDOW_NOTITLE); AG_ObjectSetName(com->panel, "_UComboPopup"); AG_WindowSetPadding(com->panel, 0,0,0,0); AG_ObjectAttach(com->panel, com->list); if (WIDGET(com)->window != NULL) AG_WindowAttach(WIDGET(com)->window, com->panel); if (com->wSaved > 0) { w = com->wSaved; h = com->hSaved; } else { if (com->wPreList != -1 && com->hPreList != -1) { AG_TlistSizeHintPixels(com->list, com->wPreList, com->hPreList); } AG_WidgetSizeReq(com->list, &rList); w = rList.w + com->panel->wBorderSide*2; h = rList.h + com->panel->wBorderBot; } x = WIDGET(com)->rView.x2 - w; y = WIDGET(com)->rView.y1; AG_GetDisplaySize(WIDGET(com)->drv, &wView, &hView); if (x+w > wView) { w = wView - x; } if (y+h > hView) { h = hView - y; } if (AGDRIVER_CLASS(drv)->wm == AG_WM_MULTIPLE && WIDGET(com)->window != NULL) { x += WIDGET(WIDGET(com)->window)->x; y += WIDGET(WIDGET(com)->window)->y; } if (x < 0) { x = 0; } if (y < 0) { y = 0; } if (w < 4 || h < 4) { Collapse(com); return; } AG_SetEvent(com->panel, "window-modal-close", ModalClose, "%p", com); AG_WindowSetGeometry(com->panel, x,y, w,h); AG_WindowShow(com->panel); } else { Collapse(com); } AG_ObjectUnlock(com); }
/* * セレクト */ BOOL SelectDraw(void) { BOOL ret; AG_Color nullcolor; AG_Rect rect; AG_Widget *w; BYTE bold = bMode; int y; if (SelectCheck()) { return TRUE; } rect.h = nDrawWidth; rect.w = nDrawHeight; rect.x = 0; rect.y = 0; DrawSHUTDOWN = FALSE; /* * すべてクリア */ if(!bUseOpenGL) { if(DrawArea != NULL) { AG_ObjectLock(DrawArea); nullcolor.r = 0; nullcolor.g = 0; nullcolor.b = 0; nullcolor.a = 255; AG_FillRect(AGWIDGET(DrawArea)->drv->sRef , &rect, nullcolor); AG_ObjectUnlock(DrawArea); } } else { // OpenGLのとき } /* * すべてクリア */ bOldFullScan = bFullScan; /* * セレクト */ #if XM7_VER >= 3 switch (screen_mode) { case SCR_400LINE: ret = Select400l(); case SCR_262144: ret = Select256k(); case SCR_4096: ret = Select320(); default: ret = Select640(); } #else /* */ if (mode320) { ret = Select320(); } else { ret = Select640(); } } else {
void AG_GLViewScaleFn(AG_GLView *glv, AG_EventFn fn, const char *fmt, ...) { AG_ObjectLock(glv); glv->scale_ev = AG_SetEvent(glv, NULL, fn, NULL); AG_EVENT_GET_ARGS(glv->scale_ev, fmt); AG_ObjectUnlock(glv); }
void AG_GLViewSizeHint(AG_GLView *glv, int w, int h) { AG_ObjectLock(glv); glv->wPre = w; glv->hPre = h; AG_ObjectUnlock(glv); }
void AG_ComboSelect(AG_Combo *com, AG_TlistItem *it) { AG_ObjectLock(com->list); AG_TextboxSetString(com->tbox, it->text); AG_TlistSelect(com->list, it); AG_ObjectUnlock(com->list); }
void AG_SeparatorSetPadding(AG_Separator *sep, Uint pixels) { AG_ObjectLock(sep); sep->padding = pixels; AG_ObjectUnlock(sep); AG_Redraw(sep); }
/* Configure alternate font */ void AG_TextboxSetFont(AG_Textbox *tb, AG_Font *font) { AG_ObjectLock(tb); tb->font = font; AG_ObjectUnlock(tb); AG_Redraw(tb); }
void AG_GLViewMotionFn(AG_GLView *glv, AG_EventFn fn, const char *fmt, ...) { AG_ObjectLock(glv); glv->motion_ev = AG_SetEvent(glv, "mouse-motion", fn, NULL); AG_EVENT_GET_ARGS(glv->motion_ev, fmt); AG_ObjectUnlock(glv); }
void AG_GLViewButtonupFn(AG_GLView *glv, AG_EventFn fn, const char *fmt, ...) { AG_ObjectLock(glv); glv->btnup_ev = AG_SetEvent(glv, "mouse-button-up", fn, NULL); AG_EVENT_GET_ARGS(glv->btnup_ev, fmt); AG_ObjectUnlock(glv); }
void AG_GLViewKeyupFn(AG_GLView *glv, AG_EventFn fn, const char *fmt, ...) { AG_ObjectLock(glv); glv->keyup_ev = AG_SetEvent(glv, "key-up", fn, NULL); AG_EVENT_GET_ARGS(glv->keyup_ev, fmt); AG_ObjectUnlock(glv); }
void AG_FileSelectorSetFile(AG_FileSelector *fs, const char *path) { AG_ObjectLock(fs->filedlg); SetDirectoryAndFile(fs, path); AG_TextboxSetString(fs->tbox, path); AG_ObjectUnlock(fs->filedlg); }
void AG_UComboSizeHintPixels(AG_UCombo *com, int w, int h) { AG_ObjectLock(com); com->wPreList = w; com->hPreList = h; AG_ObjectUnlock(com); }
void AG_UComboSizeHint(AG_UCombo *com, const char *text, int h) { AG_ObjectLock(com); AG_TextSize(text, &com->wPreList, NULL); com->hPreList = h; AG_ObjectUnlock(com); }
static void SelectedItem(AG_Event *event) { AG_Tlist *tl = AG_SELF(); AG_UCombo *com = AG_PTR(1); AG_TlistItem *it; AG_ObjectLock(com); AG_ObjectLock(tl); if ((it = AG_TlistSelectedItem(tl)) != NULL) { it->selected++; AG_ButtonTextS(com->button, it->text); AG_PostEvent(NULL, com, "ucombo-selected", "%p", it); } Collapse(com); AG_ObjectUnlock(tl); AG_ObjectUnlock(com); }
void AG_GLViewOverlayFn(void *obj, AG_EventFn fn, const char *fmt, ...) { AG_GLView *glv = obj; AG_ObjectLock(glv); glv->overlay_ev = AG_SetEvent(glv, NULL, fn, NULL); AG_EVENT_GET_ARGS(glv->overlay_ev, fmt); AG_ObjectUnlock(glv); }
void AG_GLViewButtondownFn(void *obj, AG_EventFn fn, const char *fmt, ...) { AG_GLView *glv = obj; AG_ObjectLock(glv); glv->btndown_ev = AG_SetEvent(glv, "mouse-button-down", fn, NULL); AG_EVENT_GET_ARGS(glv->btndown_ev, fmt); AG_ObjectUnlock(glv); }
void AG_GLViewKeydownFn(void *obj, AG_EventFn fn, const char *fmt, ...) { AG_GLView *glv = obj; AG_ObjectLock(glv); glv->keydown_ev = AG_SetEvent(glv, "key-down", fn, NULL); AG_EVENT_GET_ARGS(glv->keydown_ev, fmt); AG_ObjectUnlock(glv); }
void AG_ButtonValign(AG_Button *bu, enum ag_text_valign va) { AG_ObjectLock(bu); bu->valign = va; if (bu->lbl != NULL) { AG_LabelValign(bu->lbl, va); } AG_ObjectUnlock(bu); }
void AG_ButtonJustify(AG_Button *bu, enum ag_text_justify jus) { AG_ObjectLock(bu); bu->justify = jus; if (bu->lbl != NULL) { AG_LabelJustify(bu->lbl, jus); } AG_ObjectUnlock(bu); }
/* Synchronize a database. */ int AG_DbSync(AG_Db *db) { AG_DbClass *dbc = AGDB_CLASS(db); int rv; AG_ObjectLock(db); rv = (dbc->sync != NULL) ? dbc->sync(db) : 0; AG_ObjectUnlock(db); return (rv); }
void AG_ButtonSetPadding(AG_Button *bu, int lPad, int rPad, int tPad, int bPad) { AG_ObjectLock(bu); if (lPad != -1) { bu->lPad = lPad; } if (rPad != -1) { bu->rPad = rPad; } if (tPad != -1) { bu->tPad = tPad; } if (bPad != -1) { bu->bPad = bPad; } AG_ObjectUnlock(bu); AG_Redraw(bu); }