mirror of https://gitlab.com/nakst/essence
bugfixes; designer2 arrow modes
This commit is contained in:
parent
4ad2395977
commit
ab84ab91ae
|
@ -1055,7 +1055,7 @@ void _start() {
|
|||
|
||||
EsPanel *buttonsRow = EsPanelCreate(panelInstallOptions, ES_CELL_H_FILL | ES_PANEL_HORIZONTAL, &styleButtonsRow);
|
||||
EsButtonOnCommand(EsButtonCreate(buttonsRow, ES_FLAGS_DEFAULT, 0, INTERFACE_STRING(InstallerViewLicenses)), ButtonViewLicenses);
|
||||
EsButtonOnCommand(EsButtonCreate(buttonsRow, ES_FLAGS_DEFAULT, 0, INTERFACE_STRING(DesktopShutdownAction)), ButtonShutdown);
|
||||
EsButtonOnCommand(EsButtonCreate(buttonsRow, ES_FLAGS_DEFAULT, ES_STYLE_PUSH_BUTTON_DANGEROUS, INTERFACE_STRING(DesktopShutdownAction)), ButtonShutdown);
|
||||
EsSpacerCreate(buttonsRow, ES_CELL_H_FILL);
|
||||
installButton = EsButtonCreate(buttonsRow, ES_ELEMENT_DISABLED, 0, INTERFACE_STRING(InstallerInstall));
|
||||
EsButtonOnCommand(installButton, ButtonInstall);
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
define ES_STYLE_SEPARATOR_HORIZONTAL (ES_STYLE_CAST(1373))
|
||||
private define ES_STYLE_SCROLLBAR_PAD (ES_STYLE_CAST(1371))
|
||||
private define ES_STYLE__TEST_STYLE (ES_STYLE_CAST(1385))
|
||||
private define ES_STYLE_ACCESS_KEY_HINT (ES_STYLE_CAST(1221))
|
||||
private define ES_STYLE_ANNOUNCEMENT (ES_STYLE_CAST(1511))
|
||||
|
@ -119,4 +120,3 @@ private define ES_STYLE_WINDOW_TAB_INACTIVE (ES_STYLE_CAST(1409))
|
|||
private define ES_STYLE_SCROLLBAR_BAR_VERTICAL (ES_STYLE_CAST(1365))
|
||||
private define ES_STYLE_SCROLLBAR_THUMB_HORIZONTAL (ES_STYLE_CAST(1367))
|
||||
private define ES_STYLE_SCROLLBAR_THUMB_VERTICAL (ES_STYLE_CAST(1369))
|
||||
private define ES_STYLE_SCROLLBAR_PAD (ES_STYLE_CAST(1371))
|
||||
|
|
Binary file not shown.
BIN
res/Theme.dat
BIN
res/Theme.dat
Binary file not shown.
|
@ -1121,9 +1121,6 @@ void DoCommand(const char *l) {
|
|||
} else if (0 == strcmp(l, "config")) {
|
||||
BuildUtilities();
|
||||
CallSystem("bin/config_editor");
|
||||
} else if (0 == strcmp(l, "designer")) {
|
||||
BuildUtilities();
|
||||
CallSystem("bin/designer \"res/Theme Source.dat\" \"res/Theme.dat\" \"desktop/styles.header\"");
|
||||
} else if (0 == strcmp(l, "designer2")) {
|
||||
BuildUtilities();
|
||||
CallSystem("bin/designer2");
|
||||
|
|
|
@ -20,7 +20,8 @@
|
|||
// Prototyping display: previewing state transitions.
|
||||
|
||||
// TODO Additional features:
|
||||
// Method to iterate through all the objects that link to selected object.
|
||||
// Change the type of an object in-place.
|
||||
// Undoing a delete does not previous an instance's layer.
|
||||
// Sorted list in ObjectAddInstanceCommand.
|
||||
// Hide arrows to colors.
|
||||
// Having to link to the end of a conditional object chain is a bit strange.
|
||||
|
@ -213,7 +214,14 @@ const EsInstanceClassEditorSettings instanceClassEditorSettings = {
|
|||
#endif
|
||||
|
||||
struct Canvas : UIElement {
|
||||
bool showArrows;
|
||||
#define ARROW_MODE_NONE (0)
|
||||
#define ARROW_MODE_ALL (1)
|
||||
#define ARROW_MODE_FROM (2)
|
||||
#define ARROW_MODE_TO (3)
|
||||
#define ARROW_MODE_FROM_OR_TO (4)
|
||||
#define ARROW_MODE_FROM_AND_TO (5)
|
||||
uint8_t arrowMode;
|
||||
|
||||
bool showPrototype;
|
||||
|
||||
float zoom;
|
||||
|
@ -692,7 +700,7 @@ void DocumentApplyStep(Step step, StepApplyMode mode = STEP_APPLY_NORMAL) {
|
|||
for (uintptr_t i = 0; i < objects.Length(); i++) {
|
||||
if (objects[i].id == step.objectID) {
|
||||
step.object = objects[i];
|
||||
objects.DeleteSwap(i);
|
||||
objects.Delete(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -2542,7 +2550,7 @@ int CanvasMessage(UIElement *element, UIMessage message, int di, void *dp) {
|
|||
}
|
||||
}
|
||||
|
||||
if (canvas->showArrows && !canvas->showPrototype) {
|
||||
if (canvas->arrowMode && !canvas->showPrototype) {
|
||||
// Draw object connections.
|
||||
|
||||
for (uintptr_t i = 0; i < objects.Length(); i++) {
|
||||
|
@ -2554,6 +2562,21 @@ int CanvasMessage(UIElement *element, UIMessage message, int di, void *dp) {
|
|||
if (object->properties[j].type == PROP_OBJECT) {
|
||||
Object *target = ObjectFind(object->properties[j].object);
|
||||
if (!target) continue;
|
||||
|
||||
bool sourceIsSelected = object->flags & OBJECT_IS_SELECTED;
|
||||
bool targetIsSelected = target->flags & OBJECT_IS_SELECTED;
|
||||
|
||||
if (canvas->arrowMode == ARROW_MODE_ALL) {
|
||||
} else if (canvas->arrowMode == ARROW_MODE_FROM) {
|
||||
if (!sourceIsSelected) continue;
|
||||
} else if (canvas->arrowMode == ARROW_MODE_TO) {
|
||||
if (!targetIsSelected) continue;
|
||||
} else if (canvas->arrowMode == ARROW_MODE_FROM_OR_TO) {
|
||||
if (!targetIsSelected && !sourceIsSelected) continue;
|
||||
} else if (canvas->arrowMode == ARROW_MODE_FROM_AND_TO) {
|
||||
if (!targetIsSelected || !sourceIsSelected) continue;
|
||||
}
|
||||
|
||||
UIRectangle b2 = CanvasGetObjectBounds(target);
|
||||
CanvasDrawArrow(painter, (b2.l + b2.r) / 2, (b2.t + b2.b) / 2, (b1.l + b1.r) / 2, (b1.t + b1.b) / 2, 0xFF000000);
|
||||
}
|
||||
|
@ -2743,11 +2766,22 @@ int CanvasMessage(UIElement *element, UIMessage message, int di, void *dp) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
void CanvasToggleArrows(void *) {
|
||||
canvas->showArrows = !canvas->showArrows;
|
||||
void CanvasArrowModeInternal(void *cp) {
|
||||
canvas->arrowMode = (uintptr_t) cp;
|
||||
UIElementRepaint(canvas, nullptr);
|
||||
}
|
||||
|
||||
void CanvasArrowMode(void *) {
|
||||
UIMenu *menu = UIMenuCreate(window->pressed, UI_MENU_NO_SCROLL | UI_MENU_PLACE_ABOVE);
|
||||
UIMenuAddItem(menu, 0, "None", -1, CanvasArrowModeInternal, (void *) (uintptr_t) ARROW_MODE_NONE);
|
||||
UIMenuAddItem(menu, 0, "All", -1, CanvasArrowModeInternal, (void *) (uintptr_t) ARROW_MODE_ALL);
|
||||
UIMenuAddItem(menu, 0, "From selected", -1, CanvasArrowModeInternal, (void *) (uintptr_t) ARROW_MODE_FROM);
|
||||
UIMenuAddItem(menu, 0, "To selected", -1, CanvasArrowModeInternal, (void *) (uintptr_t) ARROW_MODE_TO);
|
||||
UIMenuAddItem(menu, 0, "From or to selected", -1, CanvasArrowModeInternal, (void *) (uintptr_t) ARROW_MODE_FROM_OR_TO);
|
||||
UIMenuAddItem(menu, 0, "From and to selected", -1, CanvasArrowModeInternal, (void *) (uintptr_t) ARROW_MODE_FROM_AND_TO);
|
||||
UIMenuShow(menu);
|
||||
}
|
||||
|
||||
void CanvasSwitchView(void *) {
|
||||
float z = canvas->swapZoom, x = canvas->swapPanX, y = canvas->swapPanY;
|
||||
canvas->swapZoom = canvas->zoom, canvas->swapPanX = canvas->panX, canvas->swapPanY = canvas->panY;
|
||||
|
@ -3243,15 +3277,16 @@ void Export() {
|
|||
exportOffset.offset = ftell(output);
|
||||
exportOffsets.Add(exportOffset);
|
||||
|
||||
#define LAYER_READ_INT32(x) sprintf(cPropertyName, "layers_%d_" #x, i); int8_t x = PropertyReadInt32(appearance, cPropertyName)
|
||||
LAYER_READ_INT32(offset0);
|
||||
LAYER_READ_INT32(offset1);
|
||||
LAYER_READ_INT32(offset2);
|
||||
LAYER_READ_INT32(offset3);
|
||||
LAYER_READ_INT32(position0);
|
||||
LAYER_READ_INT32(position1);
|
||||
LAYER_READ_INT32(position2);
|
||||
LAYER_READ_INT32(position3);
|
||||
#define LAYER_READ_INT8(x) sprintf(cPropertyName, "layers_%d_" #x, i); int8_t x = PropertyReadInt32(appearance, cPropertyName)
|
||||
LAYER_READ_INT8(offset0);
|
||||
LAYER_READ_INT8(offset1);
|
||||
LAYER_READ_INT8(offset2);
|
||||
LAYER_READ_INT8(offset3);
|
||||
LAYER_READ_INT8(position0);
|
||||
LAYER_READ_INT8(position1);
|
||||
LAYER_READ_INT8(position2);
|
||||
LAYER_READ_INT8(position3);
|
||||
LAYER_READ_INT8(mode);
|
||||
#undef LAYER_READ_INT32
|
||||
|
||||
uint8_t baseDataBuffer[4096];
|
||||
|
@ -3272,8 +3307,8 @@ void Export() {
|
|||
} else if (layerObject->type == OBJ_LAYER_TEXT) {
|
||||
layer.type = THEME_LAYER_TEXT;
|
||||
ThemeLayerText text = {};
|
||||
ExportI8(&context, text, blur, object, "blur");
|
||||
ExportColor(&context, text, color, object, "color");
|
||||
ExportI8(&context, text, blur, layerObject, "blur");
|
||||
ExportColor(&context, text, color, layerObject, "color");
|
||||
ExportWrite(&context, &text, sizeof(text));
|
||||
} else {
|
||||
assert(false);
|
||||
|
@ -3282,6 +3317,7 @@ void Export() {
|
|||
layer.dataByteCount = baseData.position + sizeof(layer);
|
||||
layer.overrideCount = overrideData.position / sizeof(ThemeOverride);
|
||||
layer.overrideListOffset = layer.dataByteCount + ftell(output);
|
||||
layer.mode = mode;
|
||||
fwrite(&layer, 1, sizeof(layer), output);
|
||||
fwrite(baseData.out, 1, baseData.position, output);
|
||||
fwrite(overrideData.out, 1, overrideData.position, output);
|
||||
|
@ -3452,7 +3488,7 @@ int main(int argc, char **argv) {
|
|||
|
||||
graphControls = UIPanelCreate(canvas, UI_PANEL_HORIZONTAL | UI_ELEMENT_PARENT_PUSH);
|
||||
graphControls->gap = -1;
|
||||
UIButtonCreate(0, UI_BUTTON_SMALL, "Toggle arrows", -1)->invoke = CanvasToggleArrows;
|
||||
UIButtonCreate(0, UI_BUTTON_SMALL, "Arrow mode \x18", -1)->invoke = CanvasArrowMode;
|
||||
UIButtonCreate(0, UI_BUTTON_SMALL, "Add object \x18", -1)->invoke = ObjectAddCommand;
|
||||
UIParentPop();
|
||||
|
||||
|
@ -3468,6 +3504,7 @@ int main(int argc, char **argv) {
|
|||
|
||||
canvas->zoom = canvas->swapZoom = 1.0f;
|
||||
canvas->previewPrimaryState = THEME_PRIMARY_STATE_IDLE;
|
||||
canvas->arrowMode = ARROW_MODE_FROM_OR_TO;
|
||||
|
||||
UIWindowRegisterShortcut(window, UI_SHORTCUT(UI_KEYCODE_LETTER('Z'), 1 /* ctrl */, 0, 0, DocumentUndoStep, 0));
|
||||
UIWindowRegisterShortcut(window, UI_SHORTCUT(UI_KEYCODE_LETTER('Y'), 1 /* ctrl */, 0, 0, DocumentRedoStep, 0));
|
||||
|
|
Loading…
Reference in New Issue