static void CreateUI(void) { const struct { const char *name; const AG_Unit *p; } units[] = { { "Len", agLengthUnits }, { "Ang", agAngleUnits }, { "Mass", agMassUnits }, { "Area", agAreaUnits }, { "Vol", agVolumeUnits }, { "Spd", agSpeedUnits }, { "Time", agTimeUnits }, { "Temp", agTemperatureUnits }, { "Pwr", agPowerUnits }, { "Press", agPressureUnits }, { "Vac", agVacuumUnits }, { "Met", agMetabolicExpenditureUnits }, }; int i; AG_Window *win; AG_Toolbar *tb; win = AG_WindowNew(0); AG_WindowSetCaption(win, "Unit Converter"); AG_WindowSetPadding(win, 10, 10, 10, 10); tb = AG_ToolbarNew(win, AG_TOOLBAR_HORIZ, 2, AG_TOOLBAR_HOMOGENOUS| AG_TOOLBAR_STICKY| AG_TOOLBAR_HFILL); for (i = 0; i < sizeof(units)/sizeof(units[0]); i++) { if (i == 6) { AG_ToolbarRow(tb, 1); } AG_ToolbarButton(tb, units[i].name, (i == 0), SelectCategory, "%p", units[i].p); } AG_SeparatorNewHoriz(win); n1 = AG_NumericalNewS(win, AG_NUMERICAL_HFILL, "in", "Value: "); n2 = AG_NumericalNewS(win, AG_NUMERICAL_HFILL, "mm", "Value: "); AG_BindDouble(n1, "value", &value); AG_BindDouble(n2, "value", &value); AG_NumericalSizeHint(n1, "0000.00"); AG_NumericalSizeHint(n2, "0000.00"); AG_NumericalSetPrecision(n1, "g", 6); AG_NumericalSetPrecision(n2, "g", 6); AG_WindowShow(win); }
static void EditNumValues(AG_Event *event) { AG_HSVPal *pal = AG_PTR(1); AG_Window *pwin; AG_Window *win; AG_Numerical *num; AG_Variable *b1, *b2; float v; if ((pwin = AG_ParentWindow(pal)) == NULL) return; if ((win = AG_WindowNewNamed(AG_WINDOW_NOMAXIMIZE, "hsvpal-%p-numedit", pal)) == NULL) { return; } AG_WindowSetCaption(win, _("Color values")); AG_WindowSetPosition(win, AG_WINDOW_LOWER_LEFT, 0); AG_WindowSetCloseAction(win, AG_WINDOW_DETACH); { AG_Variable *bAlpha; void *pAlpha; num = AG_NumericalNew(win, 0, NULL, _("Hue: ")); AG_NumericalSizeHint(num, "000"); AG_WidgetCopyBinding(num, "value", pal, "hue"); AG_NumericalSetRange(num, 0.0, 359.0); AG_NumericalSetIncrement(num, 1); AG_NumericalSetPrecision(num, "f", 0); num = AG_NumericalNew(win, 0, NULL, _("Saturation: ")); AG_NumericalSizeHint(num, "00.00"); AG_WidgetCopyBinding(num, "value", pal, "saturation"); AG_NumericalSetRange(num, 0.0, 1.0); AG_NumericalSetIncrement(num, 0.01); AG_NumericalSetPrecision(num, "f", 2); num = AG_NumericalNew(win, 0, NULL, _("Value: ")); AG_NumericalSizeHint(num, "00.00"); AG_WidgetCopyBinding(num, "value", pal, "value"); AG_NumericalSetRange(num, 0.0, 1.0); AG_NumericalSetIncrement(num, 0.01); AG_NumericalSetPrecision(num, "f", 2); num = AG_NumericalNew(win, 0, NULL, _("Alpha: ")); AG_NumericalSizeHint(num, "0.000"); AG_WidgetCopyBinding(num, "value", pal, "alpha"); bAlpha = AG_GetVariable(pal, "alpha", &pAlpha); switch (AG_VARIABLE_TYPE(bAlpha)) { case AG_VARIABLE_FLOAT: case AG_VARIABLE_DOUBLE: AG_NumericalSetRange(num, 0.0, 1.0); AG_NumericalSetIncrement(num, 0.005); AG_NumericalSetPrecision(num, "f", 3); break; case AG_VARIABLE_INT: case AG_VARIABLE_UINT: case AG_VARIABLE_UINT8: AG_NumericalSetRange(num, 0.0, 255.0); AG_NumericalSetIncrement(num, 1.0); AG_NumericalSetPrecision(num, "f", 0); break; default: break; } AG_UnlockVariable(bAlpha); } AG_WindowAttach(pwin, win); AG_WindowShow(win); }