Page 1 of 1

лог окно

Posted: Tue Apr 03, 2012 6:39 pm
by Megido
вот есть у меня такая задумка сделать сделать маленькое лог окошко в каком новая строка текста будет вытесянть старую на одну строку выше а та по истечению возможных строк (например \8) будет удалятся.
Простой пример окно чата.

так как я не знаю функций и половины функций WxWidgets то мне нужно узнать какой элемент для этого использовать

Re: лог окно

Posted: Wed Apr 04, 2012 4:54 am
by borr_1
в samples\grid посмотри там точно есть с логом пример и вообще окно лока во многие примеры вставлены. Если вкратце то что-то типа

Code: Select all

 logger = new wxLogTextCtrl( logWin );
 m_logOld = wxLog::SetActiveTarget( logger );
 wxLog::SetTimestamp( NULL );

И потом по событию в нужном месте отправляешь wxLogMessage()
Это если тебе именно log нужен

Re: лог окно

Posted: Wed Apr 04, 2012 4:32 pm
by Megido
сделал я такую штуку, сделал размер поля 100х200

ну и вбиваю текст (двумя способами для надежности)
WriteText(text)
AppendText(text)

в итоге текст всегда добавлятся вдоль

* добавление символа переноса (\n или даже \r\n) добавляет в поле какой то квадратик и не переносит на новую строку

Re: лог окно

Posted: Wed Apr 04, 2012 4:37 pm
by Megido
а все разобрался

нужно было добавить параметр стиля wx.TE_MULTILINE

Re: лог окно

Posted: Wed Apr 04, 2012 6:58 pm
by SteelRat
wxTextCtrl* mLogTxt;
....
wxLogTextCtrl* mLogCtrl;
... конструктор
mLogCtrl = new wxLogTextCtrl( mLogTxt );
delete wxLog::SetActiveTarget( mLogCtrl );
... и деструктор
delete wxLog::SetActiveTarget( NULL );

Весь вывод через wxLogMessage, wxLogError и т.п. Так же туда же можно перенаправить std::cout, туда же добавить wxLogChain и тогда кроме окна весь лог ещё и в файл можно писать и в ещё другие окна. Мощная штука. Никаких AppendText не надо.

Re: лог окно

Posted: Fri Apr 06, 2012 10:29 am
by Megido
SteelRat wrote:wxTextCtrl* mLogTxt;
....
wxLogTextCtrl* mLogCtrl;
... конструктор
mLogCtrl = new wxLogTextCtrl( mLogTxt );
delete wxLog::SetActiveTarget( mLogCtrl );
... и деструктор
delete wxLog::SetActiveTarget( NULL );

Весь вывод через wxLogMessage, wxLogError и т.п. Так же туда же можно перенаправить std::cout, туда же добавить wxLogChain и тогда кроме окна весь лог ещё и в файл можно писать и в ещё другие окна. Мощная штука. Никаких AppendText не надо.


да дейстивительно удобно, и время само ставит

только вот меня теперь один вопрос волнует:
неужели нельзя задать какой то параметр в TxtCtrl чтобы новая строка попадала именно на новую строку, уж очень мне кажется что wx.LogMessage('\n') не является истинно верным решением

Re: лог окно

Posted: Fri Apr 06, 2012 1:17 pm
by borr_1
а так она куда попадает :shock:

Re: лог окно

Posted: Fri Apr 06, 2012 2:00 pm
by Megido
вдоль пишет епт

Re: лог окно

Posted: Sat Apr 07, 2012 7:04 am
by borr_1
не знаю в примерах в wxLogMessage загоняют просто строчку без окончания строки. Но я так понял ты из питона. может нюанс какой.