Skip to content
Snippets Groups Projects
Commit c0287e8f authored by Christophe Geuzaine's avatar Christophe Geuzaine
Browse files

reimplemented autoscrolling on/off in message console

parent bb3c9445
Branches
Tags
No related merge requests found
...@@ -452,18 +452,39 @@ void message_cb(Fl_Widget *w, void *data) ...@@ -452,18 +452,39 @@ void message_cb(Fl_Widget *w, void *data)
FlGui::check(); FlGui::check();
} }
static void message_event_cb(Fl_Widget *w, void *data) static void message_menu_scroll_cb(Fl_Widget *w, void *data)
{ {
graphicWindow *g = (graphicWindow*)data; graphicWindow *g = (graphicWindow*)data;
g->setAutoScroll(!g->getAutoScroll());
}
if(Fl::event_button() == 3 || Fl::event_state(FL_CTRL) || Fl::event_clicks()){ static void message_menu_clear_cb(Fl_Widget *w, void *data)
int a = Msg::GetAnswer("Clear or save messages?", 0, {
"Cancel", "Save", "Clear"); graphicWindow *g = (graphicWindow*)data;
if(a == 1){ g->clearMessages();
if(fileChooser(FILE_CHOOSER_CREATE, "Save", "")) }
static void message_menu_save_cb(Fl_Widget *w, void *data)
{
graphicWindow *g = (graphicWindow*)data;
if(fileChooser(FILE_CHOOSER_CREATE, "Save Messages", ""))
g->saveMessages(fileChooserGetName(1).c_str()); g->saveMessages(fileChooserGetName(1).c_str());
} }
else if(a == 2) g->clearMessages();
static void message_browser_cb(Fl_Widget *w, void *data)
{
graphicWindow *g = (graphicWindow*)data;
if(Fl::event_button() == 3 || Fl::event_state(FL_CTRL) || Fl::event_clicks()){
Fl_Menu_Item rclick_menu[] = {
{ g->getAutoScroll() ? "Disable Auto-Scrolling" : "Enable Auto-Scrolling", 0,
message_menu_scroll_cb, g },
{ "Clear Messages", 0, message_menu_clear_cb, g },
{ "Save Messages...", 0, message_menu_save_cb, g },
{ 0 }
};
const Fl_Menu_Item *m = rclick_menu->popup(Fl::event_x(), Fl::event_y(), 0, 0, 0);
if(m) m->do_callback(0, m->user_data());
} }
else else
g->copySelectedMessagesToClipboard(); g->copySelectedMessagesToClipboard();
...@@ -480,7 +501,7 @@ class dummyBox : public Fl_Box { ...@@ -480,7 +501,7 @@ class dummyBox : public Fl_Box {
dummyBox(int x, int y, int w, int h, const char *l=0) : Fl_Box(x, y, w, h, l) {} dummyBox(int x, int y, int w, int h, const char *l=0) : Fl_Box(x, y, w, h, l) {}
}; };
graphicWindow::graphicWindow(bool main, int numTiles) graphicWindow::graphicWindow(bool main, int numTiles) : _autoScrollMessages(true)
{ {
static bool first = true; static bool first = true;
if(first){ if(first){
...@@ -672,7 +693,7 @@ graphicWindow::graphicWindow(bool main, int numTiles) ...@@ -672,7 +693,7 @@ graphicWindow::graphicWindow(bool main, int numTiles)
browser->textfont(FL_COURIER); browser->textfont(FL_COURIER);
browser->textsize(FL_NORMAL_SIZE - 1); browser->textsize(FL_NORMAL_SIZE - 1);
browser->type(FL_MULTI_BROWSER); browser->type(FL_MULTI_BROWSER);
browser->callback(message_event_cb, this); browser->callback(message_browser_cb, this);
browser->has_scrollbar(Fl_Browser_::VERTICAL); browser->has_scrollbar(Fl_Browser_::VERTICAL);
tile->end(); tile->end();
...@@ -806,6 +827,7 @@ void graphicWindow::showMessages() ...@@ -806,6 +827,7 @@ void graphicWindow::showMessages()
if(height > maxh) height = maxh / 2; if(height > maxh) height = maxh / 2;
resizeMessages(height - browser->h()); resizeMessages(height - browser->h());
} }
if(_autoScrollMessages)
browser->bottomline(browser->size()); browser->bottomline(browser->size());
} }
...@@ -818,7 +840,7 @@ void graphicWindow::hideMessages() ...@@ -818,7 +840,7 @@ void graphicWindow::hideMessages()
void graphicWindow::addMessage(const char *msg) void graphicWindow::addMessage(const char *msg)
{ {
browser->add(msg, 0); browser->add(msg, 0);
if(win->shown() && browser->h() >= 10) if(_autoScrollMessages && win->shown() && browser->h() >= 10)
browser->bottomline(browser->size()); browser->bottomline(browser->size());
} }
......
...@@ -20,6 +20,7 @@ class graphicWindow{ ...@@ -20,6 +20,7 @@ class graphicWindow{
private: private:
std::string _title; std::string _title;
int _savedMessageHeight; int _savedMessageHeight;
bool _autoScrollMessages;
public: public:
Fl_Window *win; Fl_Window *win;
Fl_Tile *tile; Fl_Tile *tile;
...@@ -33,6 +34,8 @@ class graphicWindow{ ...@@ -33,6 +34,8 @@ class graphicWindow{
graphicWindow(bool main=true, int numTiles=1); graphicWindow(bool main=true, int numTiles=1);
~graphicWindow(); ~graphicWindow();
void setTitle(std::string str); void setTitle(std::string str);
void setAutoScroll(bool val){ _autoScrollMessages = val; }
bool getAutoScroll(){ return _autoScrollMessages; }
void split(openglWindow *g, char how); void split(openglWindow *g, char how);
void setAnimButtons(int mode); void setAnimButtons(int mode);
void checkAnimButtons(); void checkAnimButtons();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment