diff --git a/src/gui/panel/infobox-panel.cpp b/src/gui/panel/infobox-panel.cpp
index 3d9668ace..8e4aa66dd 100644
--- a/src/gui/panel/infobox-panel.cpp
+++ b/src/gui/panel/infobox-panel.cpp
@@ -28,10 +28,7 @@
#include "gui/gtk-base.hpp"
#include "gui/panel/infobox-panel.hpp"
#include "gui/widget/error-log-display.hpp"
-#include "lib/format-string.hpp"
-using util::_Fmt;
-using Glib::ustring;
namespace gui {
namespace panel{
@@ -43,8 +40,8 @@ namespace panel{
: Panel(panelManager, dockItem, getTitle(), getStockID())
, twoParts_{Gtk::ORIENTATION_VERTICAL}
, buttons_{}
- , frame_{"UI Integration Experiments"}
- , logExpander_{"Error Log"}
+ , frame_{_("System Information")}
+ , logExpander_{_("Error Log")}
, theLog_{}
{
twoParts_.pack_start(frame_);
@@ -52,20 +49,41 @@ namespace panel{
buttons_.set_layout (Gtk::BUTTONBOX_START);
- // buttons to trigger experiments
- button_1_.set_label ("_bang");
- button_1_.set_use_underline();
- button_1_.set_tooltip_markup ("Experiment 1:\ntrigger Proc-GUI roundtrip");
- button_1_.signal_clicked().connect(
- mem_fun(*this, &InfoBoxPanel::experiment_1));
- buttons_.add (button_1_);
+ // buttons to control the error log
+ buttonClear_.set_label (_("_clear Log"));
+ buttonClear_.set_use_underline();
+ buttonClear_.set_tooltip_markup (_("Discard all contents of the error log."));
+ buttonClear_.signal_clicked().connect(
+ [this](){ if (theLog_) theLog_->clearAll(); });
+ buttonClearErr_.set_label (_("_Error OK"));
+ buttonClearErr_.set_use_underline();
+ buttonClearErr_.set_tooltip_markup (_("Clear the error state and turn errors in to information entries."));
+ buttonClearErr_.signal_clicked().connect(
+ [this](){ if (theLog_) theLog_->turnError_into_InfoMsg(); });
+ buttonClearInfo_.set_label (_("drop _Info"));
+ buttonClearInfo_.set_use_underline();
+ buttonClearInfo_.set_tooltip_markup (_("Discard all mere info message, retain error entries only."));
+ buttonClearInfo_.signal_clicked().connect(
+ [this](){ if (theLog_) theLog_->clearInfoMsg(); });
+
+ buttons_.add (buttonClear_);
+ buttons_.add (buttonClearErr_);
+ buttons_.add (buttonClearInfo_);
//(End)buttons...
// show initial configuration....
this->add (twoParts_);
this->show_all();
+
+ // schedule state update to hide the error related buttons
+ // after the UI is actually mapped to screen.
+ Glib::signal_idle()
+ .connect_once ( sigc::bind(
+ sigc::mem_fun(*this, &InfoBoxPanel::reflect_LogErrorState), false
+ ));
}
+
const char*
InfoBoxPanel::getTitle()
{
@@ -104,20 +122,20 @@ namespace panel{
frame_.set_border_width (5);
frame_.add (logExpander_);
frame_.show_all();
+
+ theLog_->signalErrorChanged().connect(
+ mem_fun(*this, &InfoBoxPanel::reflect_LogErrorState));
}
return *theLog_;
}
void
- InfoBoxPanel::experiment_1()
+ InfoBoxPanel::reflect_LogErrorState (bool isError)
{
- frame_.set_label("Experiment 1... BANG");
-
- static uint bangNo{0};
- static _Fmt msgTemplate{"Bang #%d\n"};
-
- getLog().addError (msgTemplate % ++bangNo);
+ buttonClearErr_.set_visible (isError);
+ buttonClearInfo_.set_visible (isError);
+ INFO (gui, "Error = %d", isError);
}
diff --git a/src/gui/panel/infobox-panel.hpp b/src/gui/panel/infobox-panel.hpp
index e000252a1..b7e0907c5 100644
--- a/src/gui/panel/infobox-panel.hpp
+++ b/src/gui/panel/infobox-panel.hpp
@@ -66,13 +66,13 @@ namespace panel{
private:
Gtk::Box twoParts_;
Gtk::ButtonBox buttons_;
- Gtk::Button button_1_;
+ Gtk::Button buttonClear_, buttonClearInfo_, buttonClearErr_;
Gtk::Frame frame_;
Gtk::Expander logExpander_;
std::unique_ptr theLog_;
- void experiment_1();
+ void reflect_LogErrorState (bool);
};
diff --git a/src/gui/widget/error-log-display.hpp b/src/gui/widget/error-log-display.hpp
index d33f87aa8..358c9e1ea 100644
--- a/src/gui/widget/error-log-display.hpp
+++ b/src/gui/widget/error-log-display.hpp
@@ -66,6 +66,7 @@
#include "include/gui-notification-facade.h"
#include "lib/format-string.hpp"
#include "lib/symbol.hpp"
+#include "lib/util.hpp"
#include
#include
@@ -75,6 +76,7 @@
namespace gui {
namespace widget {
+ using util::max;
using util::_Fmt;
using lib::Literal;
using std::make_pair;
@@ -164,14 +166,14 @@ namespace widget {
bool shallNotify = not errorMarks_.empty();
errorMarks_.clear();
- size_t lineCnt = textLog_.get_buffer()->get_line_count();
+ size_t lineCnt = max (0, textLog_.get_buffer()->get_line_count() - 1);
string placeholder;
if (lineCnt > 0)
placeholder = _Fmt{_("───════ %d preceding lines removed ════───\n")} % lineCnt;
textLog_.get_buffer()->set_text (placeholder); // discard existing content
if (shallNotify)
- errorChangedSignal_.emit (true);
+ errorChangedSignal_.emit (false);
}
@@ -267,7 +269,7 @@ namespace widget {
errorMarks_.clear();
if (shallNotify)
- errorChangedSignal_.emit (true);
+ errorChangedSignal_.emit (false);
}
diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm
index 1285bcd45..723417fae 100644
--- a/wiki/thinkPad.ichthyo.mm
+++ b/wiki/thinkPad.ichthyo.mm
@@ -1832,9 +1832,9 @@
-
-
-
+
+
+
@@ -2070,8 +2070,8 @@
-
-
+
+
@@ -2109,21 +2109,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -2207,7 +2192,8 @@
-
+
+
@@ -2230,26 +2216,30 @@
-
-
+
+
+
+
+
-
-
-
-
+
+
+
+
+
-
+
-
+
@@ -2264,7 +2254,7 @@
-
+
@@ -2274,7 +2264,7 @@
-
+
@@ -2417,7 +2407,7 @@
-
+
@@ -2484,9 +2474,24 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2496,13 +2501,16 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
@@ -2583,7 +2591,7 @@
-
+
@@ -2836,7 +2844,7 @@
-
+
@@ -2881,7 +2889,7 @@
-
+
@@ -2890,13 +2898,14 @@
-
-
+
+
+
-
+
@@ -3006,9 +3015,9 @@
-
+
-
+
@@ -19484,7 +19493,7 @@
-
+