лог окно

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
Megido
Knows some wx things
Knows some wx things
Posts: 32
Joined: Fri Mar 16, 2012 11:16 am

лог окно

Post by Megido » Tue Apr 03, 2012 6:39 pm

вот есть у меня такая задумка сделать сделать маленькое лог окошко в каком новая строка текста будет вытесянть старую на одну строку выше а та по истечению возможных строк (например \8) будет удалятся.
Простой пример окно чата.

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

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Re: лог окно

Post by borr_1 » Wed Apr 04, 2012 4:54 am

в samples\grid посмотри там точно есть с логом пример и вообще окно лока во многие примеры вставлены. Если вкратце то что-то типа

Code: Select all

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

И потом по событию в нужном месте отправляешь wxLogMessage()
Это если тебе именно log нужен
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse

Megido
Knows some wx things
Knows some wx things
Posts: 32
Joined: Fri Mar 16, 2012 11:16 am

Re: лог окно

Post by Megido » Wed Apr 04, 2012 4:32 pm

сделал я такую штуку, сделал размер поля 100х200

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

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

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

Megido
Knows some wx things
Knows some wx things
Posts: 32
Joined: Fri Mar 16, 2012 11:16 am

Re: лог окно

Post by Megido » Wed Apr 04, 2012 4:37 pm

а все разобрался

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

SteelRat
Experienced Solver
Experienced Solver
Posts: 50
Joined: Tue Sep 08, 2009 4:42 pm
Location: Russia, Obninsk

Re: лог окно

Post by SteelRat » Wed Apr 04, 2012 6:58 pm

wxTextCtrl* mLogTxt;
....
wxLogTextCtrl* mLogCtrl;
... конструктор
mLogCtrl = new wxLogTextCtrl( mLogTxt );
delete wxLog::SetActiveTarget( mLogCtrl );
... и деструктор
delete wxLog::SetActiveTarget( NULL );

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

Megido
Knows some wx things
Knows some wx things
Posts: 32
Joined: Fri Mar 16, 2012 11:16 am

Re: лог окно

Post by Megido » Fri Apr 06, 2012 10:29 am

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') не является истинно верным решением

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Re: лог окно

Post by borr_1 » Fri Apr 06, 2012 1:17 pm

а так она куда попадает :shock:
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse

Megido
Knows some wx things
Knows some wx things
Posts: 32
Joined: Fri Mar 16, 2012 11:16 am

Re: лог окно

Post by Megido » Fri Apr 06, 2012 2:00 pm

вдоль пишет епт

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Re: лог окно

Post by borr_1 » Sat Apr 07, 2012 7:04 am

не знаю в примерах в wxLogMessage загоняют просто строчку без окончания строки. Но я так понял ты из питона. может нюанс какой.
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse

Post Reply