0. В качестве преамбулы
Видимая легкость классового подхода в ООП меня не устраивает. Да и программы, которые я намерен делать не столь грандиозны, чтобы переходить к созданию своих классов. А в качестве "несвоих" меня устраивают уже имеющиеся, грамотно встроенные в систему вместе с библиотеками GTK+ (тоже системными по сути) классы окон, виджетов и прочее. То что нормально воспринимают компилятор gcc и иже с ним отладчик и линкер. Обсуждать и размазывать сопли типа ООП -- неООП категорически не намерен - для этого уже предостаточно базаров на самых разных форумах, от "домохозяек" до "жрецов высшего посвящения в nix".
1. Среда создания программ
Большинство инструментов связано с объектно-ориентированным программированием и поэтому рассматривается, как правило C++. Сред разработки для C++ в том числе с API более чем ...
Для программ с использованим в качестве основы так называемого plain-C (а ведь Unix-Linux созданы и расширяются именно на СИ без ООП) выбор инструментов невелик (но и не мал): Code::Blocks IDE, CodeLite, Anjuta, Glade [FIXME]
2. Справочные документы, программы
Devhelp - замечательная справочная система для GTK+ 2.x (и не только), конкурирующая по емкости с небезизвестной MSDN. В составе Devhelp (помимо многого другого) есть: GLib Reference Manual, GTK+ Reference Manual, GObject Reference Manual, GDK Reference Manual, GTK+ 2.0 Tutorial, Anjuta Developers Reference Manual, Glade User Interface Designer Reference Manual, GTK+ FAQ и даже примеры программ. Devhelp содержит описание всех элементов GTK+. К слову сказать Code::Blocks имеет интеграцию с Devhelp, что позволяет из среды программирования просматривать описания и конструкции различных элементов GTK+
3. Примеры программирования
В сети можно найти немало примеров-программ написанных на "чистом" СИ. Но подавляющее число из них это консольный и окннный варианты вывода строки "Hello World!". Встречаются примеры, создающие окно из 2-3-4 элементов (меню, или инструментальная панель, текстовая строка label, кнопка button, строка редактируемого текста text_entry). Но меню имеет, как правило 3 пункта - File-open, Exit и About - то есть по ним вызываются стандартные встроенные диалоговые окна GTK+, а кнопка чаще всего дублирует системную [x]. Что делать дальше, отталкиваясь от таких примеров? Как например правильно создать и наполнить содержанием элемент управления combo-box? А затем указать программе методы взаимодействия других элементов и функций с элементом combo-box?
Нет в примерах (или я не нашел (?)) даже намеков на создание программы с двумя, тремя и более окнами ПОЛЬЗОВАТЕЛЯ. И опять же, как эти окна управляются программой в работе и взаимодействуют между собой? Как создать программу, которая может немного больше, чем проблямкать "Всем привет!", но без панели меню, или инструментальной панели (тяжеловесны они при видимой легкости создания - подозреваю я)?
Еще раз подчеркну: видимая легкость классового подхода в ООП меня не устраивает, поэтому смотри 4.
4. Программа-пример gtk4 (GTK+ more windows without menu-bar)
На ОС Linux (ubuntu) я перешел совсем недавно, точнее сказать перехожу. В ОС Windows я немного программирую на СИ используя для этого Pelles-C (plain C). Естественно возник вопрос: что есть для Линукс аналогичное уже освоенному инструментарию? В результате выбраны: редактор gedit, Code::Blocks IDE и справочная система Devhelp.
Сначала почитал http://linuxforum.ru/viewtopic.php?id=8328&p=2 и http://linuxforum.ru/viewtopic.php?id=2061
Затем написал вопрос http://linuxforum.ru/viewtopic.php?id=15759
И начал таки писать строчку за строчкой. Первая программа - консольная для работы через COM-port (RS-232) с приемником/навигатором Garmin по его бинарному протоколу написана в редакторе gedit.
Вопросы по окошкам и главное по их взаимодействию друг-с-другом задавать на форуме уже не отваживаюсь.
При этом начинаю понимать важность в nix такого компонента системы как terminal. Но, поскольку до уровня просветленных жрецов nix я не дорос (да и не стремлюсь к этому), то программа работающая ТОЛЬКО через командную стоку терминала не совсем отвечает поставленной задаче. А в задаче то, что требует представления данных в пресловутых "окошечках" с "кнопочками". Произошел переход в Code::Blocks IDE (не смог одолеть Анюту по причине очень скудной документации и все тех же примеров с окончанием на "Hello вам всем").
Программа gtk4 написана полностью "врукопашную" для того, чтобы понять, как создаются и взаимодействуют элемены графического интерфейса. Чтобы понять, как уйти от некоторых "стандартов" окна, которые мне не нужны в данной программе.
Программа создает окна:
main - главное окно с кнопками, заменяющими меню (конечное назначение программы - наладонник, а там иконки меню слишком мелкие и можно промахнуться), а также со строкой статус-бар;
files - встроенное диалоговое окно для открытия файла, куда же без него;
window1 - 2 кнопки (одна закрывает окно, другая - программу), 2 метки label, строка текста с пользовательскими цветами фона и текста, строка статус-бара в которую выводится содержание строки текста;
window2 - то же что и window1 с некоторыми вариациями;
sample dialog - стандартное диалоговое окно message-box с программным включением в него виджета чек-бокс;
sky - повторение sample dialog, но добавлены еще label и combo-box с наполнением в 9 строк;
about - стандартный диалог "ебаут" - до кучи (хотя и в него программист может много чего напихать, если надо), кнопка "ЗАКРЫТЬ" почему-то не работает, только крестик [x].
В функциях для sample dialog и about предусмотрены вызовы других функций программы. В текст исходника вставил, сколько мог, комментарии на кривом аглицком, уж не обессудьте.
Выкладываю программу и ее исходник для тех, кто может-быть также ищет решения для "чистого/голого" СИ и пока не нашел его. Если будут вопросы типа "а как мне ...", то скорее всего ответить не смогу, бо сам только начал осваивать, если только местные "жрецы" сподобятся.
"...как советовать, так все чатлане..." (к/ф Кин-Дза-Дза).
Проект в Code::Blocks целиком, главное в нем файл main.c (порадовал меня размер исполняемого файла 17.6 кБ release-версия).
Файл gtk4.tar.gz номер: 5516514, размер: 55 Кб, размещён: 2011-08-29 21:55
ссылка на файл: http://webfile.ru/5516514
Описание: GTK+ plain-C programming
Пароль: gtk
Специально разложил все 7 окошек программы на рабочем столе
Файл gtk4.jpg номер: 5516531, размер: 121 Кб, размещён: 2011-08-29 22:00
ссылка на файл: http://webfile.ru/5516531
Описание: gtk4_screenshots
Добавление 19 янв. 2012г.
------------------------------
Прошу прощения, файл по предыдущему адресу давно затерт.
Вот новый адрес хранения, надеюсь более долговечный:
http://www.mediafire.com/?ah0h1mtg9rcj549
файл gtk4.tar.gz - 123 Кб, внутри файла лежит также скриншот.