Как найти wxAuiToolBarItem из wxAuiManager?
Я пробую класс wxAuiToolBar в качестве замены существующего wxToolbar.
Моя инициализация работает нормально - я даже могу установить внедренные / векторизованные файлы.png в качестве растровых изображений для элементов, что действительно здорово - но я бы хотел, чтобы пользователь мог указать, какой размер панели инструментов они хочу (16x16, 22x22 или 32x32). Я думаю, что это означает вызов wxAuiToolBarItem.SetBitmap() для каждого элемента панели инструментов, а затем wxToolBar.Realize(), чтобы перерисовать изменения. Поправь меня, если есть лучший способ сделать это!
Например, у меня есть стандартная панель инструментов Файл с новыми кнопками / открыть / сохранить / распечатать. Они добавляются в член wxAuiManager, например:
auiFileToolBar = new wxAuiToolbar(pFrame, ID_AUIFILETOOLBAR, wxDefaultPosition, wxDefaultSize, wxAUI_TB_DEFAULT_STYLE);
auiFileToolBar->AddTool(ID_TBI_FILE_NEW, _("New"), wxNullBitmap, wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString, NULL);
// ... other toolbar items
auiFileToolBar->Realize();
m_AuiManager->AddPane(auiFileToolBar, wxAuiPaneInfo().Name(_T("File")).ToolbarPane().Caption(_T("File")).Layer(10).Top.Gripper(false));
Итак, теперь, когда у меня все это настроено, как мне получить данный ToolBarItem, учитывая член wxAuiManager (m_AuiManager), связанный с фреймом? Или есть лучший способ изменить размеры панелей инструментов?
1 ответ
Хорошо, возможно, это был вопрос из двух частей:
- Как мне получить wxAuiToolBarItem после его создания?
- Какой лучший способ изменить размер панели инструментов после ее создания?
Мне удалось добраться до wxToolBarItem с помощью метода wxAuiToolBar->FindTool(). У меня есть панель инструментов в качестве переменной-члена, что делает доступ довольно простым. Код выглядит примерно так:
wxAuiToolBarItem *tbi;
tbi = pMainFrame->m_AuiToolbar-FindTool(ID_TBI_FILE_NEW);
// do something with the toolbar item
tbi->SetBitmap(random_bitmap_thingy);
Что касается второй части вопроса - вопроса о лучших практиках переключения между большой и маленькой панелью инструментов - я не уверен, что у меня есть ответ. Прямо сейчас у меня есть метод, который вызывает:
pMainFrame->m_AuiToolbar->ClearTools();
и затем вызывает m_AuiToolbar->AddTool() с новыми растровыми изображениями, передаваемыми в качестве параметров методу AddTool (). Это действительно работает, так как я могу без проблем переключаться между маленькими и большими растровыми изображениями. Это лучший способ сделать это? Без понятия.