From 3e7e4bd213fa825ffd01e8cfc4662d3f862cf580 Mon Sep 17 00:00:00 2001 From: IXtreme Date: Mon, 12 Oct 2026 20:35:35 -0400 Subject: [PATCH] meow --- src/custom_types.hpp | 1 + src/main.cpp | 173 +++++++++++++++++++++++++++++++---------- src/summarymanager.cpp | 141 ++++++++++++++++++--------------- src/summarymanager.hpp | 24 +++--- 4 files changed, 222 insertions(+), 117 deletions(-) diff --git a/src/custom_types.hpp b/src/custom_types.hpp index d560abf..0b66963 100644 --- a/src/custom_types.hpp +++ b/src/custom_types.hpp @@ -10,6 +10,7 @@ struct Person { std::string year; std::string name; + Person() = default; Person(std::string &y, std::string &n); std::string toString() const; diff --git a/src/main.cpp b/src/main.cpp index 9bdd5d5..5fc95dc 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,5 +1,6 @@ #include #include +#include #include #include #include @@ -19,7 +20,9 @@ #include #include #include +#include #include +#include #include #include @@ -33,8 +36,24 @@ struct Selected { Selected(Fl_Multi_Browser &browser_in) : browser(browser_in) {} }; -void show_callback(Fl_Widget *w, void * data); -void add_callback(Fl_Widget *w, void * data); +// void show_callback(Fl_Widget *w, void * data); +// void add_callback(Fl_Widget *w, void * data); + + +struct ProjectItem { + BasicEntry e; + std::string notes; + + ProjectItem(const BasicEntry& in) { + e = in; + } +}; + + + + +void loadState(Fl_Widget * w, void *data); +void SaveNote(Fl_Widget * w, void * data); std::vector MakeEntires(std::string filename) { @@ -121,19 +140,23 @@ std::vector MakeEntires(std::string filename) { } struct State { - std::vector entries; + std::vector entries; }; -void changelayout(Fl_Widget *w, void *meow) { - std::pair *in = (std::pair *)meow; - in->second.show(); - // in->second.parent()->redraw(); - // in->first.window()->redraw(); - // in->first.init_sizes(); - in->first.layout(); - in->second.redraw(); - // in->first.redraw(); -} + + + + +// void changelayout(Fl_Widget *w, void *meow) { +// std::pair *in = (std::pair *)meow; +// in->second.show(); +// // in->second.parent()->redraw(); +// // in->first.window()->redraw(); +// // in->first.init_sizes(); +// in->first.layout(); +// in->second.redraw(); +// // in->first.redraw(); +// } struct Topbar : Fl_Group { @@ -170,16 +193,23 @@ struct MainGui : Fl_Window { Fl_Tile *tilebox; Fl_Multi_Browser *list; - SummaryManager *summaryEditor; + Fl_Text_Editor * notes; + Summary * summary; State s; MainGui() : Fl_Window(0, 0, 1000, 750, "MossMan :3") { topbar = new Topbar(0, 0, 1000, 50); tilebox = new Fl_Tile(0, 50, 1000, 700); // parent is maingui, will be freed at decon list = new Fl_Multi_Browser(0, 50, 250, 700); - summaryEditor = new SummaryManager(250, 50, 750, 700); - topbar->inspect->callback(show_callback, this); - topbar->add->callback(add_callback, this); + list->callback(loadState, this); + summary = new Summary(250, 50, 500, 700); + //auto notesPane = new Fl_Group(750, 50, 250, 700); + notes = new Fl_Text_Editor(750, 50, 250, 700); + notes->callback(SaveNote, this); + notes->buffer(new Fl_Text_Buffer()); + + // topbar->inspect->callback(show_callback, this); + // topbar->add->callback(add_callback, this); tilebox->end(); @@ -190,48 +220,105 @@ struct MainGui : Fl_Window { void updateList(std::string filename) { - s.entries = MakeEntires(filename); + auto temp = MakeEntires(filename); + + s.entries = temp | std::ranges::views::transform([](auto& in) { return ProjectItem(in);}) | std::ranges::to>(); + + for (auto e : s.entries) { - std::cout << e << std::endl; + std::cout << e.e << std::endl; } - for (size_t i = 0; i < s.entries.size(); i++) { - auto e = s.entries[i]; - auto h = ((e.A.year + "/" + e.A.name) + " and " + (e.B.year + "/" + e.B.name) + " (" + - std::to_string(e.Apercent) + "%, " + std::to_string(e.Bpercent) + "%)"); - list->add(h.c_str(), (void *) i); - } + // for (size_t i = 0; i < s.entries.size(); i++) { + // auto e = s.entries[i]; + // auto h = ((e.A.year + "/" + e.A.name) + " and " + (e.B.year + "/" + e.B.name) + " (" + + // std::to_string(e.Apercent) + "%, " + std::to_string(e.Bpercent) + "%)"); + // list->add(h.c_str(), (void *) i); + // } } }; -void show_callback(Fl_Widget *w, void *data) { - MainGui *rdata = (MainGui *)data; +// void show_callback(Fl_Widget *w, void *data) { +// MainGui *rdata = (MainGui *)data; - auto s = rdata->list->size() + 1; +// auto s = rdata->list->size() + 1; - for (size_t i = 0; i < s; i++) { - if (rdata->list->selected(i)) { - //fl_alert("%s", rdata->list->text(i)); - auto c = ComplexEntry(rdata->s.entries[ (size_t) rdata->list->data(i)]); - rdata->summaryEditor->addComplex(c); - } - } +// for (size_t i = 0; i < s; i++) { +// if (rdata->list->selected(i)) { +// //fl_alert("%s", rdata->list->text(i)); +// auto c = ComplexEntry(rdata->s.entries[ (size_t) rdata->list->data(i)]); +// rdata->summaryEditor->addComplex(c); +// } +// } +// } + + +void loadState(Fl_Widget * w, void *data) { + MainGui * main = (MainGui *) data; + + auto selLine = main->list->value(); + + main->list->clear(); + + for (size_t i = 0; i < main->s.entries.size(); i++) { + auto e = main->s.entries[i].e; + std::string format = ""; + if (main->s.entries[i].notes != "") { + format = "@b@i"; + } + + auto h = format + + ((e.A.year + "/" + e.A.name) + " and " + (e.B.year + "/" + e.B.name) + " (" + + std::to_string(e.Apercent) + "%, " + std::to_string(e.Bpercent) + "%)"); + main->list->add(h.c_str(), (void *)i); + } + + main->list->value(selLine); + auto i = main->list->value(); + if (i != 0) { + size_t index = (size_t) main->list->data(i); + main->summary->populate(main->s.entries[index].e); + main->notes->buffer()->remove(0, main->notes->buffer()->length()); + main->notes->buffer()->insert(0, main->s.entries[index].notes.c_str()); + + } } -void add_callback(Fl_Widget *w, void *data) { - MainGui * rdata = (MainGui *) data; +void SaveNote(Fl_Widget * w, void * data) { + MainGui * main = (MainGui *) data; + + auto i = main->list->value(); + if (i != 0) { + size_t index = (size_t) main->list->data(i); + auto text = main->notes->buffer()->text(); + main->s.entries[index].notes = std::string(text); + std::free(text); - auto activetab = (Summary *) rdata->summaryEditor->tabs.value(); - if (rdata->summaryEditor->tabs.child(0) == activetab) { - return; } + loadState(w, data); + main->redraw(); + +} + +// void add_callback(Fl_Widget *w, void *data) { +// MainGui * rdata = (MainGui *) data; + +// auto activetab = (Summary *) rdata->summaryEditor->tabs.value(); +// if (rdata->summaryEditor->tabs.child(0) == activetab) { +// return; +// } + - auto v = new ComplexEntry(activetab->entry); - rdata->summaryEditor->project_items->add(activetab->title.c_str(), v); -} +// auto v = new ComplexEntry(activetab->entry); +// rdata->summaryEditor->project_items->add(activetab->title.c_str(), v); +// } + + + + int main(int argc, char **argv) { diff --git a/src/summarymanager.cpp b/src/summarymanager.cpp index 1e69577..0f0ebf5 100644 --- a/src/summarymanager.cpp +++ b/src/summarymanager.cpp @@ -47,67 +47,67 @@ void SummaryCallback(Fl_Widget * w, void * data) { } } -void SelectionCallback(Fl_Widget * w, void * data) { - auto sumMan = (SummaryManager * ) data; - if (sumMan->project_items->value() == 0) return; - sumMan->win1->begin(); - Summary * ns = new Summary( *(ComplexEntry*) sumMan->project_items->data( sumMan->project_items->value()), 201,0, 400, sumMan->project_items->h()); - ns->show(); - sumMan->win1->end(); - if (sumMan->s != NULL) { - Fl::delete_widget(sumMan->s); - } +// void SelectionCallback(Fl_Widget * w, void * data) { +// auto sumMan = (SummaryManager * ) data; +// if (sumMan->project_items->value() == 0) return; +// sumMan->win1->begin(); +// Summary * ns = new Summary( *(ComplexEntry*) sumMan->project_items->data( sumMan->project_items->value()), 201,0, 400, sumMan->project_items->h()); +// ns->show(); +// sumMan->win1->end(); +// if (sumMan->s != NULL) { +// Fl::delete_widget(sumMan->s); +// } - sumMan->s = ns; - sumMan->tabs.redraw(); - sumMan->win1->redraw(); - sumMan->redraw(); +// sumMan->s = ns; +// sumMan->tabs.redraw(); +// sumMan->win1->redraw(); +// sumMan->redraw(); -} +// } -SummaryManager::SummaryManager(int x, int y, int w, int h) - : Fl_Group(x, y, w, h), tabs(x, y, w, h) { - Fl_Group *grp1 = new Fl_Group(x, y + 30, w, h - 30, "Current Project"); - grp1->when(FL_WHEN_CLOSED); +// SummaryManager::SummaryManager(int x, int y, int w, int h) +// : Fl_Group(x, y, w, h), tabs(x, y, w, h) { +// Fl_Group *grp1 = new Fl_Group(x, y + 30, w, h - 30, "Current Project"); +// grp1->when(FL_WHEN_CLOSED); - { - win1 = new Fl_Window(x, y + 30, w, h - 30, "Tab1W"); - std::cout << "here" << std::endl; - { - project_items = new Fl_Multi_Browser(0,0,200,h-160); - project_items->callback(SelectionCallback, this); - //auto butt = new Fl_Button(100, 0, 100, 200, "test"); - } - win1->end(); - //auto butt = new Fl_Button(0, 30, 100, 200, "nyaaa"); - } - grp1->end(); - // Fl_Group *grp2 = new Fl_Group(20, 30, 280, 170, "Tab2"); - // { - // } - // grp2->end(); - // Fl_Group *grp3 = new Fl_Group(20, 30, 280, 170, "Tab3"); - // { - // } - // grp3->end(); - // Fl_Group *grp4 = new Fl_Group(20, 30, 280, 170, "Tab4"); - // { - // } - // grp4->end(); - // Fl_Group *grp5 = new Fl_Group(20, 30, 280, 170, "Tab5"); - // { - // } - // grp5->end(); - tabs.end(); - tabs.handle_overflow(Fl_Tabs::OVERFLOW_DRAG); +// { +// win1 = new Fl_Window(x, y + 30, w, h - 30, "Tab1W"); +// std::cout << "here" << std::endl; +// { +// project_items = new Fl_Multi_Browser(0,0,200,h-160); +// project_items->callback(SelectionCallback, this); +// //auto butt = new Fl_Button(100, 0, 100, 200, "test"); +// } +// win1->end(); +// //auto butt = new Fl_Button(0, 30, 100, 200, "nyaaa"); +// } +// grp1->end(); +// // Fl_Group *grp2 = new Fl_Group(20, 30, 280, 170, "Tab2"); +// // { +// // } +// // grp2->end(); +// // Fl_Group *grp3 = new Fl_Group(20, 30, 280, 170, "Tab3"); +// // { +// // } +// // grp3->end(); +// // Fl_Group *grp4 = new Fl_Group(20, 30, 280, 170, "Tab4"); +// // { +// // } +// // grp4->end(); +// // Fl_Group *grp5 = new Fl_Group(20, 30, 280, 170, "Tab5"); +// // { +// // } +// // grp5->end(); +// tabs.end(); +// tabs.handle_overflow(Fl_Tabs::OVERFLOW_DRAG); - tabs.resizable(grp1); +// tabs.resizable(grp1); - end(); - box(FL_FLAT_BOX); -} +// end(); +// box(FL_FLAT_BOX); +// } void style_unfinn_cb(int, void *a) {} @@ -149,6 +149,10 @@ std::string htmlCodesToNormal(std::string in) { void LoadReport(std::string s, Fl_Text_Buffer * text, Fl_Text_Buffer * style) { + + text->remove(0,text->length()); + style->remove(0, style->length()); + std::istringstream stream(s); std::string line; @@ -203,8 +207,14 @@ void LoadReport(std::string s, Fl_Text_Buffer * text, Fl_Text_Buffer * style) { -Summary::Summary(ComplexEntry c, int x, int y, int w, int h) : Fl_Group(x, y, w, h, "Loading..."), entry(c) { - title = c.basic.A.name + "+" + c.basic.B.name + "(" + std::to_string(c.basic.Apercent) + "%," + std::to_string(c.basic.Bpercent) + "%)"; + + + + +Summary::Summary(int x, int y, int w, int h) : Fl_Group(x, y, w, h, "Loading...") { + //title = c.basic.A.name + "+" + c.basic.B.name + "(" + std::to_string(c.basic.Apercent) + "%," + std::to_string(c.basic.Bpercent) + "%)"; + + title = ""; this->label(title.c_str()); this->when(FL_WHEN_CLOSED); Fl_Window * win = new Fl_Window(x, y, w, h); @@ -227,14 +237,10 @@ Summary::Summary(ComplexEntry c, int x, int y, int w, int h) : Fl_Group(x, y, w, s2->buffer(s2buff); - - // s1style_buff->insert(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"); // std::cout << c.A_buf.c_str() << std::endl; // s1->insert(c.A_buf.c_str()); - LoadReport(c.A_buf, s1buff, s1style_buff); - LoadReport(c.B_buf, s2buff, s2style_buff); // s2->buffer()->insert(0, c.B_buf.c_str()); @@ -251,6 +257,15 @@ Summary::Summary(ComplexEntry c, int x, int y, int w, int h) : Fl_Group(x, y, w, } + +void Summary::populate(const ComplexEntry& c) { + title = c.basic.A.name + "+" + c.basic.B.name + "(" + std::to_string(c.basic.Apercent) + "%," + std::to_string(c.basic.Bpercent) + "%)"; + + LoadReport(c.A_buf, s1buff, s1style_buff); + LoadReport(c.B_buf, s2buff, s2style_buff); + +} + Summary::~Summary() { std::cout << "HERE" << std::endl; @@ -263,8 +278,10 @@ Summary::~Summary() { } -void SummaryManager::addComplex(ComplexEntry& c) { - tabs.add(new Summary(c, this->x(), this->y() +30, this->w(), this->h() - 30)); +// void SummaryManager::addComplex(ComplexEntry& c) { +// tabs.add(new Summary(c, this->x(), this->y() +30, this->w(), this->h() - 30)); -} +// } + + diff --git a/src/summarymanager.hpp b/src/summarymanager.hpp index 2df179a..5766c96 100644 --- a/src/summarymanager.hpp +++ b/src/summarymanager.hpp @@ -24,27 +24,27 @@ struct Summary : Fl_Group { Fl_Text_Buffer * s2buff; Fl_Text_Buffer * s2style_buff; - ComplexEntry entry; - Summary(ComplexEntry c, int x, int y, int w, int h); + Summary(int x, int y, int w, int h); + void populate(const ComplexEntry& c); ~Summary(); }; -struct SummaryManager : Fl_Group { - SummaryManager(int x, int y, int w, int h); - Fl_Tabs tabs; - Fl_Multi_Browser * project_items; - Fl_Window * win1; - Fl_Widget * s; +// struct SummaryManager : Fl_Group { +// SummaryManager(int x, int y, int w, int h); +// Fl_Tabs tabs; +// Fl_Multi_Browser * project_items; +// Fl_Window * win1; +// Fl_Widget * s; - std::vector items; +// std::vector items; - void addComplex(ComplexEntry& c); +// void addComplex(ComplexEntry& c); - void addCurrentTabToComplex(); +// void addCurrentTabToComplex(); -}; +// }; #endif