wxSearchCtrl или может я чего-то не понимаю?

September 11th, 2008 Begemot

Писец какой-то, нужно реализовать фильтрацию\поиск в приложении, вспомнаю что в wxWidgets есть специальный компонент для поиска – красивенький такой.

image

Ура думаю, сейчас быстро заюзаю, и напишу в блог в категорию ‘+1’. Как же заюзал, вообщем сегодня будем пороть  wxSearchCtrl.

  1. Логику человека который догадался разместить кнопку начала поиска слева (!), а очистки – справа мне наверное никогда не понять.
  2. Enter по умолчанию не забинден на кнопку начала поиска, а просто служит для навигации в диалоге, переход на следующий контрол
  3. Что бы иметь возможность отлавливать Enter, надо поставить флаг wxTE_PROCESS_ENTER. Но если создать контрол с этим флагом, то вдруг перестает работать tab(?)…
  4. Connect(wxID_ANY, xEVT_KEY_DOWN, wxKeyEventHandler(MainFrame::OnKeyDown), (wxObject*)NULL,

    this); для этого контрола не работает. А мне обязательно надо…

Если кто разбирался\работал\знает – я ничего не пропустил, может можно добится того чего я хочу?

Вот не могу понять, это действительно все так плохо сделано, или у меня какие-то извращенно завышенные желания. Может мне тестером пойти работать 🙂

p.s. Кто знает как отловить факт прихода\ухода фокуса для любого контрола в окне?


Запрет на запуск второго экземпляра, с коммуникацией между ними

April 7th, 2008 Begemot

Изолью душу:) Решил добавить сабж, думал все просто: копи\пайст с книжки, разобраться, подправить под себя, потестить – на час работы, максимум два. Растянулось на целый день:)

Скопировал, разобрался, подправил, тестю – все ок. Обрадовался, собрал себе релиз для внутреннего пользования -  и тут засада. В релизе, при запуске второй копии, падает сервер. Дебаг, понятное дело затруднен… В итоге нашел падает на строчке.

return m_connection;

В wxConnectionBase *stServer::OnAcceptConnection(const wxString& topic). Вернее конечно не на ней, а после нее в дебрях библиотеки. Начал ковырятся, дошел до того что поведение программы, в смысле место падения, меняется в зависимости от того где определен конструктор в заголовочном файле или в cpp :).  В итоге решил вообще отказатся от использования соединений для общения, просто если приходит от клиента попытка установить соединение, ему отказывать и серверу появлятся на экране. Так работало.

Но тут осенило, что трабла в то что, где-то что-то портило память – поэтому такое, более чем странное поведение программы. Решил рыть до конца. В итоге заметил, что в декларациях классов скопированных с книжки, после определения функций в пределах h файла ‘;’ то есть, то нет. Насколько я знаю это не критично, можно ставить можно нет. Решил поставить везде ‘;’ и чудо свершилось… с надеждой в душе, убрал их назад в небытие, но не помогло – программа все равно не падала. Вот и как это объяснить?

Posted in Uncategorized | Tags:
2 Comments (but I need more)»


Человеческая реализация Find&Replace для wxTextCtrl

December 25th, 2007 Begemot

Мда _человеческая_ реализация Find&Replace для wxTextCtrl требует мозгов, почти рабочий день и кучу тестирования. Интересно почему не добавят такую возможность к стандартному контролу?

Posted in Uncategorized | Tags:
Comments Off on Человеческая реализация Find&Replace для wxTextCtrl


wxIconizeEvent и wxMaximizeEvent

December 19th, 2007 Begemot

Не радует меня система сообщений в wxWidgets, приложение получает wxIconizeEvent и wxMaximizeEvent уже постфактум. Ни запретить действие, ни выполнить свой код перед тем как окно будет свернуто\развернуто – нельзя.

Не смотря на то что в документации написано
An event being sent when the frame is maximized or restored.

и

An event being sent when the frame is iconized (minimized) or restored.

Приходит только после максимизации\минимизации. При возвращении к нормальным размерам – неприходит. Под маком вроде вообще не должно приходить, так что пытатся его использовать наверное не стоит – хоть мне приходится.

Posted in Oбщее | Tags: , ,
Comments Off on wxIconizeEvent и wxMaximizeEvent