summaryrefslogtreecommitdiff
path: root/fluid/panels/codeview_panel.cxx
diff options
context:
space:
mode:
authorMatthias Melcher <github@matthiasm.com>2025-03-16 17:16:12 -0400
committerGitHub <noreply@github.com>2025-03-16 17:16:12 -0400
commit51a55bc73660f64e8f4b32b8b4d3858f2a786f7b (patch)
tree122ad9f838fcf8f61ed7cf5fa031e8ed69817e10 /fluid/panels/codeview_panel.cxx
parent13a7073a1e007ce5b71ef70bced1a9b15158820d (diff)
Fluid: restructuring and rejuvenation of the source code.
* Add classes for application and project * Removed all globals from Fluid.h * Extracting args and project history into their own classes * Moving globals into Application class * Initialize values inside headers for some classes. * Undo functionality wrapped in a class inside Project. * File reader and writer are now linked to a project. * Avoid global project access * Nodes (former Types) will be managed by a new Tree class. * Removed static members (hidden globals) form Node/Fl_Type. * Adding Tree iterator. * Use nullptr instead of 0, NULL, or 0L * Renamed Fl_..._Type to ..._Node, FL_OVERRIDE -> override * Renaming ..._type to ...::prototype * Splitting Widget Panel into multiple files. * Moved callback code into widget panel file. * Cleaning up Fluid_Image -> Image_asset * Moving Fd_Snap_Action into new namespace fld::app::Snap_Action etc. * Moved mergeback into proj folder. * `enum ID` is now `enum class Type`.
Diffstat (limited to 'fluid/panels/codeview_panel.cxx')
-rw-r--r--fluid/panels/codeview_panel.cxx115
1 files changed, 58 insertions, 57 deletions
diff --git a/fluid/panels/codeview_panel.cxx b/fluid/panels/codeview_panel.cxx
index c1c6a1d65..745ad0ad1 100644
--- a/fluid/panels/codeview_panel.cxx
+++ b/fluid/panels/codeview_panel.cxx
@@ -17,19 +17,20 @@
// generated by Fast Light User Interface Designer (fluid) version 1.0500
#include "codeview_panel.h"
-#include "app/fluid.h"
-#include "app/project.h"
+#include "Fluid.h"
+#include "Project.h"
#include "io/Project_Reader.h"
#include "io/Project_Writer.h"
+#include "io/String_Writer.h"
#include <FL/Fl_Tabs.H>
#include <FL/Fl_Button.H>
#include "../src/flstring.h"
-static char *cv_source_filename = NULL;
-static char *cv_header_filename = NULL;
-static char *cv_design_filename = NULL;
+static char *cv_source_filename = nullptr;
+static char *cv_header_filename = nullptr;
+static char *cv_design_filename = nullptr;
int cv_code_choice;
-extern void select_only(Fl_Type *o);
-extern void reveal_in_browser(Fl_Type *t);
+extern void select_only(Node *o);
+extern void reveal_in_browser(Node *t);
/**
Update the header and source code highlighting depending on the
@@ -45,29 +46,29 @@ void update_codeview_position() {
return;
if (cv_autoposition->value()==0)
return;
- if (codeview_panel && codeview_panel->visible() && Fl_Type::current) {
+ if (codeview_panel && codeview_panel->visible() && Fluid.proj.tree.current) {
int pos0 = 0, pos1 = 0;
if (cv_source->visible_r()) {
switch (cv_code_choice) {
case 0: // prolog: not yet (include statements)
- pos0 = Fl_Type::current->code1_start;
- pos1 = Fl_Type::current->code2_end;
+ pos0 = Fluid.proj.tree.current->code1_start;
+ pos1 = Fluid.proj.tree.current->code2_end;
break;
case 1: // static: callbacks, menu declarations
- pos0 = Fl_Type::current->code_static_start;
- pos1 = Fl_Type::current->code_static_end;
+ pos0 = Fluid.proj.tree.current->code_static_start;
+ pos1 = Fluid.proj.tree.current->code_static_end;
break;
case 2: // code: entire implementation block including children
- pos0 = Fl_Type::current->code1_start;
- pos1 = Fl_Type::current->code2_end;
+ pos0 = Fluid.proj.tree.current->code1_start;
+ pos1 = Fluid.proj.tree.current->code2_end;
break;
case 3: // code1: all implementation code before the children
- pos0 = Fl_Type::current->code1_start;
- pos1 = Fl_Type::current->code1_end;
+ pos0 = Fluid.proj.tree.current->code1_start;
+ pos1 = Fluid.proj.tree.current->code1_end;
break;
case 4: // code1: all implementation code before the children
- pos0 = Fl_Type::current->code2_start;
- pos1 = Fl_Type::current->code2_end;
+ pos0 = Fluid.proj.tree.current->code2_start;
+ pos1 = Fluid.proj.tree.current->code2_end;
break;
}
if (pos0>=0) {
@@ -82,20 +83,20 @@ void update_codeview_position() {
switch (cv_code_choice) {
case 0: // prolog: not yet (include statements)
case 1: // static: callbacks, menu declarations
- pos0 = Fl_Type::current->header_static_start;
- pos1 = Fl_Type::current->header_static_end;
+ pos0 = Fluid.proj.tree.current->header_static_start;
+ pos1 = Fluid.proj.tree.current->header_static_end;
break;
case 2: // code: entire implementation block including children
- pos0 = Fl_Type::current->header1_start;
- pos1 = Fl_Type::current->header2_end;
+ pos0 = Fluid.proj.tree.current->header1_start;
+ pos1 = Fluid.proj.tree.current->header2_end;
break;
case 3: // code1: all implementation code before the children
- pos0 = Fl_Type::current->header1_start;
- pos1 = Fl_Type::current->header1_end;
+ pos0 = Fluid.proj.tree.current->header1_start;
+ pos1 = Fluid.proj.tree.current->header1_end;
break;
case 4: // code1: all implementation code before the children
- pos0 = Fl_Type::current->header2_start;
- pos1 = Fl_Type::current->header2_end;
+ pos0 = Fluid.proj.tree.current->header2_start;
+ pos1 = Fluid.proj.tree.current->header2_end;
break;
}
if (pos0>=0) {
@@ -111,16 +112,16 @@ void update_codeview_position() {
case 0: // prolog: not yet (include statements)
case 1: // static: callbacks, menu declarations
case 2: // code: entire implementation block including children
- pos0 = Fl_Type::current->proj1_start;
- pos1 = Fl_Type::current->proj2_end;
+ pos0 = Fluid.proj.tree.current->proj1_start;
+ pos1 = Fluid.proj.tree.current->proj2_end;
break;
case 3: // code1: all implementation code before the children
- pos0 = Fl_Type::current->proj1_start;
- pos1 = Fl_Type::current->proj1_end;
+ pos0 = Fluid.proj.tree.current->proj1_start;
+ pos1 = Fluid.proj.tree.current->proj1_end;
break;
case 4: // code1: all implementation code before the children
- pos0 = Fl_Type::current->proj2_start;
- pos1 = Fl_Type::current->proj2_end;
+ pos0 = Fluid.proj.tree.current->proj2_start;
+ pos1 = Fluid.proj.tree.current->proj2_end;
break;
}
if (pos0>=0) {
@@ -154,43 +155,43 @@ void update_codeview_cb(class Fl_Button*, void*) {
if (!cv_source_filename) {
cv_source_filename = (char*)malloc(FL_PATH_MAX);
- fl_strlcpy(cv_source_filename, get_tmpdir().c_str(), FL_PATH_MAX);
+ fl_strlcpy(cv_source_filename, Fluid.get_tmpdir().c_str(), FL_PATH_MAX);
fl_strlcat(cv_source_filename, "codeview_tmp.cxx", FL_PATH_MAX);
}
if (!cv_header_filename) {
cv_header_filename = (char*)malloc(FL_PATH_MAX);
- fl_strlcpy(cv_header_filename, get_tmpdir().c_str(), FL_PATH_MAX);
+ fl_strlcpy(cv_header_filename, Fluid.get_tmpdir().c_str(), FL_PATH_MAX);
fl_strlcat(cv_header_filename, "codeview_tmp.h", FL_PATH_MAX);
}
if (!cv_design_filename) {
cv_design_filename = (char*)malloc(FL_PATH_MAX);
- fl_strlcpy(cv_design_filename, get_tmpdir().c_str(), FL_PATH_MAX);
+ fl_strlcpy(cv_design_filename, Fluid.get_tmpdir().c_str(), FL_PATH_MAX);
fl_strlcat(cv_design_filename, "codeview_tmp.fl", FL_PATH_MAX);
}
if (cv_project->visible_r()) {
- fld::io::write_file(cv_design_filename, false, true);
+ fld::io::write_file(Fluid.proj, cv_design_filename, false, true);
int top = cv_project->top_line();
cv_project->buffer()->loadfile(cv_design_filename);
cv_project->scroll(top, 0);
} else if (cv_strings->visible_r()) {
static const char *exts[] = { ".txt", ".po", ".msg" };
char fn[FL_PATH_MAX+1];
- fl_strlcpy(fn, get_tmpdir().c_str(), FL_PATH_MAX);
+ fl_strlcpy(fn, Fluid.get_tmpdir().c_str(), FL_PATH_MAX);
fl_strlcat(fn, "strings", FL_PATH_MAX);
- fl_filename_setext(fn, FL_PATH_MAX, exts[g_project.i18n_type]);
- write_strings(fn);
+ fl_filename_setext(fn, FL_PATH_MAX, exts[static_cast<int>(Fluid.proj.i18n_type)]);
+ fld::io::write_strings(Fluid.proj, fn);
int top = cv_strings->top_line();
cv_strings->buffer()->loadfile(fn);
cv_strings->scroll(top, 0);
} else if (cv_source->visible_r() || cv_header->visible_r()) {
- std::string code_file_name_bak = g_project.code_file_name;
- g_project.code_file_name = cv_source_filename;
- std::string header_file_name_bak = g_project.header_file_name;
- g_project.header_file_name = cv_header_filename;
+ std::string code_file_name_bak = Fluid.proj.code_file_name;
+ Fluid.proj.code_file_name = cv_source_filename;
+ std::string header_file_name_bak = Fluid.proj.header_file_name;
+ Fluid.proj.header_file_name = cv_header_filename;
// generate the code and load the files
- fld::io::Code_Writer f;
+ fld::io::Code_Writer f(Fluid.proj);
// generate files
if (f.write_code(cv_source_filename, cv_header_filename, true))
{
@@ -206,8 +207,8 @@ void update_codeview_cb(class Fl_Button*, void*) {
update_codeview_position();
}
- g_project.code_file_name = code_file_name_bak;
- g_project.header_file_name = header_file_name_bak;
+ Fluid.proj.code_file_name = code_file_name_bak;
+ Fluid.proj.header_file_name = header_file_name_bak;
}
}
@@ -236,7 +237,7 @@ void codeview_toggle_visibility() {
if (!codeview_panel) {
make_codeview();
codeview_panel->callback((Fl_Callback*)toggle_codeview_cb);
- Fl_Preferences svp(fluid_prefs, "codeview");
+ Fl_Preferences svp(Fluid.preferences, "codeview");
int autorefresh;
svp.get("autorefresh", autorefresh, 1);
cv_autorefresh->value(autorefresh);
@@ -248,15 +249,15 @@ void codeview_toggle_visibility() {
if (tab>=0 && tab<cv_tab->children()) cv_tab->value(cv_tab->child(tab));
svp.get("code_choice", cv_code_choice, 2);
cv_code_choice_w->value(cv_code_choice_w->find_item_with_argument(cv_code_choice));
- if (!position_window(codeview_panel,"codeview_pos", 0, 320, 120, 550, 500)) return;
+ if (!Fluid.position_window(codeview_panel,"codeview_pos", 0, 320, 120, 550, 500)) return;
}
if (codeview_panel->visible()) {
codeview_panel->hide();
- codeview_item->label("Show Code View");
+ Fluid.codeview_item->label("Show Code View");
} else {
codeview_panel->show();
- codeview_item->label("Hide Code View");
+ Fluid.codeview_item->label("Hide Code View");
update_codeview_cb(0,0);
}
}
@@ -282,7 +283,7 @@ Fl_Button *cv_find_text_case=(Fl_Button *)0;
Fl_Input *cv_find_text=(Fl_Input *)0;
static void cb_cv_find_text(Fl_Input* o, void*) {
- Fl_Text_Display *e = NULL;
+ Fl_Text_Display *e = nullptr;
if (cv_source->visible_r()) {
e = cv_source;
} else if (cv_header->visible_r()) {
@@ -303,7 +304,7 @@ static void cb_cv_find_text(Fl_Input* o, void*) {
}
static void cb_(Fl_Button*, void*) {
- Fl_Text_Display *e = NULL;
+ Fl_Text_Display *e = nullptr;
if (cv_source->visible_r()) {
e = cv_source;
} else if (cv_header->visible_r()) {
@@ -328,7 +329,7 @@ static void cb_(Fl_Button*, void*) {
}
static void cb_1(Fl_Button*, void*) {
- Fl_Text_Display *e = NULL;
+ Fl_Text_Display *e = nullptr;
if (cv_source->visible_r()) {
e = cv_source;
} else if (cv_header->visible_r()) {
@@ -354,13 +355,13 @@ static void cb_1(Fl_Button*, void*) {
static void cb_Reveal(Fl_Button*, void*) {
if (codeview_panel && codeview_panel->visible()) {
- Fl_Type *node = NULL;
+ Node *node = nullptr;
if (cv_source->visible_r())
- node = Fl_Type::find_in_text(0, cv_source->insert_position());
+ node = Fluid.proj.tree.find_in_text(0, cv_source->insert_position());
else if (cv_header->visible_r())
- node = Fl_Type::find_in_text(1, cv_header->insert_position());
+ node = Fluid.proj.tree.find_in_text(1, cv_header->insert_position());
else if (cv_project->visible_r())
- node = Fl_Type::find_in_text(2, cv_project->insert_position());
+ node = Fluid.proj.tree.find_in_text(2, cv_project->insert_position());
if (node) {
select_only(node);
reveal_in_browser(node);