Есть ли какие-либо средство разработки под линукс (не qt и не gambas) Примерно в стиле qt, но без этих тупых с++ классов. Никакого ооп. Чисто процедурное и модульное. Аналогично winapi. Или это фантастика?
Аналогично винапи нет ничего и, видимо, никогда не будет. Грустно смотреть как GUI-приложения кишат подобным кодом: libGUI=dlopen( "libXXX.so",RTLD_NOW ); if( !libGUI ) libGUI=dlopen( "libXXX.so.2.0.0",RTLD_NOW ); if( !libGUI ) libGUI=dlopen( "libXXX.so.0.1.0",RTLD_NOW ); // ... В топку такую совместимость
Quantum А что, такое обилие несовместимых версий? И кстати, чем вы пользуетесь для создания gui и для (больное место) межпроцессного общения? В принципе я могу подавить в себе классовую ненависть и юзать qt, но эта qt настолько замкнута в себе, что ничего практически невозможно сделать за пределами свей проги. Никаких средств взаимодействия между разными процессами и взаимодействия с системой в целом.
Voodoo А есть IDE для GTK? А то с нуля тяжеловато наверное выучить весь набор процедур, констант и т.п.
rei3er Весь интерфейс межпроцессного общения ограничен классом QProcess, типа запустить стороннее приложение и передать ему параметры, и еще пара убогих возможностей. Если у тебя другая информация, то подскажи, очень интересуют такие вещи, как мютексы, эвенты, shared section'ы, аналоги виндовых SendMessage, SendMessageCallback, GetMessage, PeekMessage, WaitForSingleObject, WaitForMultipleObjects и т.п. В самой системе наверняка есть аналоги, а в QT - нет, ибо это всего лишь gui-библиотека.
cresta Над GTK есть надстройка Glade - если я не ошибаюсь, примерный аналог RC-диалогов. К нему есть дизайнеры в некоторых IDE, и отдельные.
cresta В винде, если мы линкуем экзешник к библиотеке версии N, а юзер потом обновляет её до версии M>N, то приложение в большинстве случаев продолжает спокойно работать. Зато в Линуксе - облом Спасает только динамическая линковка (в смысле, через dlopen) или через свой загрузчик или перелинковывать обьектники каждый раз после обновления. Создание хардлинка с именем старой версии библиотеки, указывающий на новую, не помогает. Например, не так давно я обновил GTK в Ubuntu 5 - половина графических приложений отказались запускаться Аналогичные проблемы возникали с обновлением stdc++, qt и других библиотек. Тем не менее, для GUI я сейчас юзаю GTK. Процессам можно посылать сигналы по PID'у стандартными сишными средствами или даже прямо через system call. Или нужно что-то вроде DDE?
Voodoo Спасибо. Booster Всё верно, дублировать незачем. А вот интерфейс (пусть в виде класса) для доступа к апи операционной системы не помешал бы. Очень даже. Как ни странно, для mac и windows апи есть заголовочные файлы qt_mac.h и qt_windows.h а для linux - не нашел
Quantum В принципе несовместимость версий меня не пугает: нужно переделать виндовую прогу под линукс, кроме этой проги на машине ничего не будет установлено, поэтому беру мандриву и делаю в ней прогу, никаких обновлений и изменений ни в системе, ни в проге не будет. Есть ли русское описание работы с GTK с примерами, как например книга Jasmin Blanchette по QT в переводе Андрея Киселёва? То, что я сегодня нашёл по GTK весьма разрозненно и несистематизировано, да и на английском А есть примеры?
cresta Я надеюсь речь не о кросплатформенности? А так в Linux конечно всё это есть. Во некоторые заголовки. #include <pthread.h> #include <semaphore.h>
Проще юзать Web-Интерфейс. Web-Interface -- это модно, надежно, удобно. Этот интерфейс в сочетании с JavaScript и другими features придаст вашему приложению неповторимый колорит. Изучи WI сейчас и ты поднимешься на новые высоты. WI. Удобство, надежность, масштабность.
Quantum если мы линкуем экзешник к библиотеке версии N, а юзер потом обновляет её до... Помоему в nix-ах так же как и win с разделяемыми библиотеками. Но в nix любят именовать библиотек как LibName-version.so.version.И с этим действительно проблема. Я использовал символьные линки. cresta Есть ли какие-либо средство разработки В качестве IDE использую Anjuta 1.2.4. Как раз заточена под GTK и Glade. Правда я этой "заточкой" почти не пользовался. еще есть Eclipse. Не пользовался но помоему штука мощная.
cresta на английском и несистематизировано? где искал? глянь сюда http://www.gtk.org/documentation.html туторы + API reference. вполне хватает для того чтобы с gtk+ работать. в тех редких случаях когда этого мало, есть сорцы, вполне читабельные между прочим. русских доков, к сожалению, не знаю.
Кстати, раз уж речь пошла о GTK, кто-нибудь знает как можно поменять иконку главного окна в GTK 1.2? В GTK 2+ есть для этого функция, а в 1.2 я что-то ничего подобного не могу найти. tigsid Конечно, нужно использовать символьные линки, но они не всегда помогают, т.к. в новых версиях либ частенько не хватает какого-либо экспорта, который присутствовал в старой версии или определённый экспорт просто переименовывается. Буквально вчера, после обновления библиотек ALSA, ld.so начал орать, что символ asound_ver_1_0_12 (или типа того) не найден в библиотеке libasound.so.1.0.13. Ну, не идиотизм ли это?! Конечно, если пересобрать экзешник с новой либой, то всё начинает работать нормально.