Skip to content

Commit

Permalink
Refactor main_frame.cpp split layout, and add basic file explorer tree
Browse files Browse the repository at this point in the history
  • Loading branch information
kosude committed May 4, 2024
1 parent 5e9bbc5 commit 9173710
Show file tree
Hide file tree
Showing 4 changed files with 109 additions and 32 deletions.
1 change: 1 addition & 0 deletions texedit/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ set(DEPS_DIR "${CMAKE_CURRENT_LIST_DIR}/../deps/")

set(SRCS
"gui/editor_panel.cpp"
"gui/explorer_panel.cpp"
"gui/main_frame.cpp"
"gui/preview_panel.cpp"
"gui/prog_info.cpp"
Expand Down
18 changes: 18 additions & 0 deletions texedit/gui/explorer_panel.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/*
* Copyright (c) 2024 Jack Bennett.
* All Rights Reserved.
*
* See the LICENCE file for more information.
*/

#include "explorer_panel.hpp"

namespace te::gui {
ExplorerPanel::ExplorerPanel(wxWindow *parent) : wxPanel(parent) {
_dirctl = new wxGenericDirCtrl(this, wxID_ANY);

_sizer = new wxBoxSizer(wxVERTICAL);
_sizer->Add(_dirctl, 1, wxEXPAND);
SetSizer(_sizer);
}
}
26 changes: 26 additions & 0 deletions texedit/gui/explorer_panel.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/*
* Copyright (c) 2024 Jack Bennett.
* All Rights Reserved.
*
* See the LICENCE file for more information.
*/

#pragma once
#ifndef __texedit__explorer_panel_hpp__
#define __texedit__explorer_panel_hpp__

#include <wx/wx.h>
#include <wx/dirctrl.h>

namespace te::gui {
class ExplorerPanel : public wxPanel {
public:
ExplorerPanel(wxWindow *parent);

private:
wxBoxSizer *_sizer;
wxGenericDirCtrl *_dirctl;
};
}

#endif
96 changes: 64 additions & 32 deletions texedit/gui/main_frame.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#include "process/process.hpp"
#include "command_ids.hpp"
#include "editor_panel.hpp"
#include "explorer_panel.hpp"
#include "prog_info.hpp"

#include <wx/aboutdlg.h>
Expand Down Expand Up @@ -47,38 +48,69 @@ namespace te::gui {
}

void MainFrame::BuildSplitLayout() {
wxSplitterWindow *hsplitter = new wxSplitterWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_LIVE_UPDATE);
hsplitter->SetMinimumPaneSize(100);

wxWindow *t = new wxWindow(hsplitter, wxID_ANY);

wxSplitterWindow *vsplitter = new wxSplitterWindow(t, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_LIVE_UPDATE);
vsplitter->SetMinimumPaneSize(100);
wxWindow *l = new wxWindow(vsplitter, wxID_ANY);
wxBoxSizer* lSizer = new wxBoxSizer(wxVERTICAL);
lSizer->Add(new EditorPanel(l), 1, wxEXPAND);
l->SetSizer(lSizer);
wxWindow *r = new wxWindow(vsplitter, wxID_ANY);
wxBoxSizer* rSizer = new wxBoxSizer(wxVERTICAL);
_preview = new PreviewPanel(r);
rSizer->Add(_preview, 1, wxEXPAND);
r->SetSizer(rSizer);
vsplitter->SplitVertically(l, r);
wxBoxSizer *tSizer = new wxBoxSizer(wxVERTICAL);
tSizer->Add(vsplitter, 1, wxEXPAND);
t->SetSizer(tSizer);

wxWindow *b = new wxWindow(hsplitter, wxID_ANY);
wxBoxSizer *bSizer = new wxBoxSizer(wxVERTICAL);
_lb = new wxListBox(b, wxID_ANY);
bSizer->Add(_lb, 1, wxEXPAND);
b->SetSizer(bSizer);

hsplitter->SplitHorizontally(t, b);

wxBoxSizer *rootSizer = new wxBoxSizer(wxHORIZONTAL);
rootSizer->Add(hsplitter, 1, wxEXPAND);
SetSizer(rootSizer);
// |
// Explorer | Editor, preview, etc
// |
wxSplitterWindow *left_split = new wxSplitterWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_LIVE_UPDATE);
left_split->SetMinimumPaneSize(100);
wxWindow *explorer_pane = new wxWindow(left_split, wxID_ANY);
wxWindow *non_explorer_nested = new wxWindow(left_split, wxID_ANY);
left_split->SplitVertically(explorer_pane, non_explorer_nested);

// |
// Editor | Preview etc
// |
wxSplitterWindow *middle_split = new wxSplitterWindow(non_explorer_nested, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_LIVE_UPDATE);
middle_split->SetMinimumPaneSize(200);
wxWindow *editor_pane = new wxWindow(middle_split, wxID_ANY);
wxWindow *non_editor_nested = new wxWindow(middle_split, wxID_ANY);
middle_split->SplitVertically(editor_pane, non_editor_nested);

// Preview
// ----------------
// Output console
wxSplitterWindow *right_hoz_split = new wxSplitterWindow(non_editor_nested, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_LIVE_UPDATE);
right_hoz_split->SetMinimumPaneSize(200);
wxWindow *preview_pane = new wxWindow(right_hoz_split, wxID_ANY);
wxWindow *console_pane = new wxWindow(right_hoz_split, wxID_ANY);
right_hoz_split->SplitHorizontally(preview_pane, console_pane);

// Explorer
ExplorerPanel *explorer = new ExplorerPanel(explorer_pane);
wxBoxSizer *explorer_sizer = new wxBoxSizer(wxVERTICAL);
explorer_pane->SetSizer(explorer_sizer);
explorer_sizer->Add(explorer, 1, wxEXPAND);
wxBoxSizer *non_explorer_sizer = new wxBoxSizer(wxVERTICAL);
non_explorer_nested->SetSizer(non_explorer_sizer);
non_explorer_sizer->Add(middle_split, 1, wxEXPAND);

// Editor
EditorPanel *editor = new EditorPanel(editor_pane);
wxBoxSizer *editor_sizer = new wxBoxSizer(wxVERTICAL);
editor_pane->SetSizer(editor_sizer);
editor_sizer->Add(editor, 1, wxEXPAND);
wxBoxSizer *non_editor_sizer = new wxBoxSizer(wxVERTICAL);
non_editor_nested->SetSizer(non_editor_sizer);
non_editor_sizer->Add(right_hoz_split, 1, wxEXPAND);

// Preview
_preview = new PreviewPanel(preview_pane);
wxBoxSizer *preview_sizer = new wxBoxSizer(wxVERTICAL);
preview_pane->SetSizer(preview_sizer);
preview_sizer->Add(_preview, 1, wxEXPAND);

// Console (listbox)
_lb = new wxListBox(console_pane, wxID_ANY);
wxBoxSizer *console_sizer = new wxBoxSizer(wxVERTICAL);
console_pane->SetSizer(console_sizer);
console_sizer->Add(_lb, 1, wxEXPAND);

//
// Root sizer
//
wxBoxSizer *root = new wxBoxSizer(wxHORIZONTAL);
root->Add(left_split, 1, wxEXPAND);
SetSizer(root);
}

void MainFrame::BuildMenuBar() {
Expand Down

0 comments on commit 9173710

Please sign in to comment.