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
а так она куда попадает
Re: лог окно
Posted: Fri Apr 06, 2012 2:00 pm
by Megido
вдоль пишет епт
Re: лог окно
Posted: Sat Apr 07, 2012 7:04 am
by borr_1
не знаю в примерах в wxLogMessage загоняют просто строчку без окончания строки. Но я так понял ты из питона. может нюанс какой.