static int new_window( lua_State* L ) { uiWindow* w = uiNewWindow( luaL_optlstring( L, 1, "Lua", NULL ), luaL_optinteger( L, 2, 640 ), luaL_optinteger( L, 3, 480 ), lua_toboolean( L, 4 ) ); object_create( L, w, uiWindowSignature, control_common, window_functions, 0 ); return 1; }
int main(void) { uiInitOptions o; uiWindow *w; uiBox *b; uiButton *btn; memset(&o, 0, sizeof (uiInitOptions)); if (uiInit(&o) != NULL) abort(); w = uiNewWindow("Hello", 320, 240, 0); uiWindowSetMargined(w, 1); b = uiNewVerticalBox(); uiBoxSetPadded(b, 1); uiWindowSetChild(w, uiControl(b)); e = uiNewMultilineEntry(); uiMultilineEntrySetReadOnly(e, 1); btn = uiNewButton("Say Something"); uiButtonOnClicked(btn, saySomething, NULL); uiBoxAppend(b, uiControl(btn), 0); uiBoxAppend(b, uiControl(e), 1); uiTimer(1000, sayTime, NULL); uiWindowOnClosing(w, onClosing, NULL); uiControlShow(uiControl(w)); uiMain(); return 0; }
static void borderWindowOpen(uiButton *b, void *data) { uiWindow *w; uiArea *a; if (!borderAHInit) { borderAH.Draw = handlerDraw; borderAH.MouseEvent = handlerMouseEvent; borderAH.MouseCrossed = handlerMouseCrossed; borderAH.DragBroken = handlerDragBroken; borderAH.KeyEvent = handlerKeyEvent; borderAHInit = 1; } w = uiNewWindow("Border Resize Test", 300, 500, 0); uiWindowSetBorderless(w, 1); a = uiNewArea(&borderAH); // uiWindowSetChild(w, uiControl(a)); {uiBox *b; b=uiNewHorizontalBox(); uiBoxAppend(b,uiControl(a),1); uiWindowSetChild(w,uiControl(b));} //TODO why is this hack needed? GTK+ issue uiControlShow(uiControl(w)); }
static Janet janet_ui_window(int32_t argc, Janet *argv) { assert_inited(); const char *title = ""; int32_t width = 800; int32_t height = 600; int menuBar = 0; janet_arity(argc, 0, 4); if (argc >= 1) title = (const char *) janet_getstring(argv, 0); if (argc >= 2) width = janet_getinteger(argv, 1); if (argc >= 3) height = janet_getinteger(argv, 2); if (argc >= 4) menuBar = janet_getboolean(argv, 3); uiWindow *window = uiNewWindow(title, width, height, menuBar); if (NULL == window) janet_panic("could not create windows"); uiWindowOnClosing(window, onClosing, NULL); return janet_ui_handle_to_control(window, &window_td); }
static void openTestWindow(uiBox *(*mkf)(void)) { uiWindow *w; uiBox *b; uiCombobox *c; uiEditableCombobox *e; uiRadioButtons *r; w = uiNewWindow("Test", 100, 100, 0); uiWindowOnClosing(w, winClose, NULL); uiWindowSetMargined(w, 1); b = (*mkf)(); uiWindowSetChild(w, uiControl(b)); #define BA(x) uiBoxAppend(b, uiControl(x), 0) BA(uiNewButton("")); BA(uiNewCheckbox("")); BA(uiNewEntry()); BA(uiNewLabel("")); BA(uiNewSpinbox(0, 100)); BA(uiNewProgressBar()); BA(uiNewSlider(0, 100)); BA(uiNewHorizontalSeparator()); c = uiNewCombobox(); uiComboboxAppend(c, ""); BA(c); e = uiNewEditableCombobox(); uiEditableComboboxAppend(e, ""); BA(e); r = uiNewRadioButtons(); uiRadioButtonsAppend(r, ""); BA(r); BA(uiNewDateTimePicker()); BA(uiNewDatePicker()); BA(uiNewTimePicker()); BA(uiNewMultilineEntry()); // TODO nonscrolling and scrolling areas? BA(uiNewFontButton()); BA(uiNewColorButton()); BA(uiNewPasswordEntry()); BA(uiNewSearchEntry()); BA(uiNewVerticalSeparator()); uiControlShow(uiControl(w)); }
Window::Window(string title) : title{title}, mainLayout{uiNewHorizontalBox()}, histogram(handler, datapoints, color) { mainwin = uiNewWindow(title.c_str(), 640, 480, 0); uiWindowSetMargined(mainwin, 1); uiBoxSetPadded(mainLayout, 1); uiWindowSetChild(mainwin, uiControl(mainLayout)); typedef void (*callback_handlerdraw_t)(uiAreaHandler*, uiArea*, uiAreaDrawParams*); Callback<void(uiAreaHandler*, uiArea*, uiAreaDrawParams*)>::func = std::bind(&Window::handlerDraw, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); callback_handlerdraw_t handlerDrawFunction = static_cast<callback_handlerdraw_t>(Callback<void(uiAreaHandler*, uiArea*, uiAreaDrawParams*)>::callback); typedef void (*callback_handlermouseevent_t)(uiAreaHandler*, uiArea*, uiAreaMouseEvent*); Callback<void(uiAreaHandler*, uiArea*, uiAreaMouseEvent*)>::func = std::bind(&Window::handlerMouseEvent, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); callback_handlermouseevent_t handlerMouseeventFunction = static_cast<callback_handlermouseevent_t>(Callback<void(uiAreaHandler*, uiArea*, uiAreaMouseEvent*)>::callback); // only draw and mouseEvent are implemented for now // they are "filled" by the widgets handler.Draw = handlerDrawFunction; handler.MouseEvent = handlerMouseeventFunction; handler.MouseCrossed = [] (uiAreaHandler *ha, uiArea *a, int left) {}; handler.DragBroken = [] (uiAreaHandler *ah, uiArea *a) {}; handler.KeyEvent = [] (uiAreaHandler *ah, uiArea *a, uiAreaKeyEvent *e) {return 0;}; // reject all keys // todo: the data should be stored in the histogramm application, // not in the window // TODO: the datapoints and color are not passed correctly by reference! toolbox.attach(mainLayout); histogram.attachToolboxController(toolbox); histogram.attachHandlerController(this); histogram.attach(mainLayout); uiWindowOnClosing(mainwin, [](uiWindow *w, void *data) {uiControlDestroy(uiControl(w)); uiQuit(); return 0;}, NULL); typedef int (*callback_quitfunction_t)(void*); Callback<int(void*)>::func = std::bind(&Window::onQuit, this, std::placeholders::_1); callback_quitfunction_t quitFunction = static_cast<callback_quitfunction_t>(Callback<int(void*)>::callback); uiOnShouldQuit(quitFunction, NULL); }
int main(int argc, char **argv){ uiEntity *s; char replay_path[512]; int replay_file = 0; char log_path[512]; int log_file = 0; int skip_renders = 0; int no_gui = 0; int i = argc; hlInit(); while(i--){ if(!strncmp(argv[i],"--replay=",9)){ if(!sscanf(argv[i],"--replay=%511s",replay_path)){ fprintf(stderr,"ERROR: no path provided to --replay=PATH option\n"); exit(1); }else{ fprintf(stdout,"Replay file path: %s\n",replay_path); replay_file = 1; } }else if(!strncmp(argv[i],"--logfile=",10)){ if(!sscanf(argv[i],"--logfile=%511s",log_path)){ fprintf(stderr,"ERROR: no path provided to --logfile=PATH option\n"); exit(1); }else{ fprintf(stdout,"Log file path: %s\n",log_path); log_file = 1; } }else if(!strncmp(argv[i],"--boxcount=",11)){ int box_count = 0; if(!sscanf(argv[i],"--boxcount=%d",&box_count)){ fprintf(stderr,"ERROR: no integer provided to --boxcount=INT option\n"); exit(1); }else{ fprintf(stdout,"Box count : %d\n",box_count); uiHlSetBoxCount(box_count); } }else if(!strncmp(argv[i],"--maxratio=",11)){ float max_ratio= 0.0f; if(!sscanf(argv[i],"--maxratio=%f",&max_ratio)){ fprintf(stderr,"ERROR: no float provided to --max_ratio=FLOAT option\n"); exit(1); }else{ fprintf(stdout,"Max ratio : %f\n",max_ratio); uiHlSetMaxRatio(max_ratio); } }else if(!strncmp(argv[i],"--box[",6)){ int box_index = 0; int box_depth = 64; if(sscanf(argv[i],"--box[%d]=%d",&box_index,&box_depth)<2){ fprintf(stderr,"ERROR: wrong format of --box[INT]=INT option\n"); exit(1); }else{ fprintf(stdout,"Box[%d] : %d\n",box_index,box_depth); uiHlSetBoxDepth(box_index,box_depth); } }else if(!strncmp(argv[i],"--skip-renders",14)){ fprintf(stdout,"Skipping renders\n"); skip_renders = 1; }else if(!strncmp(argv[i],"--no-gui",8)){ no_gui = 1; }else if(!strncmp(argv[i],"--help",6)){ fprintf(stdout,"OPTIONS :\n\t --skip-renders\n\t --logfile=PATH\n\t --replay=PATH\n\t --boxcount=INT\n\t --box[INT]=INT\n\t --no-gui\n\t --help\n"); exit(0); }else if(i > 0){ fprintf(stderr,"WARNING: unknown option '%s'\n try '--help' for more information\n",argv[i]); } } if(log_file){ uiHlLog(log_path); }else{ uiHlLog("/dev/null"); fprintf(stdout,"Log file path: /dev/null\n"); } uiNewWindow("Himalaya Alpha 1",800,600); s = uiScreenNew("MainScreen"); uiScreenSet(s); uiEntityAdd(uiSideBar(),s); uiEntityAdd(uiMainScreen(),s); if(replay_file){ fprintf(stdout,"REPLAY: logfile: %s \n",argv[1]); uiHlReplayLog(replay_path,canvas,skip_renders); fprintf(stdout,"REPLAY: end\n"); } if(!no_gui){ uiMainLoop(); } return 0; }
int main(void) { uiInitOptions o; const char *err; uiMenu *menu; uiMenuItem *item; uiBox *box; uiBox *hbox; uiGroup *group; uiBox *inner; uiBox *inner2; uiEntry *entry; uiCombobox *cbox; uiRadioButtons *rb; uiTab *tab; memset(&o, 0, sizeof (uiInitOptions)); err = uiInit(&o); if (err != NULL) { fprintf(stderr, "error initializing ui: %s\n", err); uiFreeInitError(err); return 1; } menu = uiNewMenu("File"); item = uiMenuAppendItem(menu, "Open"); uiMenuItemOnClicked(item, openClicked, NULL); item = uiMenuAppendItem(menu, "Save"); uiMenuItemOnClicked(item, saveClicked, NULL); item = uiMenuAppendQuitItem(menu); uiOnShouldQuit(shouldQuit, NULL); menu = uiNewMenu("Edit"); item = uiMenuAppendCheckItem(menu, "Checkable Item"); uiMenuAppendSeparator(menu); item = uiMenuAppendItem(menu, "Disabled Item"); uiMenuItemDisable(item); item = uiMenuAppendPreferencesItem(menu); menu = uiNewMenu("Help"); item = uiMenuAppendItem(menu, "Help"); item = uiMenuAppendAboutItem(menu); mainwin = uiNewWindow("libui Control Gallery", 640, 480, 1); uiWindowSetMargined(mainwin, 1); uiWindowOnClosing(mainwin, onClosing, NULL); box = uiNewVerticalBox(); uiBoxSetPadded(box, 1); uiWindowSetChild(mainwin, uiControl(box)); hbox = uiNewHorizontalBox(); uiBoxSetPadded(hbox, 1); uiBoxAppend(box, uiControl(hbox), 1); group = uiNewGroup("Basic Controls"); uiGroupSetMargined(group, 1); uiBoxAppend(hbox, uiControl(group), 0); inner = uiNewVerticalBox(); uiBoxSetPadded(inner, 1); uiGroupSetChild(group, uiControl(inner)); uiBoxAppend(inner, uiControl(uiNewButton("Button")), 0); uiBoxAppend(inner, uiControl(uiNewCheckbox("Checkbox")), 0); entry = uiNewEntry(); uiEntrySetText(entry, "Entry"); uiBoxAppend(inner, uiControl(entry), 0); uiBoxAppend(inner, uiControl(uiNewLabel("Label")), 0); uiBoxAppend(inner, uiControl(uiNewHorizontalSeparator()), 0); uiBoxAppend(inner, uiControl(uiNewDatePicker()), 0); uiBoxAppend(inner, uiControl(uiNewTimePicker()), 0); uiBoxAppend(inner, uiControl(uiNewDateTimePicker()), 0); uiBoxAppend(inner, uiControl(uiNewFontButton()), 0); uiBoxAppend(inner, uiControl(uiNewColorButton()), 0); inner2 = uiNewVerticalBox(); uiBoxSetPadded(inner2, 1); uiBoxAppend(hbox, uiControl(inner2), 1); group = uiNewGroup("Numbers"); uiGroupSetMargined(group, 1); uiBoxAppend(inner2, uiControl(group), 0); inner = uiNewVerticalBox(); uiBoxSetPadded(inner, 1); uiGroupSetChild(group, uiControl(inner)); spinbox = uiNewSpinbox(0, 100); uiSpinboxOnChanged(spinbox, onSpinboxChanged, NULL); uiBoxAppend(inner, uiControl(spinbox), 0); slider = uiNewSlider(0, 100); uiSliderOnChanged(slider, onSliderChanged, NULL); uiBoxAppend(inner, uiControl(slider), 0); progressbar = uiNewProgressBar(); uiBoxAppend(inner, uiControl(progressbar), 0); group = uiNewGroup("Lists"); uiGroupSetMargined(group, 1); uiBoxAppend(inner2, uiControl(group), 0); inner = uiNewVerticalBox(); uiBoxSetPadded(inner, 1); uiGroupSetChild(group, uiControl(inner)); cbox = uiNewCombobox(); uiComboboxAppend(cbox, "Combobox Item 1"); uiComboboxAppend(cbox, "Combobox Item 2"); uiComboboxAppend(cbox, "Combobox Item 3"); uiBoxAppend(inner, uiControl(cbox), 0); cbox = uiNewEditableCombobox(); uiComboboxAppend(cbox, "Editable Item 1"); uiComboboxAppend(cbox, "Editable Item 2"); uiComboboxAppend(cbox, "Editable Item 3"); uiBoxAppend(inner, uiControl(cbox), 0); rb = uiNewRadioButtons(); uiRadioButtonsAppend(rb, "Radio Button 1"); uiRadioButtonsAppend(rb, "Radio Button 2"); uiRadioButtonsAppend(rb, "Radio Button 3"); uiBoxAppend(inner, uiControl(rb), 1); tab = uiNewTab(); uiTabAppend(tab, "Page 1", uiControl(uiNewHorizontalBox())); uiTabAppend(tab, "Page 2", uiControl(uiNewHorizontalBox())); uiTabAppend(tab, "Page 3", uiControl(uiNewHorizontalBox())); uiBoxAppend(inner2, uiControl(tab), 1); uiControlShow(uiControl(mainwin)); uiMain(); uiUninit(); return 0; }