From 1a095123663e9fbb530054605b39ffb84128de18 Mon Sep 17 00:00:00 2001 From: Brendan Hagan Date: Sun, 10 Jul 2022 17:20:49 -0400 Subject: [PATCH 1/2] misc: change clear console icon to align with other icon --- resource/tool/clear_console.png | Bin 384 -> 15050 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/resource/tool/clear_console.png b/resource/tool/clear_console.png index e05eea8eef56e652b639f9268aaf0403e6541faf..3d9b0c52fc0bbb3f4b6c72f0e1f313fa58a49bec 100644 GIT binary patch literal 15050 zcmeI3Z%i9y9LIlUh#MQ*vbjImV!RdSG}_*^r7b;6H>4n#6&XVZOPsr154f!D)!wld zVxn%oG4YjeG|OHs{#jx+Uzs>HF~*ooeWfu`Um2G;6$4Yr5GYW8cURhnQg}AAmrono z-#yRw_x(NhdH&Eh_gYW)lMVHI>H(mkt25e*-&@VU^|ko<;aqSWzc!>h2Xugq+s!`* zoWHOep!q?yuixm89TsIR>6YT!DaD;jrcn(LKA1~O@@d83PANlbs>ONplh2%-8gFqP z^T&i(x=k5YJI6B0(XsA6dF-?tiaQTR>ccq^4U&o>ak*q7rHi>1r{ybRY&P>w&XO3X zTb!+CL9Rd6!?kG{h4Z@uE?Ec!xnRic@dtxV!N)kS;PLZvf^RrH`fzDd$S*jkd{> zPgK$6jG8u7EybC>(kX4kXmL8tLZw&nzLM!up_E=^hZOmol;%Bdfv=VnmrFV6kxarG zT3qIpgpyQJhK_ljs(I;Q&Cv8=ZIzOx?o|upoWx?K+EvG!Oja$e8|`NhK@n-yOucV3 zt?<2yu8m}5rTq-vN@KOVH`KxM6vlfM+cJt|Xqi4u zOGNBd*0Y3=YiqMs75DHlH5J#g`Xgb!GNnA?<34Q^G9i_JdC zKiKT^y8O)n+2!*$NiIpoJC_230dL&jqzJ*d1u+&Q(^ptWHF?C`Ek*129aOjuPt@SFd%J9aUaf-n!J0P^~j5EoF4Y+;J_=r7c%F z#7bwBnPcr-QIgHmEFzm5LP5aGTFb*KWfs%a|2u)UKaswAjqI?JT5ChuR+egY6I~lL zvQkEA9l|wnJA2)BU7l8HALh-|KcOz42)lLp{4A~5mGc=k4>b|j0**_v<^VU(inelP zTiQg*8Z%r}M5KV>B56=#hKq`b6fj&Q z4QkAAQ4x^>hKr;@jTtT~B2vI`ku<0=!$n0z3K%Yu1~q25sE9}b!$s1d#tat~5h-A} zNE+0b;i4iU1q>HSgBmkjR79kJ;UZ~JV}^^0h!ikfBn@iJa8VJF0)~sEL5&$MDk4(A zaFH~qF~dbgL<$%#k_I(qxTuIo0mDVopvDXr6%i?5xJVk*nBk%#A_WW=NrM_QTvSA) zfZ-x(P-BLRiii|2TqF%@ye6*t@}qxB3ZM7O;)8wn6?T7)4+U~^XKxH(Y(K!u=Ky94 z`27dKhyXBt59udm;)cgJzp}Vx z{_DBq)UCPkSpdReUtRuL;lw&VzpWNFPELLM&Bgh5CJKbZLe@2MqM;F{VIFFCPP9)p z|GW>*6&=nx@^JO<^9_4p4t|G8*bVF9dl;Mj!F*Wq)pZLG1vfUDSW2pl+u zS@;d#(|BDo*U{K@0RDj~G#`K+a1FMhWGnm#i|B%a8PyNJz@IP<6HtR=xP~3;u*7sp zu%iyX!~7{6`(Lmfg}-7R;5f`e=rDc#CbXjA$JjNA4Y%;UfbSXnvjvyFz`UoR2XC5d$j##$6h3$?7 zq&W-o`TUK%uP}ks%=i7z?YO@AtM#AONcMI4(*aN@oV{|f?)Y&@!9hS*dw2B86DQC9 E2Up=omH+?% literal 384 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFY3CLkD@$_|Nf5axmU?4eX;u)az z3~`<=jv*Y^RnJ`HJYc}VazVR4oMp<|a! zXHWZLrnuHod8)DD9Um#as_*k8s#)gUnZUVXw|8Pruh*Wi^oKQ5D?Ly0&&g(#KWNJP z)n4cX$R^bi*NBpo#FA92 Date: Sun, 10 Jul 2022 17:21:05 -0400 Subject: [PATCH 2/2] feat: add timestamps to console messages --- CHANGES.md | 1 + src/gui/set/console_panel.cpp | 57 +++++++++++++++++++++++++---------- 2 files changed, 42 insertions(+), 16 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 8970462e..d86949cd 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -16,6 +16,7 @@ Features: * Add ability to change scale (relative to template) of internally stored images. * Impose some rudimentary constraints on the Image Slice Window's initial size. * Merge String capitilization changes by @SoaringMoon. + * Add timestamps to console messages. Bug fixes: * Make viewer image rotate button operate clockwise to match dropdown options. (#9) diff --git a/src/gui/set/console_panel.cpp b/src/gui/set/console_panel.cpp index a9665d7b..50e4d2ea 100644 --- a/src/gui/set/console_panel.cpp +++ b/src/gui/set/console_panel.cpp @@ -25,7 +25,8 @@ DECLARE_POINTER_TYPE(ConsoleMessage); class ConsoleMessage : public IntrusivePtrBase { public: MessageType type; - String text; // string message + String text; // string message + wxDateTime timestamp; Bitmap bitmap; // image message instead of string ScriptValueP value; // other valued message (images? cards?) // location of error messages @@ -38,7 +39,7 @@ public: int bottom() const { return top+height; } ConsoleMessage(MessageType type, String const& text = _(""), bool joined_to_previous = false) - : type(type), text(text), line_number(-1), joined_to_previous(joined_to_previous), top(-1), height(-1) + : type(type), text(text), timestamp(wxDateTime::Now()), line_number(-1), joined_to_previous(joined_to_previous), top(-1), height(-1) {} }; @@ -244,10 +245,12 @@ private: wxAutoBufferedPaintDC dc(this); PrepareDC(dc); draw(dc); - } + } + void draw(wxDC& dc) const { clearDC(dc, wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); - dc.SetFont(*wxNORMAL_FONT); + dc.SetFont(*wxNORMAL_FONT); + FOR_EACH_CONST(msg, messages) { draw(dc, *msg); } @@ -280,16 +283,31 @@ private: // draw background dc.SetPen(*wxTRANSPARENT_PEN); dc.SetBrush(lerp(bg,color, 0.05)); - dc.DrawRectangle(left,top,width,msg.height); - + dc.DrawRectangle(left,top,width,msg.height); + + // draw foreground + dc.SetTextForeground(fg); + + // draw timestamp + dc.DrawText(msg.timestamp.FormatISOTime(), left + TIMESTAMP_PADDING, top + TEXT_PADDING_TOP); + + wxSize timestamp_size = dc.GetTextExtent("55:55:55"); + int timestamp_resolved_width = timestamp_size.GetWidth(); + + left += timestamp_resolved_width; + left += TIMESTAMP_PADDING * 2; + + // draw line right of timestamp + dc.SetPen(lerp(bg, fg, 0.3)); + dc.DrawLine(left, top, left, top + msg.height); + // draw icon if (icons[msg.type].Ok()) { - dc.DrawBitmap(icons[msg.type], left + ICON_PADDING,top + ICON_PADDING); + dc.DrawBitmap(icons[msg.type], left + ICON_PADDING_LEFT,top + ICON_PADDING); } // draw text - dc.SetTextForeground(fg); - int text_left = TEXT_PADDING_LEFT; + int text_left = left + TEXT_PADDING_LEFT; int text_top = top + TEXT_PADDING_TOP; // find line breaks in the text String::const_iterator begin = msg.text.begin(); @@ -313,11 +331,11 @@ private: if (msg.bitmap.Ok()) { dc.DrawBitmap(msg.bitmap, text_left, text_top); text_top += msg.bitmap.GetHeight(); - } - + } + // draw line below item dc.SetPen(lerp(bg,fg, 0.3)); - dc.DrawLine(left, top+msg.height, left+width, top+msg.height); + dc.DrawLine(0, top + msg.height, 0 + width, top + msg.height); } int item_height(wxDC& dc, ConsoleMessage const& msg) const { @@ -338,6 +356,11 @@ private: } if (begin != msg.text.end()) { text_height += dc.GetCharHeight() + TEXT_LINE_SPACING; + } + + // account for the height of a timestamp even if there is no other text content. + if (text_height == 0) { + text_height = dc.GetCharHeight() + TEXT_LINE_SPACING; } // height of bitmap @@ -347,10 +370,12 @@ private: } // --------------------------------------------------- : Layout - - static constexpr int LIST_SPACING = 1; - static constexpr int ICON_PADDING = 3; - static constexpr int TEXT_PADDING_LEFT = ICON_PADDING + 16 + 4; + + static constexpr int LIST_SPACING = 1; + static constexpr int TIMESTAMP_PADDING = 3; + static constexpr int ICON_PADDING = 3; + static constexpr int ICON_PADDING_LEFT = TIMESTAMP_PADDING + 3; + static constexpr int TEXT_PADDING_LEFT = ICON_PADDING_LEFT + 16 + 4; static constexpr int TEXT_PADDING_RIGHT = 4; static constexpr int TEXT_PADDING_TOP = 4; static constexpr int TEXT_PADDING_BOTTOM = 2;