void structArtwordEditor :: v_createChildren () { int dy = Machine_getMenuBarHeight (); GuiLabel_createShown (d_windowForm, 40, 100, dy + 3, dy + 3 + Gui_LABEL_HEIGHT, U"Targets:", 0); GuiLabel_createShown (d_windowForm, 5, 65, dy + 20, dy + 20 + Gui_LABEL_HEIGHT, U"Times:", 0); GuiLabel_createShown (d_windowForm, 80, 140, dy + 20, dy + 20 + Gui_LABEL_HEIGHT, U"Values:", 0); list = GuiList_createShown (d_windowForm, 0, 140, dy + 40, dy + 340, true, nullptr); GuiButton_createShown (d_windowForm, 10, 130, dy + 410, dy + 410 + Gui_PUSHBUTTON_HEIGHT, U"Remove target", gui_button_cb_removeTarget, this, 0); drawingArea = GuiDrawingArea_createShown (d_windowForm, 170, 470, dy + 10, dy + 310, gui_drawingarea_cb_expose, gui_drawingarea_cb_click, nullptr, nullptr, this, 0); GuiLabel_createShown (d_windowForm, 220, 270, dy + 340, dy + 340 + Gui_LABEL_HEIGHT, U"Time:", 0); time = GuiText_createShown (d_windowForm, 270, 370, dy + 340, dy + 340 + Gui_TEXTFIELD_HEIGHT, 0); GuiLabel_createShown (d_windowForm, 220, 270, dy + 370, dy + 370 + Gui_LABEL_HEIGHT, U"Value:", 0); value = GuiText_createShown (d_windowForm, 270, 370, dy + 370, dy + 370 + Gui_TEXTFIELD_HEIGHT, 0); GuiButton_createShown (d_windowForm, 240, 360, dy + 410, dy + 410 + Gui_PUSHBUTTON_HEIGHT, U"Add target", gui_button_cb_addTarget, this, GuiButton_DEFAULT); dy = Machine_getMenuBarHeight (); GuiRadioGroup_begin (); for (int i = 1; i <= kArt_muscle_MAX; i ++) { button [i] = GuiRadioButton_createShown (d_windowForm, 480, 0, dy, dy + Gui_RADIOBUTTON_HEIGHT, kArt_muscle_getText (i), gui_radiobutton_cb_toggle, this, 0); dy += Gui_RADIOBUTTON_HEIGHT + Gui_RADIOBUTTON_SPACING - 2; } GuiRadioGroup_end (); feature = 1; GuiRadioButton_set (button [feature]); }
void structTextEditor :: v_goAway () { if (v_fileBased () && dirty) { if (! dirtyCloseDialog) { int buttonWidth = 120, buttonSpacing = 20; dirtyCloseDialog = GuiDialog_create (d_windowForm, 150, 70, Gui_LEFT_DIALOG_SPACING + 3 * buttonWidth + 2 * buttonSpacing + Gui_RIGHT_DIALOG_SPACING, Gui_TOP_DIALOG_SPACING + Gui_TEXTFIELD_HEIGHT + Gui_VERTICAL_DIALOG_SPACING_SAME + 2 * Gui_BOTTOM_DIALOG_SPACING + Gui_PUSHBUTTON_HEIGHT, U"Text changed", nullptr, nullptr, GuiDialog_MODAL); GuiLabel_createShown (dirtyCloseDialog, Gui_LEFT_DIALOG_SPACING, - Gui_RIGHT_DIALOG_SPACING, Gui_TOP_DIALOG_SPACING, Gui_TOP_DIALOG_SPACING + Gui_LABEL_HEIGHT, U"The text has changed! Save changes?", 0); int x = Gui_LEFT_DIALOG_SPACING, y = - Gui_BOTTOM_DIALOG_SPACING; GuiButton_createShown (dirtyCloseDialog, x, x + buttonWidth, y - Gui_PUSHBUTTON_HEIGHT, y, U"Discard & Close", gui_button_cb_discardAndClose, this, 0); x += buttonWidth + buttonSpacing; GuiButton_createShown (dirtyCloseDialog, x, x + buttonWidth, y - Gui_PUSHBUTTON_HEIGHT, y, U"Cancel", gui_button_cb_cancelClose, this, 0); x += buttonWidth + buttonSpacing; GuiButton_createShown (dirtyCloseDialog, x, x + buttonWidth, y - Gui_PUSHBUTTON_HEIGHT, y, U"Save & Close", gui_button_cb_saveAndClose, this, 0); } GuiThing_show (dirtyCloseDialog); } else { closeDocument (this); } }
static void menu_cb_new (TextEditor me, EDITOR_ARGS_CMD) { if (my v_fileBased () && my dirty) { if (! my dirtyNewDialog) { int buttonWidth = 120, buttonSpacing = 20; my dirtyNewDialog = GuiDialog_create (my d_windowForm, 150, 70, Gui_LEFT_DIALOG_SPACING + 3 * buttonWidth + 2 * buttonSpacing + Gui_RIGHT_DIALOG_SPACING, Gui_TOP_DIALOG_SPACING + Gui_TEXTFIELD_HEIGHT + Gui_VERTICAL_DIALOG_SPACING_SAME + 2 * Gui_BOTTOM_DIALOG_SPACING + Gui_PUSHBUTTON_HEIGHT, U"Text changed", nullptr, nullptr, GuiDialog_MODAL); GuiLabel_createShown (my dirtyNewDialog, Gui_LEFT_DIALOG_SPACING, - Gui_RIGHT_DIALOG_SPACING, Gui_TOP_DIALOG_SPACING, Gui_TOP_DIALOG_SPACING + Gui_LABEL_HEIGHT, U"The text has changed! Save changes?", 0); int x = Gui_LEFT_DIALOG_SPACING, y = - Gui_BOTTOM_DIALOG_SPACING; GuiButton_createShown (my dirtyNewDialog, x, x + buttonWidth, y - Gui_PUSHBUTTON_HEIGHT, y, U"Discard & New", gui_button_cb_discardAndNew, cmd, 0); x += buttonWidth + buttonSpacing; GuiButton_createShown (my dirtyNewDialog, x, x + buttonWidth, y - Gui_PUSHBUTTON_HEIGHT, y, U"Cancel", gui_button_cb_cancelNew, cmd, 0); x += buttonWidth + buttonSpacing; GuiButton_createShown (my dirtyNewDialog, x, x + buttonWidth, y - Gui_PUSHBUTTON_HEIGHT, y, U"Save & New", gui_button_cb_saveAndNew, cmd, 0); } GuiThing_show (my dirtyNewDialog); } else { newDocument (me); } }
// origin is at top left. void structCategoriesEditor :: v_createChildren () { constexpr int menuBarOffset { 40 }; constexpr int button_width { 130 }, button_height { menuBarOffset }, list_width { 260 }, list_height { 420 }; constexpr int delta_x { 15 }, delta_y { menuBarOffset / 2 }, text_button_height { button_height / 2 }; int left, right, top, bottom, buttons_left, buttons_top, list_bottom; left = 5; right = left + button_width; top = 3 + menuBarOffset; bottom = top + text_button_height; GuiLabel_createShown (d_windowForm, left, right, top, bottom, U"Positions:", 0); left = right + delta_x ; right = left + button_width; GuiLabel_createShown (d_windowForm, left, right, top, bottom, U"Values:", 0); left = 0; right = left + list_width; buttons_top = (top = bottom + delta_y); list_bottom = bottom = top + list_height; list = GuiList_create (d_windowForm, left, right, top, bottom, true, 0); GuiList_setSelectionChangedCallback (list, gui_list_cb_selectionChanged, this); GuiList_setDoubleClickCallback (list, gui_list_cb_doubleClick, this); GuiList_setScrollCallback (list, gui_list_cb_scroll, this); GuiThing_show (list); buttons_left = left = right + 2 * delta_x; right = left + button_width; bottom = top + button_height; GuiLabel_createShown (d_windowForm, left, right, top, bottom, U"Value:", 0); left = right + delta_x; right = left + button_width; text = GuiText_createShown (d_windowForm, left, right, top, bottom, 0); GuiText_setString (text, CategoriesEditor_EMPTYLABEL); left = buttons_left; right = left + button_width; top = bottom + delta_y; bottom = top + button_height; insert = GuiButton_createShown (d_windowForm, left, right, top, bottom, U"Insert", gui_button_cb_insert, this, GuiButton_DEFAULT); left = right + delta_x; right = left + button_width; replace = GuiButton_createShown (d_windowForm, left, right, top, bottom, U"Replace", gui_button_cb_replace, this, 0); left = buttons_left; right = left + int (1.5 * button_width); top = bottom + delta_y; bottom = top + button_height; insertAtEnd = GuiButton_createShown (d_windowForm, left, right, top, bottom, U"Insert at end", gui_button_cb_insertAtEnd, this, 0); top = bottom + delta_y; bottom = top + button_height; undo = GuiButton_createShown (d_windowForm, left, right, top, bottom, U"Undo", gui_button_cb_undo, this, 0); top = bottom + delta_y; bottom = top + button_height; redo = GuiButton_createShown (d_windowForm, left, right, top, bottom, U"Redo", gui_button_cb_redo, this, 0); top = bottom + delta_y; bottom = top + button_height; remove = GuiButton_createShown (d_windowForm, left, right, top, bottom, U"Remove", gui_button_cb_remove, this, 0); top = bottom + delta_y; bottom = top + button_height; moveUp = GuiButton_createShown (d_windowForm, left, right, top, bottom, U"Move selection up", gui_button_cb_moveUp, this, 0); top = bottom + delta_y; bottom = top + button_height; moveDown = GuiButton_createShown (d_windowForm, left, right, top, bottom, U"Move selection down", gui_button_cb_moveDown, this, 0); top = list_bottom + delta_y; bottom = top + button_height; left = 5; right = left + 200; outOfView = GuiLabel_createShown (d_windowForm, left, right, top, bottom, U"", 0); }