mirror of
https://github.com/raysan5/raygui.git
synced 2026-02-02 20:29:19 -05:00
Reviewed variables naming
- Removed useless code - Reorganized some code
This commit is contained in:
@ -121,6 +121,7 @@ const char *controlTypeNameShort[] = { "wdwbox", "grpbox", "lne", "pnl", "lbl",
|
|||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
// Module specific Functions Declaration
|
// Module specific Functions Declaration
|
||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
|
static void ShowSaveLayoutDialog(void); // Show save layout dialog
|
||||||
static void SaveLayoutRGL(const char *fileName, bool binary); // Save gui layout project information
|
static void SaveLayoutRGL(const char *fileName, bool binary); // Save gui layout project information
|
||||||
static void LoadLayoutRGL(const char *fileName); // Load gui layout project information
|
static void LoadLayoutRGL(const char *fileName); // Load gui layout project information
|
||||||
static void GenerateCode(const char *fileName, GuiLayoutConfig config); // Generate C code for gui layout
|
static void GenerateCode(const char *fileName, GuiLayoutConfig config); // Generate C code for gui layout
|
||||||
@ -134,48 +135,49 @@ int main()
|
|||||||
// Initialization
|
// Initialization
|
||||||
//--------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------
|
||||||
SetConfigFlags(FLAG_WINDOW_RESIZABLE);
|
SetConfigFlags(FLAG_WINDOW_RESIZABLE);
|
||||||
InitWindow(screenWidth, screenHeight, "rGuiLayout v1.0 - raygui layout editor");
|
InitWindow(screenWidth, screenHeight, "rGuiLayout v1.0 - not_saved_layout");
|
||||||
SetExitKey(0);
|
SetExitKey(0);
|
||||||
|
|
||||||
|
// General app variables
|
||||||
|
Vector2 mouse;
|
||||||
|
bool exitWindow = false; // Exit window flag
|
||||||
|
bool snapMode = false; // Snap mode flag (KEY_S)
|
||||||
|
bool showGrid = true; // Show grid flag (KEY_G)
|
||||||
|
bool controlLockMode = false; // Control edition locked mode
|
||||||
|
bool controlDrag = false; // Control drag mode
|
||||||
|
bool controlGlobalPos = false; // Control global position mode
|
||||||
|
bool textEditMode = false; // Control text edit mode (KEY_T)
|
||||||
|
bool nameEditMode = false; // Controlo name edit mode (KEY_N)
|
||||||
|
|
||||||
|
int framesCounter = 0;
|
||||||
|
int framesCounterSnap = 0;
|
||||||
int selectedControl = -1;
|
int selectedControl = -1;
|
||||||
|
int storedControl = -1;
|
||||||
int selectedType = WINDOWBOX;
|
int selectedType = WINDOWBOX;
|
||||||
int selectedTypeDraw = LABEL;
|
int selectedTypeDraw = LABEL;
|
||||||
|
Vector2 panControlOffset = { 0 };
|
||||||
|
Vector2 prevControlPosition = { 0 };
|
||||||
|
|
||||||
Vector2 mouse;
|
const char *listData[3] = { "ONE", "TWO", "THREE" }; // ToggleGroup, ComboBox, DropdownBox default data
|
||||||
bool snapMode = false;
|
const char *listViewData[4] = { "WINDOWBOX", "GROUPBOX", "LINE", "PANEL" }; // ListView default data
|
||||||
bool showGrid = true;
|
|
||||||
bool controlCollision = false; // Checks if the mouse is colliding with a control or list
|
|
||||||
bool controlDrag = false; // Allows the control to be moved with the mouse without detecting collision every frame
|
|
||||||
|
|
||||||
bool textEditMode = false;
|
// Anchors control variables
|
||||||
bool nameEditMode = false;
|
AnchorPoint auxAnchor = { 9, 0, 0, 0 };
|
||||||
int framesCounter = 0;
|
|
||||||
int saveControlSelected = -1;
|
|
||||||
char previewText[8] = "TEXTBOX";
|
|
||||||
bool anchorMode = false;
|
bool anchorMode = false;
|
||||||
bool anchorLinkMode = false;
|
bool anchorLinkMode = false;
|
||||||
|
bool anchorLockMode = false;
|
||||||
|
bool anchorPosEditMode = false;
|
||||||
int selectedAnchor = -1;
|
int selectedAnchor = -1;
|
||||||
int linkedAnchor = -1;
|
int linkedAnchor = -1;
|
||||||
|
int storedAnchor = -1;
|
||||||
|
|
||||||
AnchorPoint auxAnchor = { 9, 0, 0, 0};
|
// Help panel variables
|
||||||
bool anchorNewPos = false;
|
int helpPositionX = -300;
|
||||||
bool lockAnchorMode = false;
|
|
||||||
int saveAnchorSelected = -1;
|
|
||||||
|
|
||||||
int snapFrameCounter = 0;
|
|
||||||
|
|
||||||
bool lockMode = false;
|
|
||||||
bool globalReference = false;
|
|
||||||
|
|
||||||
int helpPosX = -300;
|
|
||||||
int helpCounter = 0;
|
int helpCounter = 0;
|
||||||
int startPosXHelp = -300;
|
int helpStartPositionX = -300;
|
||||||
int deltaPosXHelp = 0;
|
int helpDeltaPositionX = 0;
|
||||||
|
|
||||||
int fileCount = 0;
|
// Rectangles used on controls preview drawing
|
||||||
char **droppedFiles = { 0 };
|
|
||||||
|
|
||||||
// Used to draw the preview of selectedControl
|
|
||||||
Rectangle defaultRec[21] = {
|
Rectangle defaultRec[21] = {
|
||||||
(Rectangle){ 0, 0, 125, 50}, // WINDOWBOX
|
(Rectangle){ 0, 0, 125, 50}, // WINDOWBOX
|
||||||
(Rectangle){ 0, 0, 125, 30}, // GROUPBOX
|
(Rectangle){ 0, 0, 125, 30}, // GROUPBOX
|
||||||
@ -200,70 +202,6 @@ int main()
|
|||||||
(Rectangle){ 0, 0, 125, 30 } // DUMMYREC
|
(Rectangle){ 0, 0, 125, 30 } // DUMMYREC
|
||||||
};
|
};
|
||||||
|
|
||||||
// List view required variables
|
|
||||||
Rectangle listViewControls = { -200, 0, 140, 500 };
|
|
||||||
|
|
||||||
Rectangle listViewControlsCounter = { GetScreenWidth() + 140, 0, 140, 500 };
|
|
||||||
int counterListViewControlsCounter = 0;
|
|
||||||
int startPosXListViewControlsCounter = GetScreenWidth() + 140;
|
|
||||||
int deltaPosXListViewControlsCounter = 0;
|
|
||||||
|
|
||||||
// ToggleGroup, ComboBox, DropdownBox use this data
|
|
||||||
const char *list[3] = { "ONE", "TWO", "THREE" };
|
|
||||||
|
|
||||||
const char *guiControls[21] = {
|
|
||||||
"WINDOWBOX",
|
|
||||||
"GROUPBOX",
|
|
||||||
"LINE",
|
|
||||||
"PANEL",
|
|
||||||
"LABEL",
|
|
||||||
"BUTTON",
|
|
||||||
"TOGGLE",
|
|
||||||
"TOGGLEGROUP",
|
|
||||||
"CHECKBOX",
|
|
||||||
"COMBOBOX",
|
|
||||||
"DROPDOWNBOX",
|
|
||||||
"SPINNER",
|
|
||||||
"VALUEBOX",
|
|
||||||
"TEXTBOX",
|
|
||||||
"SLIDER",
|
|
||||||
"SLIDERBAR",
|
|
||||||
"PROGRESSBAR",
|
|
||||||
"STATUSBAR",
|
|
||||||
"LISTVIEW",
|
|
||||||
"COLORPICKER",
|
|
||||||
"DUMMYREC"
|
|
||||||
};
|
|
||||||
|
|
||||||
const char *guiControlsCounter[16] = {
|
|
||||||
"Control 000",
|
|
||||||
"Control 001",
|
|
||||||
"Control 002",
|
|
||||||
"Control 003",
|
|
||||||
"Control 004",
|
|
||||||
"Control 005",
|
|
||||||
"Control 006",
|
|
||||||
"Control 007",
|
|
||||||
"Control 008",
|
|
||||||
"Control 009",
|
|
||||||
"Control 010",
|
|
||||||
"Control 011",
|
|
||||||
"Control 012",
|
|
||||||
"Control 013",
|
|
||||||
"Control 014",
|
|
||||||
"Control 015",
|
|
||||||
};
|
|
||||||
|
|
||||||
Texture2D tracemap = { 0 };
|
|
||||||
Rectangle tracemapRec = { 0 };
|
|
||||||
bool tracemapEditMode = false;
|
|
||||||
float tracemapFade = 0.5f;
|
|
||||||
Vector2 panOffset = { 0 };
|
|
||||||
Vector2 prevPosition = { 0 };
|
|
||||||
|
|
||||||
char prevControlText[32];
|
|
||||||
char prevControlName[32];
|
|
||||||
|
|
||||||
// Initialize anchor points to default values
|
// Initialize anchor points to default values
|
||||||
for (int i = 0; i < MAX_ANCHOR_POINTS; i++)
|
for (int i = 0; i < MAX_ANCHOR_POINTS; i++)
|
||||||
{
|
{
|
||||||
@ -287,15 +225,6 @@ int main()
|
|||||||
layout.controls[i].ap = &layout.anchors[0]; // By default, set parent anchor
|
layout.controls[i].ap = &layout.anchors[0]; // By default, set parent anchor
|
||||||
}
|
}
|
||||||
|
|
||||||
// Very basic undo system (only for last selected rectangle changes)
|
|
||||||
int undoSelectedControl = -1;
|
|
||||||
Rectangle undoLastRec; // Update when a control is selected
|
|
||||||
|
|
||||||
//if (CTRL+Z) currentSelectedRec = undoLastRec;
|
|
||||||
|
|
||||||
bool exitWindow = false;
|
|
||||||
bool ultimateMessage = false;
|
|
||||||
|
|
||||||
// Define palette variables
|
// Define palette variables
|
||||||
Rectangle palettePanel = { GetScreenWidth() + 130, 20, 135, 870 };
|
Rectangle palettePanel = { GetScreenWidth() + 130, 20, 135, 870 };
|
||||||
bool paletteMode = false;
|
bool paletteMode = false;
|
||||||
@ -304,7 +233,6 @@ int main()
|
|||||||
int paletteEasingOut = PALETTE_EASING_FRAMES;
|
int paletteEasingOut = PALETTE_EASING_FRAMES;
|
||||||
int paletteStartPosX = GetScreenWidth() + 130;
|
int paletteStartPosX = GetScreenWidth() + 130;
|
||||||
|
|
||||||
|
|
||||||
// Define palette rectangles
|
// Define palette rectangles
|
||||||
Rectangle paletteRecs[21] = {
|
Rectangle paletteRecs[21] = {
|
||||||
(Rectangle){ palettePanel.x + 5, palettePanel.y + 5, 125, 50 }, // WindowBox
|
(Rectangle){ palettePanel.x + 5, palettePanel.y + 5, 125, 50 }, // WindowBox
|
||||||
@ -330,7 +258,24 @@ int main()
|
|||||||
(Rectangle){ palettePanel.x + 5, palettePanel.y + 835, 125, 30 } // DummyRec
|
(Rectangle){ palettePanel.x + 5, palettePanel.y + 835, 125, 30 } // DummyRec
|
||||||
};
|
};
|
||||||
|
|
||||||
// Export options window variables
|
// Tracemap (background image for reference) variables
|
||||||
|
Texture2D tracemap = { 0 };
|
||||||
|
Rectangle tracemapRec = { 0 };
|
||||||
|
bool tracemapEditMode = false;
|
||||||
|
float tracemapFade = 0.5f;
|
||||||
|
|
||||||
|
// Very basic undo system
|
||||||
|
// Undo last-selected rectangle changes
|
||||||
|
// Undo text/name editing on cancel (KEY_ESC)
|
||||||
|
int undoSelectedControl = -1;
|
||||||
|
Rectangle undoLastRec;
|
||||||
|
char prevControlText[32];
|
||||||
|
char prevControlName[32];
|
||||||
|
|
||||||
|
// Close layout window variables
|
||||||
|
bool ultimateMessage = false;
|
||||||
|
|
||||||
|
// Generate code options window variables
|
||||||
Vector2 exportWindowPos = { 50, 50 };
|
Vector2 exportWindowPos = { 50, 50 };
|
||||||
bool generateWindowActive = false;
|
bool generateWindowActive = false;
|
||||||
int toolNameSize = 32;
|
int toolNameSize = 32;
|
||||||
@ -338,14 +283,14 @@ int main()
|
|||||||
int companySize = 32;
|
int companySize = 32;
|
||||||
int toolDescriptionSize = 32;
|
int toolDescriptionSize = 32;
|
||||||
|
|
||||||
|
// Generate code configuration
|
||||||
GuiLayoutConfig config;
|
GuiLayoutConfig config;
|
||||||
memset(&config, 0, sizeof(GuiLayoutConfig));
|
memset(&config, 0, sizeof(GuiLayoutConfig));
|
||||||
|
|
||||||
config.width = 800;
|
config.width = 800;
|
||||||
config.height = 600;
|
config.height = 600;
|
||||||
strcpy(config.name, "file_name");
|
strcpy(config.name, "layout_file_name");
|
||||||
strcpy(config.version, "1.0-dev");
|
strcpy(config.version, "1.0-dev");
|
||||||
strcpy(config.company, "raylib tech");
|
strcpy(config.company, "raylib technologies");
|
||||||
strcpy(config.description, "tool description");
|
strcpy(config.description, "tool description");
|
||||||
config.defineRecs = false;
|
config.defineRecs = false;
|
||||||
config.exportAnchors = false;
|
config.exportAnchors = false;
|
||||||
@ -362,34 +307,30 @@ int main()
|
|||||||
{
|
{
|
||||||
// Update
|
// Update
|
||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
if (IsKeyPressed(KEY_ESCAPE) && !textEditMode && !nameEditMode)/* || WindowShouldClose()*/
|
framesCounterSnap++;
|
||||||
|
mouse = GetMousePosition();
|
||||||
|
|
||||||
|
if (WindowShouldClose()) exitWindow = true;
|
||||||
|
|
||||||
|
// Show save layout message window on ESC
|
||||||
|
if (IsKeyPressed(KEY_ESCAPE) && !textEditMode && !nameEditMode)
|
||||||
{
|
{
|
||||||
ultimateMessage = !ultimateMessage;
|
ultimateMessage = !ultimateMessage;
|
||||||
selectedControl = -1;
|
selectedControl = -1;
|
||||||
lockMode = false;
|
controlLockMode = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (WindowShouldClose()) ultimateMessage = true;
|
|
||||||
|
|
||||||
mouse = GetMousePosition();
|
|
||||||
|
|
||||||
snapFrameCounter++;
|
|
||||||
|
|
||||||
// Enables or disables snapMode if not in textEditMode
|
// Enables or disables snapMode if not in textEditMode
|
||||||
if (IsKeyPressed(KEY_S) && (!textEditMode) && (!nameEditMode)) snapMode = !snapMode;
|
if (IsKeyPressed(KEY_S) && (!textEditMode) && (!nameEditMode)) snapMode = !snapMode;
|
||||||
|
|
||||||
// Enables or disables position reference information(anchor reference or global reference)
|
// Enables or disables position reference information(anchor reference or global reference)
|
||||||
if (IsKeyPressed(KEY_F) && (!textEditMode) && (!nameEditMode)) globalReference = !globalReference;
|
if (IsKeyPressed(KEY_F) && (!textEditMode) && (!nameEditMode)) controlGlobalPos = !controlGlobalPos;
|
||||||
|
|
||||||
// Checks if the defaultRec[selectedType] is colliding with the list of the controls
|
// Toggle help info
|
||||||
if (CheckCollisionPointRec(mouse, listViewControls)) controlCollision = true;
|
|
||||||
else if (CheckCollisionPointRec(mouse, listViewControlsCounter)) controlCollision = true;
|
|
||||||
|
|
||||||
// Toggle on help info
|
|
||||||
if (IsKeyPressed(KEY_TAB))
|
if (IsKeyPressed(KEY_TAB))
|
||||||
{
|
{
|
||||||
startPosXHelp = helpPosX;
|
helpStartPositionX = helpPositionX;
|
||||||
deltaPosXHelp = 0 - startPosXHelp;
|
helpDeltaPositionX = 0 - helpStartPositionX;
|
||||||
helpCounter = 0;
|
helpCounter = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -397,19 +338,19 @@ int main()
|
|||||||
{
|
{
|
||||||
helpCounter++;
|
helpCounter++;
|
||||||
if (helpCounter >= 60) helpCounter = 60;
|
if (helpCounter >= 60) helpCounter = 60;
|
||||||
helpPosX = (int)EaseCubicInOut(helpCounter, startPosXHelp, deltaPosXHelp, 60);
|
helpPositionX = (int)EaseCubicInOut(helpCounter, helpStartPositionX, helpDeltaPositionX, 60);
|
||||||
}
|
}
|
||||||
else if (IsKeyReleased(KEY_TAB))
|
else if (IsKeyReleased(KEY_TAB))
|
||||||
{
|
{
|
||||||
startPosXHelp = helpPosX;
|
helpStartPositionX = helpPositionX;
|
||||||
deltaPosXHelp = -300 - startPosXHelp;
|
helpDeltaPositionX = -300 - helpStartPositionX;
|
||||||
helpCounter = 0;
|
helpCounter = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
helpCounter++;
|
helpCounter++;
|
||||||
if (helpCounter >= 60) helpCounter = 60;
|
if (helpCounter >= 60) helpCounter = 60;
|
||||||
helpPosX = (int)EaseCubicInOut(helpCounter, startPosXHelp, deltaPosXHelp, 60);
|
helpPositionX = (int)EaseCubicInOut(helpCounter, helpStartPositionX, helpDeltaPositionX, 60);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Controls palette selector logic
|
// Controls palette selector logic
|
||||||
@ -456,7 +397,7 @@ int main()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Create new control
|
// Create new control
|
||||||
if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON) && (selectedControl == -1) && !controlCollision && !anchorMode && !tracemapEditMode && !ultimateMessage && !paletteMode && !generateWindowActive)
|
if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON) && (selectedControl == -1) && !anchorMode && !tracemapEditMode && !ultimateMessage && !paletteMode && !generateWindowActive)
|
||||||
{
|
{
|
||||||
// Add new control (button)
|
// Add new control (button)
|
||||||
layout.controls[layout.controlsCount].id = layout.controlsCount;
|
layout.controls[layout.controlsCount].id = layout.controlsCount;
|
||||||
@ -509,7 +450,7 @@ int main()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Change controls layer order (position inside array)
|
// Change controls layer order (position inside array)
|
||||||
if (IsKeyDown(KEY_LEFT_ALT) && !lockMode)
|
if (IsKeyDown(KEY_LEFT_ALT) && !controlLockMode)
|
||||||
{
|
{
|
||||||
if ((IsKeyPressed(KEY_UP)) && (selectedControl < layout.controlsCount - 1))
|
if ((IsKeyPressed(KEY_UP)) && (selectedControl < layout.controlsCount - 1))
|
||||||
{
|
{
|
||||||
@ -531,13 +472,13 @@ int main()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(controlDrag || lockMode || tracemapEditMode || lockAnchorMode || ultimateMessage || paletteMode || generateWindowActive))
|
if (!(controlDrag || controlLockMode || tracemapEditMode || anchorLockMode || ultimateMessage || paletteMode || generateWindowActive))
|
||||||
{
|
{
|
||||||
|
|
||||||
// Check selected control (on mouse hover)
|
// Check selected control (on mouse hover)
|
||||||
for (int i = layout.controlsCount; i >= 0; i--)
|
for (int i = layout.controlsCount; i >= 0; i--)
|
||||||
{
|
{
|
||||||
if (controlDrag || lockMode || tracemapEditMode || lockAnchorMode) break;
|
if (controlDrag || controlLockMode || tracemapEditMode || anchorLockMode) break;
|
||||||
if ((layout.controls[i].type == WINDOWBOX) && (!layout.controls[i].ap->hidding) && (CheckCollisionPointRec(mouse, (Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, 24 })))
|
if ((layout.controls[i].type == WINDOWBOX) && (!layout.controls[i].ap->hidding) && (CheckCollisionPointRec(mouse, (Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, 24 })))
|
||||||
{
|
{
|
||||||
selectedControl = i;
|
selectedControl = i;
|
||||||
@ -564,25 +505,22 @@ int main()
|
|||||||
|
|
||||||
if (selectedControl != -1 && !textEditMode && !nameEditMode && !anchorMode)
|
if (selectedControl != -1 && !textEditMode && !nameEditMode && !anchorMode)
|
||||||
{
|
{
|
||||||
// Disables the defaultRec[selectedType]
|
|
||||||
controlCollision = true;
|
|
||||||
|
|
||||||
if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON))
|
if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON))
|
||||||
{
|
{
|
||||||
controlDrag = true;
|
controlDrag = true;
|
||||||
panOffset = mouse;
|
panControlOffset = mouse;
|
||||||
prevPosition = (Vector2){ layout.controls[selectedControl].rec.x, layout.controls[selectedControl].rec.y };
|
prevControlPosition = (Vector2){ layout.controls[selectedControl].rec.x, layout.controls[selectedControl].rec.y };
|
||||||
}
|
}
|
||||||
else if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON))
|
else if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON))
|
||||||
{
|
{
|
||||||
controlDrag = false;
|
controlDrag = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (controlDrag && !lockMode)
|
if (controlDrag && !controlLockMode)
|
||||||
{
|
{
|
||||||
|
|
||||||
layout.controls[selectedControl].rec.x = prevPosition.x + (mouse.x - panOffset.x);
|
layout.controls[selectedControl].rec.x = prevControlPosition.x + (mouse.x - panControlOffset.x);
|
||||||
layout.controls[selectedControl].rec.y = prevPosition.y + (mouse.y - panOffset.y);
|
layout.controls[selectedControl].rec.y = prevControlPosition.y + (mouse.y - panControlOffset.y);
|
||||||
|
|
||||||
|
|
||||||
// Snap to grid position and size
|
// Snap to grid position and size
|
||||||
@ -617,11 +555,11 @@ int main()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (IsKeyDown(KEY_RIGHT) && ((snapFrameCounter%MOVEMENT_FRAME_SPEED) == 0)) layout.controls[selectedControl].rec.width += GRID_LINE_SPACING;
|
if (IsKeyDown(KEY_RIGHT) && ((framesCounterSnap%MOVEMENT_FRAME_SPEED) == 0)) layout.controls[selectedControl].rec.width += GRID_LINE_SPACING;
|
||||||
else if (IsKeyDown(KEY_LEFT) && ((snapFrameCounter%MOVEMENT_FRAME_SPEED) == 0)) layout.controls[selectedControl].rec.width -= GRID_LINE_SPACING;
|
else if (IsKeyDown(KEY_LEFT) && ((framesCounterSnap%MOVEMENT_FRAME_SPEED) == 0)) layout.controls[selectedControl].rec.width -= GRID_LINE_SPACING;
|
||||||
|
|
||||||
if (IsKeyDown(KEY_UP) && ((snapFrameCounter%MOVEMENT_FRAME_SPEED) == 0)) layout.controls[selectedControl].rec.height -= GRID_LINE_SPACING;
|
if (IsKeyDown(KEY_UP) && ((framesCounterSnap%MOVEMENT_FRAME_SPEED) == 0)) layout.controls[selectedControl].rec.height -= GRID_LINE_SPACING;
|
||||||
else if (IsKeyDown(KEY_DOWN) && ((snapFrameCounter%MOVEMENT_FRAME_SPEED) == 0)) layout.controls[selectedControl].rec.height += GRID_LINE_SPACING;
|
else if (IsKeyDown(KEY_DOWN) && ((framesCounterSnap%MOVEMENT_FRAME_SPEED) == 0)) layout.controls[selectedControl].rec.height += GRID_LINE_SPACING;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -637,11 +575,11 @@ int main()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (IsKeyDown(KEY_RIGHT) && ((snapFrameCounter%MOVEMENT_FRAME_SPEED) == 0)) layout.controls[selectedControl].rec.x += GRID_LINE_SPACING;
|
if (IsKeyDown(KEY_RIGHT) && ((framesCounterSnap%MOVEMENT_FRAME_SPEED) == 0)) layout.controls[selectedControl].rec.x += GRID_LINE_SPACING;
|
||||||
else if (IsKeyDown(KEY_LEFT) && ((snapFrameCounter%MOVEMENT_FRAME_SPEED) == 0)) layout.controls[selectedControl].rec.x -= GRID_LINE_SPACING;
|
else if (IsKeyDown(KEY_LEFT) && ((framesCounterSnap%MOVEMENT_FRAME_SPEED) == 0)) layout.controls[selectedControl].rec.x -= GRID_LINE_SPACING;
|
||||||
|
|
||||||
if (IsKeyDown(KEY_UP) && ((snapFrameCounter%MOVEMENT_FRAME_SPEED) == 0)) layout.controls[selectedControl].rec.y -= GRID_LINE_SPACING;
|
if (IsKeyDown(KEY_UP) && ((framesCounterSnap%MOVEMENT_FRAME_SPEED) == 0)) layout.controls[selectedControl].rec.y -= GRID_LINE_SPACING;
|
||||||
else if (IsKeyDown(KEY_DOWN) && ((snapFrameCounter%MOVEMENT_FRAME_SPEED) == 0)) layout.controls[selectedControl].rec.y += GRID_LINE_SPACING;
|
else if (IsKeyDown(KEY_DOWN) && ((framesCounterSnap%MOVEMENT_FRAME_SPEED) == 0)) layout.controls[selectedControl].rec.y += GRID_LINE_SPACING;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -719,10 +657,6 @@ int main()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Check mouse hover a list view
|
|
||||||
if (!CheckCollisionPointRec(mouse, listViewControls)) controlCollision = false;
|
|
||||||
if (!CheckCollisionPointRec(mouse, listViewControlsCounter)) controlCollision = false;
|
|
||||||
|
|
||||||
// Updates the selectedType with the MouseWheel
|
// Updates the selectedType with the MouseWheel
|
||||||
selectedType -= GetMouseWheelMove();
|
selectedType -= GetMouseWheelMove();
|
||||||
|
|
||||||
@ -778,7 +712,7 @@ int main()
|
|||||||
if (textEditMode)
|
if (textEditMode)
|
||||||
{
|
{
|
||||||
// Locks the selectedControl for text editing
|
// Locks the selectedControl for text editing
|
||||||
selectedControl = saveControlSelected;
|
selectedControl = storedControl;
|
||||||
int key = GetKeyPressed();
|
int key = GetKeyPressed();
|
||||||
int keyCount = strlen(layout.controls[selectedControl].text); // Keeps track of text length
|
int keyCount = strlen(layout.controls[selectedControl].text); // Keeps track of text length
|
||||||
|
|
||||||
@ -803,7 +737,7 @@ int main()
|
|||||||
if ((nameEditMode))
|
if ((nameEditMode))
|
||||||
{
|
{
|
||||||
// Locks the selectedControl for text editing
|
// Locks the selectedControl for text editing
|
||||||
selectedControl = saveControlSelected;
|
selectedControl = storedControl;
|
||||||
int key = GetKeyPressed();
|
int key = GetKeyPressed();
|
||||||
int keyCount = strlen(layout.controls[selectedControl].name); // Keeps track of name length
|
int keyCount = strlen(layout.controls[selectedControl].name); // Keeps track of name length
|
||||||
|
|
||||||
@ -855,7 +789,7 @@ int main()
|
|||||||
((layout.controls[selectedControl].type == LABEL) || (layout.controls[selectedControl].type == TEXTBOX) || (layout.controls[selectedControl].type == BUTTON) || (layout.controls[selectedControl].type == TOGGLE) || (layout.controls[selectedControl].type == GROUPBOX) || (layout.controls[selectedControl].type == WINDOWBOX) || (layout.controls[selectedControl].type == STATUSBAR) || (layout.controls[selectedControl].type == DUMMYREC)))
|
((layout.controls[selectedControl].type == LABEL) || (layout.controls[selectedControl].type == TEXTBOX) || (layout.controls[selectedControl].type == BUTTON) || (layout.controls[selectedControl].type == TOGGLE) || (layout.controls[selectedControl].type == GROUPBOX) || (layout.controls[selectedControl].type == WINDOWBOX) || (layout.controls[selectedControl].type == STATUSBAR) || (layout.controls[selectedControl].type == DUMMYREC)))
|
||||||
{
|
{
|
||||||
textEditMode = true;
|
textEditMode = true;
|
||||||
saveControlSelected = selectedControl;
|
storedControl = selectedControl;
|
||||||
strcpy(prevControlText, layout.controls[selectedControl].text);
|
strcpy(prevControlText, layout.controls[selectedControl].text);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -864,21 +798,21 @@ int main()
|
|||||||
{
|
{
|
||||||
nameEditMode = true;
|
nameEditMode = true;
|
||||||
strcpy(prevControlName, layout.controls[selectedControl].name);
|
strcpy(prevControlName, layout.controls[selectedControl].name);
|
||||||
saveControlSelected = selectedControl;
|
storedControl = selectedControl;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Selected control lock logic
|
// Selected control lock logic
|
||||||
if (lockMode) selectedControl = saveControlSelected;
|
if (controlLockMode) selectedControl = storedControl;
|
||||||
|
|
||||||
if (IsKeyPressed(KEY_SPACE) && !nameEditMode && !textEditMode && (selectedControl != -1) && !lockMode && !anchorMode)
|
if (IsKeyPressed(KEY_SPACE) && !nameEditMode && !textEditMode && (selectedControl != -1) && !controlLockMode && !anchorMode)
|
||||||
{
|
{
|
||||||
lockMode = true;
|
controlLockMode = true;
|
||||||
saveControlSelected = selectedControl;
|
storedControl = selectedControl;
|
||||||
}
|
}
|
||||||
else if (IsKeyPressed(KEY_SPACE) && (selectedControl != -1)) lockMode = false;
|
else if (IsKeyPressed(KEY_SPACE) && (selectedControl != -1)) controlLockMode = false;
|
||||||
|
|
||||||
// Checks if mouse is over an anchor
|
// Checks if mouse is over an anchor
|
||||||
if (!(anchorLinkMode || controlDrag || lockAnchorMode))
|
if (!(anchorLinkMode || controlDrag || anchorLockMode))
|
||||||
{
|
{
|
||||||
for (int i = 1; i < MAX_ANCHOR_POINTS; i++)
|
for (int i = 1; i < MAX_ANCHOR_POINTS; i++)
|
||||||
{
|
{
|
||||||
@ -897,9 +831,9 @@ int main()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Selected control lock logic
|
// Selected control lock logic
|
||||||
if (lockAnchorMode)
|
if (anchorLockMode)
|
||||||
{
|
{
|
||||||
selectedAnchor = saveAnchorSelected;
|
selectedAnchor = storedAnchor;
|
||||||
anchorMode = true;
|
anchorMode = true;
|
||||||
|
|
||||||
if (snapMode)
|
if (snapMode)
|
||||||
@ -914,11 +848,11 @@ int main()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (IsKeyDown(KEY_RIGHT) && ((snapFrameCounter%MOVEMENT_FRAME_SPEED) == 0)) layout.anchors[selectedAnchor].x+= GRID_LINE_SPACING;
|
if (IsKeyDown(KEY_RIGHT) && ((framesCounterSnap%MOVEMENT_FRAME_SPEED) == 0)) layout.anchors[selectedAnchor].x+= GRID_LINE_SPACING;
|
||||||
else if (IsKeyDown(KEY_LEFT) && ((snapFrameCounter%MOVEMENT_FRAME_SPEED) == 0)) layout.anchors[selectedAnchor].x-= GRID_LINE_SPACING;
|
else if (IsKeyDown(KEY_LEFT) && ((framesCounterSnap%MOVEMENT_FRAME_SPEED) == 0)) layout.anchors[selectedAnchor].x-= GRID_LINE_SPACING;
|
||||||
|
|
||||||
if (IsKeyDown(KEY_UP) && ((snapFrameCounter%MOVEMENT_FRAME_SPEED) == 0)) layout.anchors[selectedAnchor].y-= GRID_LINE_SPACING;
|
if (IsKeyDown(KEY_UP) && ((framesCounterSnap%MOVEMENT_FRAME_SPEED) == 0)) layout.anchors[selectedAnchor].y-= GRID_LINE_SPACING;
|
||||||
else if (IsKeyDown(KEY_DOWN) && ((snapFrameCounter%MOVEMENT_FRAME_SPEED) == 0)) layout.anchors[selectedAnchor].y+= GRID_LINE_SPACING;
|
else if (IsKeyDown(KEY_DOWN) && ((framesCounterSnap%MOVEMENT_FRAME_SPEED) == 0)) layout.anchors[selectedAnchor].y+= GRID_LINE_SPACING;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -946,7 +880,7 @@ int main()
|
|||||||
if (anchorMode)
|
if (anchorMode)
|
||||||
{
|
{
|
||||||
// On mouse click anchor is created
|
// On mouse click anchor is created
|
||||||
if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON) && !controlCollision && (selectedAnchor == -1) && (selectedControl == -1))
|
if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON) && (selectedAnchor == -1) && (selectedControl == -1))
|
||||||
{
|
{
|
||||||
for (int i = 1; i < MAX_ANCHOR_POINTS; i++)
|
for (int i = 1; i < MAX_ANCHOR_POINTS; i++)
|
||||||
{
|
{
|
||||||
@ -961,12 +895,12 @@ int main()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsKeyPressed(KEY_SPACE) && !nameEditMode && !textEditMode && (selectedAnchor != -1) && !lockAnchorMode && anchorMode)
|
if (IsKeyPressed(KEY_SPACE) && !nameEditMode && !textEditMode && (selectedAnchor != -1) && !anchorLockMode && anchorMode)
|
||||||
{
|
{
|
||||||
lockAnchorMode = true;
|
anchorLockMode = true;
|
||||||
saveAnchorSelected = selectedAnchor;
|
storedAnchor = selectedAnchor;
|
||||||
}
|
}
|
||||||
else if (IsKeyPressed(KEY_SPACE) && (selectedAnchor != -1)) lockAnchorMode = false;
|
else if (IsKeyPressed(KEY_SPACE) && (selectedAnchor != -1)) anchorLockMode = false;
|
||||||
|
|
||||||
if (selectedAnchor > 0)
|
if (selectedAnchor > 0)
|
||||||
{
|
{
|
||||||
@ -987,16 +921,16 @@ int main()
|
|||||||
layout.anchors[selectedAnchor].enabled = false;
|
layout.anchors[selectedAnchor].enabled = false;
|
||||||
layout.anchors[selectedAnchor].hidding = false;
|
layout.anchors[selectedAnchor].hidding = false;
|
||||||
anchorMode = false;
|
anchorMode = false;
|
||||||
lockAnchorMode = false;
|
anchorLockMode = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!lockAnchorMode)
|
if (!anchorLockMode)
|
||||||
{
|
{
|
||||||
// Allows to drag an anchor without losing collision
|
// Allows to drag an anchor without losing collision
|
||||||
if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON) && IsKeyDown(KEY_A))
|
if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON) && IsKeyDown(KEY_A))
|
||||||
{
|
{
|
||||||
controlDrag = true;
|
controlDrag = true;
|
||||||
anchorNewPos = true;
|
anchorPosEditMode = true;
|
||||||
|
|
||||||
for (int i = 0; i < layout.controlsCount; i++)
|
for (int i = 0; i < layout.controlsCount; i++)
|
||||||
{
|
{
|
||||||
@ -1012,7 +946,7 @@ int main()
|
|||||||
|
|
||||||
if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON))
|
if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON))
|
||||||
{
|
{
|
||||||
if (anchorNewPos)
|
if (anchorPosEditMode)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < layout.controlsCount; i++)
|
for (int i = 0; i < layout.controlsCount; i++)
|
||||||
{
|
{
|
||||||
@ -1026,7 +960,7 @@ int main()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
anchorNewPos = false;
|
anchorPosEditMode = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
controlDrag = false;
|
controlDrag = false;
|
||||||
@ -1052,7 +986,7 @@ int main()
|
|||||||
// Links the selected control to the current anchor
|
// Links the selected control to the current anchor
|
||||||
if (IsMouseButtonReleased(MOUSE_RIGHT_BUTTON))
|
if (IsMouseButtonReleased(MOUSE_RIGHT_BUTTON))
|
||||||
{
|
{
|
||||||
if (selectedControl != -1 && !lockMode)
|
if (selectedControl != -1 && !controlLockMode)
|
||||||
{
|
{
|
||||||
layout.controls[selectedControl].rec.x += layout.controls[selectedControl].ap->x;
|
layout.controls[selectedControl].rec.x += layout.controls[selectedControl].ap->x;
|
||||||
layout.controls[selectedControl].rec.y += layout.controls[selectedControl].ap->y;
|
layout.controls[selectedControl].rec.y += layout.controls[selectedControl].ap->y;
|
||||||
@ -1109,16 +1043,18 @@ int main()
|
|||||||
// Drop files logic
|
// Drop files logic
|
||||||
if (IsFileDropped())
|
if (IsFileDropped())
|
||||||
{
|
{
|
||||||
char name[256];
|
int fileCount = 0;
|
||||||
|
char **droppedFiles = { 0 };
|
||||||
|
char droppedFileName[256];
|
||||||
droppedFiles = GetDroppedFiles(&fileCount);
|
droppedFiles = GetDroppedFiles(&fileCount);
|
||||||
strcpy(name, droppedFiles[0]);
|
strcpy(droppedFileName, droppedFiles[0]);
|
||||||
|
|
||||||
if (IsFileExtension(name, ".rgl")) LoadLayoutRGL(name);
|
if (IsFileExtension(droppedFileName, ".rgl")) LoadLayoutRGL(droppedFileName);
|
||||||
else if (IsFileExtension(name, ".rgs")) GuiLoadStyle(name);
|
else if (IsFileExtension(droppedFileName, ".rgs")) GuiLoadStyle(droppedFileName);
|
||||||
else if (IsFileExtension(name, ".png"))
|
else if (IsFileExtension(droppedFileName, ".png"))
|
||||||
{
|
{
|
||||||
if (tracemap.id > 0) UnloadTexture(tracemap);
|
if (tracemap.id > 0) UnloadTexture(tracemap);
|
||||||
tracemap = LoadTexture(name);
|
tracemap = LoadTexture(droppedFileName);
|
||||||
|
|
||||||
SetTextureFilter(tracemap, FILTER_BILINEAR);
|
SetTextureFilter(tracemap, FILTER_BILINEAR);
|
||||||
|
|
||||||
@ -1145,20 +1081,10 @@ int main()
|
|||||||
layout.controlsCount++;
|
layout.controlsCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsKeyDown(KEY_LEFT_CONTROL) && IsKeyPressed(KEY_S))
|
// Save layout file dialog logic
|
||||||
{
|
if (IsKeyDown(KEY_LEFT_CONTROL) && IsKeyPressed(KEY_S)) ShowSaveLayoutDialog();
|
||||||
// Save file dialog
|
|
||||||
const char *filters[] = { "*.rgl" };
|
|
||||||
char *fileName = tinyfd_saveFileDialog("Save raygui layout text file", "", 1, filters, "raygui Layout Files (*.rgl)");
|
|
||||||
|
|
||||||
// Save layout.controls file (text or binary)
|
|
||||||
if (fileName != NULL)
|
|
||||||
{
|
|
||||||
if (GetExtension(fileName) == NULL) strcat(fileName, ".rgl\0"); // No extension provided
|
|
||||||
SaveLayoutRGL(fileName, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// Open laout file dialog logic
|
||||||
if (IsKeyDown(KEY_LEFT_CONTROL) && IsKeyPressed(KEY_O))
|
if (IsKeyDown(KEY_LEFT_CONTROL) && IsKeyPressed(KEY_O))
|
||||||
{
|
{
|
||||||
// Open file dialog
|
// Open file dialog
|
||||||
@ -1168,15 +1094,10 @@ int main()
|
|||||||
if (fileName != NULL) LoadLayoutRGL(fileName);
|
if (fileName != NULL) LoadLayoutRGL(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsKeyDown(KEY_LEFT_CONTROL) && IsKeyPressed(KEY_ENTER))
|
// Activate code generation export window
|
||||||
{
|
if (IsKeyDown(KEY_LEFT_CONTROL) && IsKeyPressed(KEY_ENTER)) generateWindowActive = true;
|
||||||
// Save file dialog
|
|
||||||
// TODO: Support additional languages (.lua, .go...) code generation
|
|
||||||
|
|
||||||
generateWindowActive = true;
|
if (generateWindowActive) // Keep window in the middle of screen
|
||||||
}
|
|
||||||
|
|
||||||
if (generateWindowActive)
|
|
||||||
{
|
{
|
||||||
exportWindowPos.x = GetScreenWidth()/2 - 200;
|
exportWindowPos.x = GetScreenWidth()/2 - 200;
|
||||||
exportWindowPos.y = GetScreenHeight()/2 - 112;
|
exportWindowPos.y = GetScreenHeight()/2 - 112;
|
||||||
@ -1196,14 +1117,14 @@ int main()
|
|||||||
// Moves the texture with the mouse
|
// Moves the texture with the mouse
|
||||||
if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON))
|
if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON))
|
||||||
{
|
{
|
||||||
panOffset = mouse;
|
panControlOffset = mouse;
|
||||||
prevPosition = (Vector2){ tracemapRec.x, tracemapRec.y };
|
prevControlPosition = (Vector2){ tracemapRec.x, tracemapRec.y };
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsMouseButtonDown(MOUSE_LEFT_BUTTON))
|
if (IsMouseButtonDown(MOUSE_LEFT_BUTTON))
|
||||||
{
|
{
|
||||||
tracemapRec.x = prevPosition.x + (mouse.x - panOffset.x);
|
tracemapRec.x = prevControlPosition.x + (mouse.x - panControlOffset.x);
|
||||||
tracemapRec.y = prevPosition.y + (mouse.y - panOffset.y);
|
tracemapRec.y = prevControlPosition.y + (mouse.y - panControlOffset.y);
|
||||||
|
|
||||||
if (snapMode)
|
if (snapMode)
|
||||||
{
|
{
|
||||||
@ -1327,10 +1248,10 @@ int main()
|
|||||||
case LABEL: GuiLabel((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, layout.controls[i].text); break;
|
case LABEL: GuiLabel((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, layout.controls[i].text); break;
|
||||||
case BUTTON: GuiButton((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, layout.controls[i].text); break;
|
case BUTTON: GuiButton((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, layout.controls[i].text); break;
|
||||||
case TOGGLE: GuiToggleButton((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, layout.controls[i].text, false); break;
|
case TOGGLE: GuiToggleButton((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, layout.controls[i].text, false); break;
|
||||||
case TOGGLEGROUP: GuiToggleGroup((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, list, 3, 1); break;
|
case TOGGLEGROUP: GuiToggleGroup((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, listData, 3, 1); break;
|
||||||
case CHECKBOX: GuiCheckBox((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, false); break;
|
case CHECKBOX: GuiCheckBox((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, false); break;
|
||||||
case COMBOBOX: GuiComboBox((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, list, 3, 1); break;
|
case COMBOBOX: GuiComboBox((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, listData, 3, 1); break;
|
||||||
case DROPDOWNBOX: GuiDropdownBox((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, list, 3, 2); break;
|
case DROPDOWNBOX: GuiDropdownBox((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, listData, 3, 2); break;
|
||||||
case SPINNER: GuiSpinner((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, 42, 3, 25); break;
|
case SPINNER: GuiSpinner((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, 42, 3, 25); break;
|
||||||
case VALUEBOX: GuiValueBox((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, 42, 100); break;
|
case VALUEBOX: GuiValueBox((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, 42, 100); break;
|
||||||
case TEXTBOX: GuiTextBox((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, layout.controls[i].text, 32, false); break;
|
case TEXTBOX: GuiTextBox((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, layout.controls[i].text, 32, false); break;
|
||||||
@ -1338,7 +1259,7 @@ int main()
|
|||||||
case SLIDERBAR: GuiSliderBar((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, 40, 0, 100); break;
|
case SLIDERBAR: GuiSliderBar((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, 40, 0, 100); break;
|
||||||
case PROGRESSBAR: GuiProgressBar((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, 40, 0, 100); break;
|
case PROGRESSBAR: GuiProgressBar((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, 40, 0, 100); break;
|
||||||
case STATUSBAR: GuiStatusBar((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, layout.controls[i].text, 15); break;
|
case STATUSBAR: GuiStatusBar((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, layout.controls[i].text, 15); break;
|
||||||
case LISTVIEW: GuiListView((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, guiControls, 14, 1); break;
|
case LISTVIEW: GuiListView((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, listViewData, 4, 1); break;
|
||||||
case COLORPICKER: GuiColorPicker((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, RED); break;
|
case COLORPICKER: GuiColorPicker((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, RED); break;
|
||||||
case DUMMYREC: GuiDummyRec((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, layout.controls[i].text); break;
|
case DUMMYREC: GuiDummyRec((Rectangle){ layout.controls[i].ap->x + layout.controls[i].rec.x, layout.controls[i].ap->y + layout.controls[i].rec.y, layout.controls[i].rec.width, layout.controls[i].rec.height }, layout.controls[i].text); break;
|
||||||
default: break;
|
default: break;
|
||||||
@ -1362,18 +1283,18 @@ int main()
|
|||||||
case LABEL: GuiLabel(defaultRec[selectedTypeDraw], "TEXT SAMPLE"); break;
|
case LABEL: GuiLabel(defaultRec[selectedTypeDraw], "TEXT SAMPLE"); break;
|
||||||
case BUTTON: GuiButton(defaultRec[selectedTypeDraw], "BUTTON"); break;
|
case BUTTON: GuiButton(defaultRec[selectedTypeDraw], "BUTTON"); break;
|
||||||
case TOGGLE: GuiToggleButton(defaultRec[selectedTypeDraw], "TOGGLE", false); break;
|
case TOGGLE: GuiToggleButton(defaultRec[selectedTypeDraw], "TOGGLE", false); break;
|
||||||
case TOGGLEGROUP: GuiToggleGroup(defaultRec[selectedTypeDraw], list, 3, 1); break;
|
case TOGGLEGROUP: GuiToggleGroup(defaultRec[selectedTypeDraw], listData, 3, 1); break;
|
||||||
case CHECKBOX: GuiCheckBox(defaultRec[selectedTypeDraw], false); break;
|
case CHECKBOX: GuiCheckBox(defaultRec[selectedTypeDraw], false); break;
|
||||||
case COMBOBOX: GuiComboBox(defaultRec[selectedTypeDraw], list, 3, 1); break;
|
case COMBOBOX: GuiComboBox(defaultRec[selectedTypeDraw], listData, 3, 1); break;
|
||||||
case DROPDOWNBOX: GuiDropdownBox(defaultRec[selectedTypeDraw], list, 3, 2); break;
|
case DROPDOWNBOX: GuiDropdownBox(defaultRec[selectedTypeDraw], listData, 3, 2); break;
|
||||||
case SPINNER: GuiSpinner(defaultRec[selectedTypeDraw], 42, 3, 25); break;
|
case SPINNER: GuiSpinner(defaultRec[selectedTypeDraw], 42, 3, 25); break;
|
||||||
case VALUEBOX: GuiValueBox(defaultRec[selectedTypeDraw], 42, 100); break;
|
case VALUEBOX: GuiValueBox(defaultRec[selectedTypeDraw], 42, 100); break;
|
||||||
case TEXTBOX: GuiTextBox(defaultRec[selectedTypeDraw], previewText, 7, false); break;
|
case TEXTBOX: GuiTextBox(defaultRec[selectedTypeDraw], "TEXTBOX", 7, false); break;
|
||||||
case SLIDER: GuiSlider(defaultRec[selectedTypeDraw], 42, 0, 100); break;
|
case SLIDER: GuiSlider(defaultRec[selectedTypeDraw], 42, 0, 100); break;
|
||||||
case SLIDERBAR: GuiSliderBar(defaultRec[selectedTypeDraw], 40, 0, 100); break;
|
case SLIDERBAR: GuiSliderBar(defaultRec[selectedTypeDraw], 40, 0, 100); break;
|
||||||
case PROGRESSBAR: GuiProgressBar(defaultRec[selectedTypeDraw], 40, 0, 100); break;
|
case PROGRESSBAR: GuiProgressBar(defaultRec[selectedTypeDraw], 40, 0, 100); break;
|
||||||
case STATUSBAR: GuiStatusBar(defaultRec[selectedTypeDraw], "STATUS BAR", 15); break;
|
case STATUSBAR: GuiStatusBar(defaultRec[selectedTypeDraw], "STATUS BAR", 15); break;
|
||||||
case LISTVIEW: GuiListView(defaultRec[selectedTypeDraw], guiControls, 14, 1); break;
|
case LISTVIEW: GuiListView(defaultRec[selectedTypeDraw], listViewData, 4, 1); break;
|
||||||
case COLORPICKER: GuiColorPicker(defaultRec[selectedTypeDraw], RED); break;
|
case COLORPICKER: GuiColorPicker(defaultRec[selectedTypeDraw], RED); break;
|
||||||
case DUMMYREC: GuiDummyRec(defaultRec[selectedTypeDraw], "DUMMY REC"); break;
|
case DUMMYREC: GuiDummyRec(defaultRec[selectedTypeDraw], "DUMMY REC"); break;
|
||||||
default: break;
|
default: break;
|
||||||
@ -1385,7 +1306,7 @@ int main()
|
|||||||
{
|
{
|
||||||
if ((layout.anchors[i].enabled) && (layout.anchors[i].x != 0) && (layout.anchors[i].y != 0))
|
if ((layout.anchors[i].enabled) && (layout.anchors[i].x != 0) && (layout.anchors[i].y != 0))
|
||||||
{
|
{
|
||||||
if (layout.anchors[i].id == selectedAnchor && anchorNewPos)
|
if (layout.anchors[i].id == selectedAnchor && anchorPosEditMode)
|
||||||
{
|
{
|
||||||
// Draw the anchor that is currently moving
|
// Draw the anchor that is currently moving
|
||||||
DrawCircle(layout.anchors[i].x, layout.anchors[i].y, ANCHOR_RADIUS, Fade(ORANGE, 0.5f));
|
DrawCircle(layout.anchors[i].x, layout.anchors[i].y, ANCHOR_RADIUS, Fade(ORANGE, 0.5f));
|
||||||
@ -1496,7 +1417,7 @@ int main()
|
|||||||
// Draw Rectangle Info
|
// Draw Rectangle Info
|
||||||
if (selectedControl != -1)
|
if (selectedControl != -1)
|
||||||
{
|
{
|
||||||
if (!globalReference) DrawText(FormatText("[%i, %i, %i, %i]", layout.controls[selectedControl].rec.x, layout.controls[selectedControl].rec.y, layout.controls[selectedControl].rec.width, layout.controls[selectedControl].rec.height), layout.controls[selectedControl].rec.x + layout.controls[selectedControl].ap->x, layout.controls[selectedControl].rec.y + layout.controls[selectedControl].ap->y - 30, 20, MAROON);
|
if (!controlGlobalPos) DrawText(FormatText("[%i, %i, %i, %i]", layout.controls[selectedControl].rec.x, layout.controls[selectedControl].rec.y, layout.controls[selectedControl].rec.width, layout.controls[selectedControl].rec.height), layout.controls[selectedControl].rec.x + layout.controls[selectedControl].ap->x, layout.controls[selectedControl].rec.y + layout.controls[selectedControl].ap->y - 30, 20, MAROON);
|
||||||
else DrawText(FormatText("[%i, %i, %i, %i]", layout.controls[selectedControl].rec.x + layout.controls[selectedControl].ap->x, layout.controls[selectedControl].rec.y + layout.controls[selectedControl].ap->y, layout.controls[selectedControl].rec.width, layout.controls[selectedControl].rec.height), layout.controls[selectedControl].rec.x + layout.controls[selectedControl].ap->x, layout.controls[selectedControl].rec.y + layout.controls[selectedControl].ap->y - 30, 20, RED);
|
else DrawText(FormatText("[%i, %i, %i, %i]", layout.controls[selectedControl].rec.x + layout.controls[selectedControl].ap->x, layout.controls[selectedControl].rec.y + layout.controls[selectedControl].ap->y, layout.controls[selectedControl].rec.width, layout.controls[selectedControl].rec.height), layout.controls[selectedControl].rec.x + layout.controls[selectedControl].ap->x, layout.controls[selectedControl].rec.y + layout.controls[selectedControl].ap->y - 30, 20, RED);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1508,30 +1429,30 @@ int main()
|
|||||||
{
|
{
|
||||||
for (int i = layout.controlsCount - 1; i >= 0; i--) DrawText(FormatText("[%i]", layout.controls[i].id), layout.controls[i].rec.x + layout.controls[i].ap->x + layout.controls[i].rec.width, layout.controls[i].rec.y + layout.controls[i].ap->y - 10, 10, BLUE);
|
for (int i = layout.controlsCount - 1; i >= 0; i--) DrawText(FormatText("[%i]", layout.controls[i].id), layout.controls[i].rec.x + layout.controls[i].ap->x + layout.controls[i].rec.width, layout.controls[i].rec.y + layout.controls[i].ap->y - 10, 10, BLUE);
|
||||||
}
|
}
|
||||||
// Draw the help list (by default is out of screen)
|
// Draw the help listData (by default is out of screen)
|
||||||
if (helpPosX > -280)
|
if (helpPositionX > -280)
|
||||||
{
|
{
|
||||||
DrawRectangleRec((Rectangle){ helpPosX + 20, 20, 275, 390 }, GetColor(style[DEFAULT_BACKGROUND_COLOR]));
|
DrawRectangleRec((Rectangle){ helpPositionX + 20, 20, 275, 390 }, GetColor(style[DEFAULT_BACKGROUND_COLOR]));
|
||||||
GuiGroupBox((Rectangle){ helpPosX + 20, 20, 275, 390 }, "Shortcuts");
|
GuiGroupBox((Rectangle){ helpPositionX + 20, 20, 275, 390 }, "Shortcuts");
|
||||||
GuiLabel((Rectangle){ helpPosX + 30, 30, 0, 0 }, "G - Show/hide grid");
|
GuiLabel((Rectangle){ helpPositionX + 30, 30, 0, 0 }, "G - Show/hide grid");
|
||||||
GuiLabel((Rectangle){ helpPosX + 30, 50, 0, 0 }, "S - Toggle snap");
|
GuiLabel((Rectangle){ helpPositionX + 30, 50, 0, 0 }, "S - Toggle snap");
|
||||||
GuiLabel((Rectangle){ helpPosX + 30, 70, 0, 0 }, "R - Resize to grid");
|
GuiLabel((Rectangle){ helpPositionX + 30, 70, 0, 0 }, "R - Resize to grid");
|
||||||
GuiLabel((Rectangle){ helpPosX + 30, 90, 0, 0 }, "A - Anchor mode");
|
GuiLabel((Rectangle){ helpPositionX + 30, 90, 0, 0 }, "A - Anchor mode");
|
||||||
GuiLabel((Rectangle){ helpPosX + 30, 110, 0, 0 }, "F - Reference position(global/anchor)");
|
GuiLabel((Rectangle){ helpPositionX + 30, 110, 0, 0 }, "F - Reference position(global/anchor)");
|
||||||
GuiLabel((Rectangle){ helpPosX + 30, 130, 0, 0 }, "H - Hide controls of selected anchor");
|
GuiLabel((Rectangle){ helpPositionX + 30, 130, 0, 0 }, "H - Hide controls of selected anchor");
|
||||||
GuiLabel((Rectangle){ helpPosX + 30, 150, 0, 0 }, "U - Unlink anchor");
|
GuiLabel((Rectangle){ helpPositionX + 30, 150, 0, 0 }, "U - Unlink anchor");
|
||||||
GuiLabel((Rectangle){ helpPosX + 30, 170, 0, 0 }, "Space - Lock/unlock control");
|
GuiLabel((Rectangle){ helpPositionX + 30, 170, 0, 0 }, "Space - Lock/unlock control");
|
||||||
GuiLabel((Rectangle){ helpPosX + 30, 190, 0, 0 }, "T - Enter text mode(if possible)");
|
GuiLabel((Rectangle){ helpPositionX + 30, 190, 0, 0 }, "T - Enter text mode(if possible)");
|
||||||
GuiLabel((Rectangle){ helpPosX + 30, 210, 0, 0 }, "Enter - Exit text mode");
|
GuiLabel((Rectangle){ helpPositionX + 30, 210, 0, 0 }, "Enter - Exit text mode");
|
||||||
GuiLabel((Rectangle){ helpPosX + 30, 230, 0, 0 }, "Delete - Delete a control");
|
GuiLabel((Rectangle){ helpPositionX + 30, 230, 0, 0 }, "Delete - Delete a control");
|
||||||
GuiLabel((Rectangle){ helpPosX + 30, 250, 0, 0 }, "Arrows - Modify position(+ shift smooth)");
|
GuiLabel((Rectangle){ helpPositionX + 30, 250, 0, 0 }, "Arrows - Modify position(+ shift smooth)");
|
||||||
GuiLabel((Rectangle){ helpPosX + 30, 270, 0, 0 }, "L. Ctrl + Arrows - Modify scale(+ shift smooth)");
|
GuiLabel((Rectangle){ helpPositionX + 30, 270, 0, 0 }, "L. Ctrl + Arrows - Modify scale(+ shift smooth)");
|
||||||
GuiLabel((Rectangle){ helpPosX + 30, 290, 0, 0 }, "L. Alt + Arrows(Up/Down) - Changes drawing order");
|
GuiLabel((Rectangle){ helpPositionX + 30, 290, 0, 0 }, "L. Alt + Arrows(Up/Down) - Changes drawing order");
|
||||||
GuiLabel((Rectangle){ helpPosX + 30, 310, 0, 0 }, "L. Ctrl + Enter - Export layout controls to code");
|
GuiLabel((Rectangle){ helpPositionX + 30, 310, 0, 0 }, "L. Ctrl + Enter - Export layout controls to code");
|
||||||
GuiLabel((Rectangle){ helpPosX + 30, 330, 0, 0 }, "L. Ctrl + S - Save layout.controls(.rgl)");
|
GuiLabel((Rectangle){ helpPositionX + 30, 330, 0, 0 }, "L. Ctrl + S - Save layout.controls(.rgl)");
|
||||||
GuiLabel((Rectangle){ helpPosX + 30, 350, 0, 0 }, "L. Ctrl + O - Open layout.controls(.rgl)");
|
GuiLabel((Rectangle){ helpPositionX + 30, 350, 0, 0 }, "L. Ctrl + O - Open layout.controls(.rgl)");
|
||||||
GuiLabel((Rectangle){ helpPosX + 30, 370, 0, 0 }, "L. Ctrl + D - Duplicate selected control");
|
GuiLabel((Rectangle){ helpPositionX + 30, 370, 0, 0 }, "L. Ctrl + D - Duplicate selected control");
|
||||||
GuiLabel((Rectangle){ helpPosX + 30, 390, 0, 0 }, "L. Ctrl + N - Rename control");
|
GuiLabel((Rectangle){ helpPositionX + 30, 390, 0, 0 }, "L. Ctrl + N - Rename control");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Draw right panel controls palette
|
// Draw right panel controls palette
|
||||||
@ -1545,17 +1466,17 @@ int main()
|
|||||||
GuiButton(paletteRecs[5], "Button");
|
GuiButton(paletteRecs[5], "Button");
|
||||||
GuiToggleButton(paletteRecs[6], "Toggle", false);
|
GuiToggleButton(paletteRecs[6], "Toggle", false);
|
||||||
GuiCheckBox(paletteRecs[8], false);
|
GuiCheckBox(paletteRecs[8], false);
|
||||||
GuiToggleGroup(paletteRecs[7], list, 3, 0);
|
GuiToggleGroup(paletteRecs[7], listData, 3, 0);
|
||||||
GuiComboBox(paletteRecs[9], list, 3, 0);
|
GuiComboBox(paletteRecs[9], listData, 3, 0);
|
||||||
GuiDropdownBox(paletteRecs[10], list, 3, 0);
|
GuiDropdownBox(paletteRecs[10], listData, 3, 0);
|
||||||
GuiSpinner(paletteRecs[11], 42, 100, 25);
|
GuiSpinner(paletteRecs[11], 42, 100, 25);
|
||||||
GuiValueBox(paletteRecs[12], 42, 100);
|
GuiValueBox(paletteRecs[12], 42, 100);
|
||||||
GuiTextBox(paletteRecs[13], previewText, 7, false);
|
GuiTextBox(paletteRecs[13], "TEXTBOX", 7, false);
|
||||||
GuiSlider(paletteRecs[14], 42, 0, 100);
|
GuiSlider(paletteRecs[14], 42, 0, 100);
|
||||||
GuiSliderBar(paletteRecs[15], 42, 0, 100);
|
GuiSliderBar(paletteRecs[15], 42, 0, 100);
|
||||||
GuiProgressBar(paletteRecs[16], 42, 0, 100);
|
GuiProgressBar(paletteRecs[16], 42, 0, 100);
|
||||||
GuiStatusBar(paletteRecs[17], "StatusBar", 10);
|
GuiStatusBar(paletteRecs[17], "StatusBar", 10);
|
||||||
GuiListView(paletteRecs[18], list, 3, 1);
|
GuiListView(paletteRecs[18], listData, 3, 1);
|
||||||
GuiColorPicker(paletteRecs[19], RED);
|
GuiColorPicker(paletteRecs[19], RED);
|
||||||
GuiDummyRec(paletteRecs[20], "DummyRec");
|
GuiDummyRec(paletteRecs[20], "DummyRec");
|
||||||
|
|
||||||
@ -1566,7 +1487,7 @@ int main()
|
|||||||
// Draw export options window
|
// Draw export options window
|
||||||
if (generateWindowActive)
|
if (generateWindowActive)
|
||||||
{
|
{
|
||||||
DrawRectangle(0, 0, GetScreenWidth(), GetScreenHeight(), Fade(WHITE, 0.8f));
|
DrawRectangle(0, 0, GetScreenWidth(), GetScreenHeight(), Fade(WHITE, 0.7f));
|
||||||
generateWindowActive = !GuiWindowBox((Rectangle){ exportWindowPos.x, exportWindowPos.y, 400, 225 }, "Generate Code Options - layout");
|
generateWindowActive = !GuiWindowBox((Rectangle){ exportWindowPos.x, exportWindowPos.y, 400, 225 }, "Generate Code Options - layout");
|
||||||
|
|
||||||
GuiLabel((Rectangle){ exportWindowPos.x + 10, exportWindowPos.y + 35, 65, 25 }, "Name:");
|
GuiLabel((Rectangle){ exportWindowPos.x + 10, exportWindowPos.y + 35, 65, 25 }, "Name:");
|
||||||
@ -1597,7 +1518,7 @@ int main()
|
|||||||
if (GuiButton((Rectangle){ exportWindowPos.x + 275, exportWindowPos.y + 185, 115, 30 }, "Generate Code"))
|
if (GuiButton((Rectangle){ exportWindowPos.x + 275, exportWindowPos.y + 185, 115, 30 }, "Generate Code"))
|
||||||
{
|
{
|
||||||
const char *filters[] = { "*.c", "*.go", "*.lua" };
|
const char *filters[] = { "*.c", "*.go", "*.lua" };
|
||||||
const char *fileName = tinyfd_saveFileDialog("Generate code file", "layout.c", 3, filters, "Code file");
|
const char *fileName = tinyfd_saveFileDialog("Generate code file", "tool_layout.c", 3, filters, "Code file");
|
||||||
|
|
||||||
if (fileName != NULL)
|
if (fileName != NULL)
|
||||||
{
|
{
|
||||||
@ -1614,26 +1535,20 @@ int main()
|
|||||||
if (selectedControl != -1) GuiStatusBar((Rectangle){ 348, GetScreenHeight() - 24, GetScreenWidth() - 348, 24}, FormatText("SELECTED CONTROL: #%03i | %s | REC(%i, %i, %i, %i) | %s", selectedControl, controlTypeName[layout.controls[selectedControl].type], layout.controls[selectedControl].rec.x, layout.controls[selectedControl].rec.y, layout.controls[selectedControl].rec.width, layout.controls[selectedControl].rec.height, layout.controls[selectedControl].name), 15);
|
if (selectedControl != -1) GuiStatusBar((Rectangle){ 348, GetScreenHeight() - 24, GetScreenWidth() - 348, 24}, FormatText("SELECTED CONTROL: #%03i | %s | REC(%i, %i, %i, %i) | %s", selectedControl, controlTypeName[layout.controls[selectedControl].type], layout.controls[selectedControl].rec.x, layout.controls[selectedControl].rec.y, layout.controls[selectedControl].rec.width, layout.controls[selectedControl].rec.height, layout.controls[selectedControl].name), 15);
|
||||||
else GuiStatusBar((Rectangle){ 348, GetScreenHeight() - 24, GetScreenWidth() - 348, 24}, "", 15);
|
else GuiStatusBar((Rectangle){ 348, GetScreenHeight() - 24, GetScreenWidth() - 348, 24}, "", 15);
|
||||||
|
|
||||||
|
// Draw ending message window (save)
|
||||||
if (ultimateMessage)
|
if (ultimateMessage)
|
||||||
{
|
{
|
||||||
if (GuiWindowBox((Rectangle){ GetScreenWidth()/2 - 125, GetScreenHeight()/2 - 50, 250, 100 }, "rGuiLayout")) ultimateMessage = false;
|
DrawRectangle(0, 0, GetScreenWidth(), GetScreenHeight(), Fade(WHITE, 0.7f));
|
||||||
|
ultimateMessage = !GuiWindowBox((Rectangle){ GetScreenWidth()/2 - 125, GetScreenHeight()/2 - 50, 250, 100 }, "Closing rGuiLayout");
|
||||||
|
|
||||||
GuiLabel((Rectangle){ GetScreenWidth()/2 - 95, GetScreenHeight()/2 - 60, 200, 100 }, "Do you want to save before quitting?");
|
GuiLabel((Rectangle){ GetScreenWidth()/2 - 95, GetScreenHeight()/2 - 60, 200, 100 }, "Do you want to save before quitting?");
|
||||||
|
|
||||||
if (GuiButton((Rectangle){ GetScreenWidth()/2 - 94, GetScreenHeight()/2 + 10, 85, 25 }, "Yes"))
|
if (GuiButton((Rectangle){ GetScreenWidth()/2 - 94, GetScreenHeight()/2 + 10, 85, 25 }, "Yes"))
|
||||||
{
|
{
|
||||||
// Save file dialog
|
ShowSaveLayoutDialog();
|
||||||
const char *filters[] = { "*.rgl" };
|
|
||||||
char *fileName = tinyfd_saveFileDialog("Save raygui layout text file", "", 1, filters, "raygui Layout Files (*.rgl)");
|
|
||||||
|
|
||||||
// Save layout.controls file (text or binary)
|
|
||||||
if (fileName != NULL)
|
|
||||||
{
|
|
||||||
if (GetExtension(fileName) == NULL) strcat(fileName, ".rgl\0"); // No extension provided
|
|
||||||
SaveLayoutRGL(fileName, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
exitWindow = true;
|
exitWindow = true;
|
||||||
}
|
}
|
||||||
else if (GuiButton((Rectangle){ GetScreenWidth()/2 + 20, GetScreenHeight()/2 + 10, 85, 25 }, "No")) { exitWindow = true; }
|
else if (GuiButton((Rectangle){ GetScreenWidth()/2 + 10, GetScreenHeight()/2 + 10, 85, 25 }, "No")) { exitWindow = true; }
|
||||||
}
|
}
|
||||||
|
|
||||||
EndDrawing();
|
EndDrawing();
|
||||||
@ -1654,6 +1569,22 @@ int main()
|
|||||||
// Module specific Functions Definition
|
// Module specific Functions Definition
|
||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// Show save layout dialog
|
||||||
|
static void ShowSaveLayoutDialog(void)
|
||||||
|
{
|
||||||
|
const char *filters[] = { "*.rgl" };
|
||||||
|
const char *fileName = tinyfd_saveFileDialog("Save raygui layout text file", "", 1, filters, "raygui Layout Files (*.rgl)");
|
||||||
|
|
||||||
|
// Save layout.controls file (text or binary)
|
||||||
|
if (fileName != NULL)
|
||||||
|
{
|
||||||
|
char outFileName[64] = { 0 };
|
||||||
|
strcpy(outFileName, fileName);
|
||||||
|
if (GetExtension(fileName) == NULL) strcat(outFileName, ".rgl\0"); // No extension provided
|
||||||
|
SaveLayoutRGL(outFileName, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Save gui layout information
|
// Save gui layout information
|
||||||
static void SaveLayoutRGL(const char *fileName, bool binary)
|
static void SaveLayoutRGL(const char *fileName, bool binary)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user