Skip to content

Commit

Permalink
xrECore/Props/WindowLog: fixed multithreaded log gathering
Browse files Browse the repository at this point in the history
Code cleanup
Colours changed
  • Loading branch information
Xottab-DUTY committed Mar 23, 2018
1 parent 335dfd1 commit 10573b1
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 14 deletions.
29 changes: 23 additions & 6 deletions src/editors/xrECore/Core/ELog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,37 @@ XRECORE_API void ELogCallback(void* context, pcstr message)
{
if (0 == message[0])
return;
bool isDialog = ('#' == message[0]) || ((0 != message[1]) && ('#' == message[1]));
MessageType type = ('!' == message[0]) || ((0 != message[1]) && ('!' == message[1])) ? MessageType::Error : MessageType::Information;
if (('!' == message[0]) || ('#' == message[0]))

bool isDialog = false;
MessageType type = MessageType::Information;

switch (message[0])
{
case '!':
type = MessageType::Error;
message++;
if (('!' == message[0]) || ('#' == message[0]))
break;

case '#':
isDialog = true;
type = MessageType::Confirmation;
message++;
break;
}

auto windowLog = safe_cast<WindowLog^>(Form::FromHandle(IntPtr(context)));

if (windowLog)
{
if (isDialog)
windowLog->AddDialogMessage(type, message);
{
auto d = gcnew WindowLog::AddMessageDelegate(windowLog, &WindowLog::AddDialogMessage);
windowLog->Invoke(d, gcnew array<Object^> { (int)type, gcnew String(message) });
}
else
windowLog->AddMessage(type, message);
{
auto d = gcnew WindowLog::AddMessageDelegate(windowLog, &WindowLog::AddMessage);
windowLog->Invoke(d, gcnew array<Object^> { (int)type, gcnew String(message) });
}
}
}
2 changes: 0 additions & 2 deletions src/editors/xrECore/Props/WindowIDE.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,5 @@ void WindowIDE::Initialize()

auto cb = LogCallback(ELogCallback, windowLog->Handle.ToPointer());
SetLogCB(cb);

Log("Priviet");
}
} // namespace XRay::ECore::Props
4 changes: 2 additions & 2 deletions src/editors/xrECore/Props/WindowLog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,11 @@ void WindowLog::AddMessage(MessageType type, System::String^ message)
break;

case MessageType::Error:
newMessage->BackColor = Color::Red;
newMessage->BackColor = Color::Crimson;
break;

case MessageType::Confirmation:
newMessage->BackColor = Color::Green;
newMessage->BackColor = Color::LightGreen;
break;

case MessageType::Custom:
Expand Down
6 changes: 2 additions & 4 deletions src/editors/xrECore/Props/WindowLog.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,15 +55,13 @@ public ref class WindowLog : public WeifenLuo::WinFormsUI::Docking::DockContent

public:
void AddMessage(MessageType type, System::String^ message);
inline void AddMessage(MessageType type, pcstr message) { AddMessage(type, gcnew System::String(message)); }
inline void AddMessage(pcstr message) { AddMessage(MessageType::Custom, gcnew System::String(message)); }
inline void AddMessage(System::String^ message) { AddMessage(MessageType::Custom, message); }

void AddDialogMessage(MessageType type, System::String^ message);
inline void AddDialogMessage(MessageType type, pcstr message) { AddDialogMessage(type, gcnew System::String(message)); }
inline void AddDialogMessage(pcstr message) { AddDialogMessage(MessageType::Custom, gcnew System::String(message)); }
inline void AddDialogMessage(System::String^ message) { AddDialogMessage(MessageType::Custom, message); }

delegate void AddMessageDelegate(MessageType type, System::String^ text);

private: System::Void buttonClose_Click(System::Object^ sender, System::EventArgs^ e);
private: System::Void buttonFlush_Click(System::Object^ sender, System::EventArgs^ e);
private: System::Void buttonClear_Click(System::Object^ sender, System::EventArgs^ e);
Expand Down

0 comments on commit 10573b1

Please sign in to comment.