Библиотека сайта rus-linux.net
Программирование с использованием gtkmm 3. Изменения в gtkmm 3
Оригинал: Programming with gtkmm 3
Автор(ы): Murray Cumming, Bernhard Rieder, Jonathon Jongsma, Ole Laursen, Marko Anastasov, Daniel Elstner, Chris Vine, David King, Pedro Ferreira, Kjell Ahlstedt
Перевод: А.Панин
4. Изменения в gtkmm 3
gtkmm-3.0 является новой версией API gtkmm, которая может быть установлена параллельно с более старой версией API gtkmm-2.4. Последней версией API gtkmm-2.4 была версия gtkmm 2.24. В gtkmm версии 3 не содержится фундаментальных отличий от gtkmm версии 2, но присутствует несколько небольших изменений, которые было бы невозможно реализовать с сохранением бинарной совместимости. В том случае, если вы никогда не использовали API gtkmm-2.4, вы можете смело проигнорировать оставшуюся часть данной главы.
Библиотека с реализацией gtkmm 3 носит имя libgtkmm-3.0 вместо libgtkmm-2.4 и ее заголовочные файлы располагаются в директории с соответствующим номером версии, поэтому при работе с инструментом pkg-config должно использоваться название программного компонента gtkmm-3.0 вместо gtkmm-2.4.
Gtk::AppChooser,Gtk::AppChooserButton,Gtk::AppChooserDialogпозволяют пользователю выбрать установленное приложение для открытия файла с данными определенного типа.Gtk::Gridпредставляет новый контейнерный виджет, который в конечном счете заменит виджетGtk::Box. Данный контейнерный виджет выравнивает дочерние виджеты в соответствии с параметрами этих виджетов, а не в соответствии с собственными параметрами размещения.- Виджет, представленный классом
Gtk::Switch, позволяет демонстрировать состояние включено/выключено более четко, чем виджет, представленный классом,Gtk::CheckBox. Он может быть полезен, к примеру, в том случае, когда у пользователей есть возможность активации какого-либо аппаратного обеспечения.
- Класс
Gtk::CellLayout, используемый классамиGtk::IconView,Gtk::TreeView::ColumnиGtk::ComboBoxтеперь имеет подклассGtk::CellArea, который может использоваться для более точной установки параметров размещения и выравнивания виджетов, осуществляющих прорисовку ячеек (представленных классомGtk::CellRenderers). - Класс
Gtk::ComboBoxтеперь наследуется от классаGtk::CellLayout, что позволяет проще осуществлять размещение и выравнивание виджетов, осуществляющих прорисовку элементов меню (также представленных классомGtk::CellRenderer). - Экземпляры классов
Gtk::Adjustment,Gtk::IconSetиGtk::Cursorтеперь используются посредством указателяGlib::RefPtr. - Классы
Gtk::Box,Gtk::ButtonBox,Gtk::IconView,Gtk::Paned,Gtk::ProgressBar,Gtk::ScrollbarиGtk::Separatorтеперь наследуются от классаGtk::Orientable, что позволяет указывать ориентацию соответствующих виджетов (вертикальную или горизонтальную) без необходимости использования такого дочернего класса, какGtk::HBox. - Классы виджетов
Gtk::IconView,Gtk::TextView,Gtk::TreeView, а также другие классы виджетов теперь наследуются от классаGtk:Scrollableвместо предоставления таких собственных методов, какget_adjustment()и собственного сигналаset_scroll_adjustments. - Классы
Gtk::StyleиGtk::Rcбыли удалены и заменены на классыGtk::StyleContext, а также такие дочерние классы классаGtk::StyleProvider, какGtk::CssProvider. - Событие
Widget::on_expose_event()было заменено на событиеWidget::on_draw(), которое предусматривает работу с программным компонентом cairomm для рисования путем использования предоставляемого контекстаCairo::Contextбез необходимости вызова методаCairo::Context::clip(). - Класс
Gdk::RGBAзаменил классGdk::Color, причем был добавлен альфа-компонент для указания степени прозрачности. КлассGdk::Colormapбыл удален вместе с неудачным механизмом резервирования цветов. - Классы
Gdk::PixmapиGdk::Bitmapбыли удалены; на их замену пришел классGdk::Pixbuf. - Класс
Gdk::Drawableбыл удален; его методы были перемещены в классGdk::Window. - В настоящий момент в нескольких методах используется класс
std::vectorвместо промежуточных классов*Handleдля реализации более прозрачного API.
Все API, помеченные как устаревшие, были удалены из gtkmm 3.0, причем в будущем список устаревших классов также будет расширяться.
На первом шаге процесса портирования вашего исходного кода для работы с gtkmm-3.0 вам, вероятнее всего, следует убедиться в том, что ваше приложение собирается с отключенной поддержкой устаревших API в gtkmm-2.4 путем использования такого макроса, как GTK_DISABLE_DEPRECATED. Существуют некоторые специфичные макросы системы autotools, которые могут помочь в этом случае, причем достаточно лишь установить их при необходимости в процессе сборки приложения. Обратитесь к странице wiki о портировании приложений для работы с gtkmm 3 для получения более подробной информации.
Следующий раздел : 5. Виджеты кнопок.
