Developing file operation dialogs.
This commit is contained in:
@@ -79,6 +79,10 @@ JUI::Window* EditorApp::CreateAppInfoDialogWindow(JUI::Widget* parent)
|
||||
return window;
|
||||
}
|
||||
|
||||
Layer * EditorApp::GetLayer(int index) const {
|
||||
return loaded_level->layers[index];
|
||||
}
|
||||
|
||||
Vector2i EditorApp::IndexToCell(int index, int width)
|
||||
{
|
||||
int x = index % width;
|
||||
@@ -208,6 +212,9 @@ void EditorApp::SaveCurrentLevel() const
|
||||
layer->Save();
|
||||
}
|
||||
|
||||
// save current timestamp to level file.
|
||||
loaded_level->last_edit_timestamp = std::format("{:%d-%m-%Y %H:%M:%OS}", std::chrono::system_clock::now());
|
||||
|
||||
auto data = loaded_level->Serialize();
|
||||
|
||||
write_file_contents("level.json", json::deparse(data));
|
||||
@@ -317,7 +324,6 @@ void EditorApp::CreateTestLevel() {
|
||||
data_ready = true;
|
||||
|
||||
SaveCurrentLevel();
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -352,7 +358,6 @@ JUI::Window* EditorApp::CreateTilesetViewerWindow(JUI::Widget* parent)
|
||||
|
||||
auto* grid_overlay_tex = new JGL::Texture(*grid_overlay->GetTexture());
|
||||
|
||||
|
||||
auto* overlay = new JUI::Image(wind->Content());
|
||||
overlay->Content(grid_overlay_tex);
|
||||
overlay->ZIndex(2);
|
||||
@@ -476,6 +481,67 @@ void EditorApp::BindConsoleCallbacks()
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
void EditorApp::CreateTopbarWidgets() {
|
||||
// Topbar Creation
|
||||
topbar = new JUI::UtilityBar(scene);
|
||||
|
||||
topbar_stats = new JUI::Text(topbar);
|
||||
topbar_stats->HorizontalTextAlign(JUI::TextAlign::H::Right);
|
||||
topbar_stats->TextColor(Colors::Black);
|
||||
|
||||
auto* file = topbar->AddSubmenu("File");
|
||||
file->Font(JGL::Fonts::Jupiteroid);
|
||||
|
||||
auto* new_map = file->AddButton("New Map", [this] () mutable {
|
||||
nmd->Open();
|
||||
});
|
||||
|
||||
file->AddButton("Open", [this]() mutable {
|
||||
|
||||
if (file_dialog) {
|
||||
//file_dialog->Close();
|
||||
//file_dialog->Parent(nullptr);
|
||||
//delete file_dialog;
|
||||
}
|
||||
|
||||
|
||||
file_dialog = new JUI::FileDialogWindow(scene, ".");
|
||||
});
|
||||
file->AddButton("Save", [this]{SaveCurrentLevel();});
|
||||
file->AddButton("Save As");
|
||||
file->AddSeparator(2_px);
|
||||
file->AddButton("About", [this]{app_info_dialog->Toggle(); });
|
||||
file->AddButton("Preferences");
|
||||
|
||||
auto* edit = topbar->AddSubmenu("Edit");
|
||||
edit->AddButton("Undo");
|
||||
edit->AddButton("Redo");
|
||||
edit->AddButton("Copy");
|
||||
edit->AddSeparator(2_px);
|
||||
edit->AddButton("Paste");
|
||||
edit->AddButton("Cut Selection");
|
||||
|
||||
auto* view = topbar->AddSubmenu("View");
|
||||
view->AddButton("Zoom In");
|
||||
view->AddButton("Zoom Out");
|
||||
view->AddSeparator(2_px);
|
||||
view->AddButton("Toggle Grid", [this]{ToggleGrid();});
|
||||
view->AddButton("Set Background Color", [this]{bg_color_tool_window->Toggle();});
|
||||
view->AddSeparator(2_px);
|
||||
view->AddButton("Console", [this]()mutable { console->Toggle();});
|
||||
view->AddButton("Tileset Viewer", [this]()mutable { tileset_view->Toggle();});
|
||||
|
||||
auto* level = topbar->AddSubmenu("Level");
|
||||
auto* layer = topbar->AddSubmenu("Layer");
|
||||
layer->AddButton("New");
|
||||
layer->AddButton("Open from File");
|
||||
layer->AddButton("Duplicate Selected");
|
||||
layer->AddButton("Delete Selected");
|
||||
layer->AddButton("Edit Selected");
|
||||
layer->AddButton("Export Layer");
|
||||
}
|
||||
|
||||
void EditorApp::CreateWidgets()
|
||||
{
|
||||
scene = new JUI::Scene();
|
||||
@@ -510,55 +576,7 @@ void EditorApp::CreateWidgets()
|
||||
layer_view = new LayerView(scene);
|
||||
layer_view->Close();
|
||||
|
||||
|
||||
topbar = new JUI::UtilityBar(scene);
|
||||
|
||||
topbar_stats = new JUI::Text(topbar);
|
||||
topbar_stats->HorizontalTextAlign(JUI::TextAlign::H::Left);
|
||||
topbar_stats->TextColor(Colors::Black);
|
||||
|
||||
|
||||
auto* file = topbar->AddSubmenu("File");
|
||||
file->Font(JGL::Fonts::Jupiteroid);
|
||||
|
||||
|
||||
auto* new_map = file->AddButton("New Map", [this] () mutable {
|
||||
nmd->Open();
|
||||
});
|
||||
|
||||
file->AddButton("Open");
|
||||
file->AddButton("Save", [this]{SaveCurrentLevel();});
|
||||
file->AddButton("Save As");
|
||||
file->AddSeparator(2_px);
|
||||
file->AddButton("About", [this]{app_info_dialog->Toggle(); });
|
||||
file->AddButton("Preferences");
|
||||
|
||||
auto* edit = topbar->AddSubmenu("Edit");
|
||||
edit->AddButton("Undo");
|
||||
edit->AddButton("Redo");
|
||||
edit->AddButton("Copy");
|
||||
edit->AddSeparator(2_px);
|
||||
edit->AddButton("Paste");
|
||||
edit->AddButton("Cut Selection");
|
||||
|
||||
auto* view = topbar->AddSubmenu("View");
|
||||
view->AddButton("Zoom In");
|
||||
view->AddButton("Zoom Out");
|
||||
view->AddSeparator(2_px);
|
||||
view->AddButton("Toggle Grid", [this]{ToggleGrid();});
|
||||
view->AddButton("Set Background Color", [this]{bg_color_tool_window->Toggle();});
|
||||
view->AddSeparator(2_px);
|
||||
view->AddButton("Console", [this]()mutable { console->Toggle();});
|
||||
view->AddButton("Tileset Viewer", [this]()mutable { tileset_view->Toggle();});
|
||||
|
||||
auto* level = topbar->AddSubmenu("Level");
|
||||
auto* layer = topbar->AddSubmenu("Layer");
|
||||
layer->AddButton("New");
|
||||
layer->AddButton("Open from File");
|
||||
layer->AddButton("Duplicate Selected");
|
||||
layer->AddButton("Delete Selected");
|
||||
layer->AddButton("Edit Selected");
|
||||
layer->AddButton("Export Layer");
|
||||
CreateTopbarWidgets();
|
||||
|
||||
|
||||
bg_color_tool_window = new JUI::Window(scene);
|
||||
@@ -1057,8 +1075,12 @@ void EditorApp::OnKeyDown(const KeyDownEvent& e)
|
||||
|
||||
void EditorApp::OnKeyUp(const KeyUpEvent& e)
|
||||
{
|
||||
|
||||
|
||||
if (scene->ObserveKeyInput(e.key, false)) return;
|
||||
|
||||
if (e.key == Keys::T)
|
||||
if (e.key == Keys::T && tileset_view) {
|
||||
tileset_view->Toggle();
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -10,7 +10,6 @@ Layer::Layer(int rows, int cols, int cell_width, int cell_height): cells(nullptr
|
||||
this->cell_width = cell_width;
|
||||
this->cell_height = cell_height;
|
||||
this->visible = true;
|
||||
|
||||
}
|
||||
|
||||
Layer::Layer(const json::value& json)
|
||||
|
Reference in New Issue
Block a user