Strona 1 z 2

Komilacja programu - gtk+

: 23 lutego 2008, 14:04
autor: axlinux
Witam

Zabieram się właśnie za programowanie w GTK+. Tylko nie mam pojęcia co muszę mieć na swoim debianie zainstalowanego. Korzystam z Gnome więc pewnie gtk+ jest. Ale jakim poleceniem mogę skompilować program. ;]

Dziękuje z odpowiedzi ;]

: 23 lutego 2008, 16:36
autor: katnerster
Witam.

Musisz napisać w jakim języku chcesz programować. Pewnie będziesz musiał zainstalować podstawowe biblioteki GTK+ z dopiskiem -devel.

Pozdrawiam

: 23 lutego 2008, 17:08
autor: axlinux
Oczywiście w C++. :P

: 23 lutego 2008, 18:25
autor: katnerster
Ja niestety nie "bawiłem" się w C++.
Co do kompilacji to odsyłam do Wikipedii.
Pozdrawiam.

: 23 lutego 2008, 19:24
autor: giaur
IMHO najlepiej bedzie zainstalowac jakies IDE, polecam Anjute+GLADE, gdzie utwrzysz gotowy projekt i zaprojektoujesz okienka.

A najprosciej, dlubiac calkowicie recznie zeby skompilowac i zlinkowac program piszesz cos takiego:

Kod: Zaznacz cały

gcc -Wall -g program.c -o program `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0`
A tak w ogole to zastanow sie czy chcesz dlubac w GTK i czy nie lepiej uzyc np wxWidgets (wxGTK konkretnie) albo gtkmm (strasznie toporne ale lepsze niz GTK)

: 23 lutego 2008, 21:32
autor: mlyczek
Ogólnie jest tak, że biblioteka do pisania w C nazywa się gtk, a jak się pisze w C++ to już gtkmm, które ma pełną obiektowość, a nie symulowaną GObject tak jak to jest w gtk dla C. Inna sprawa, że podstawowe gtk było napisane w C i dla tego języka przygotowane, jednak nazwy funkcji czasami są długie

Kod: Zaznacz cały

gtk_message_dialog_format_secondary_markup(GTK_MESSAGE_DIALOG(dialog), "[i]Nie można czytać z pliku z bazą danych![/i]");
co spowodowane jest dodawaniem na ich początku gtk_<nazwa widgeta> a dopiero później sama funkcja. W gtkmm już tego nie ma, jest pełna obiektowość i normalnie odwołujemy się do metody danego obiektu przez ->

Co do potrzebnych paczek to do pisania w C potrzebne jest libgtk2.0-dev, powinno pociągnąć zależności, a do C++ libgtkmm-2.4-dev

: 23 lutego 2008, 22:24
autor: giaur
Ogólnie jest tak, że biblioteka do pisania w C nazywa się gtk, a jak się pisze w C++ to już gtkmm
A kto mi zabroni pisac w C++ uzywajac gtk? Moge sam to opakowac w klasy jak zechce.

Co do gtkmm - nie trawie tego. Przez pol (!) godziny szukalem funkcji, ktora by zamykala okno. Czyli: klikne przycisk i zamyka sie okno. Myslalem, ze bedzie to cos w stylu Close, EndModal, Destroy - pomylilem sie, nazwa jakas fikusna (cos z hide from user czy jakos tak). Takich kwiatkow jest wiecej.

Nastepna rzecz na ktorej wymieklem - chcialem umiescic widzeta na obrazku i za cholere mi to sie nie udalo. O ile samo gtk moze byc toporne, bo to tylko C w koncu, to od biblioteki obiektowej wymagam zeby cokolwiek ułatwiała.

Dobrze ze jest jeszcze wxWidgets, bo jest przynajmniej po ludzku zrobione - kazdy kto sprobuje i porowna zgodzi sie ze mna. Trzeba chyba naprawde miec duzo samozaparcie zeby pisac programy w gtkmm.

: 23 lutego 2008, 22:52
autor: mlyczek
giaur pisze:A kto mi zabroni pisac w C++ uzywajac gtk? Moge sam to opakowac w klasy jak zechce.
Nikt Ci nie zabroni, jasne, że możesz tak zrobić, jak ze wszystkim co jest napisane w C.
giaur pisze:Co do gtkmm - nie trawie tego. Przez pol (!) godziny szukalem funkcji, ktora by zamykala okno. Czyli: klikne przycisk i zamyka sie okno. Myslalem, ze bedzie to cos w stylu Close, EndModal, Destroy - pomylilem sie, nazwa jakas fikusna (cos z hide from user czy jakos tak). Takich kwiatkow jest wiecej.
gtkmm jest właśnie takim opakowaniem w klasy, ale przez kogoś zrobione. O wygodzie pisania w tym nie mogę sie wypowiedzieć, bo nigdy tego nie próbowałem. Możliwe, że jest to dosyć uciążliwe. Co do zamykania okna po naciśnięciu przycisku to w C też miałem z tym problem. Najprostsze rozumowanie wygląda tak, żeby po naciśnięciu przycisku wyemitować sygnał "delete_event" dla okna i powinno być ok, ale pojawiały się różne problemy, ale to dyskusja na osobny temat.

: 24 lutego 2008, 00:55
autor: giaur
W GTK i C najprostsza metoda na zamkniecie okna to uzycie gtk_widget_destroy na utworzonym oknie, tak robilem zamykanie dialogów.

W ogole cale to gtk i gtkmm ma jak dla mnie porąbaną składnię i logikę, QT jest juz sporo lepsze no i wspomniane wxWidgets, ktore tez jest swoistym opakowaniem Gtk (wxGTK) lub nawet nie wymaga GTK. Ale faktyczmoe temat zbyt obszerny aby tu o tym pisac.

: 24 lutego 2008, 18:30
autor: mlyczek
giaur pisze:W GTK i C najprostsza metoda na zamkniecie okna to uzycie gtk_widget_destroy na utworzonym oknie, tak robilem zamykanie dialogów.
Przy zamykaniu dialogów tak (tak jest nawet w manualu napisane), ale przy zamykaniu głównego okna z wnetrza jakieś funkcji, albo przy pomocy dodatkowego przycisku to juz jest nie ładna metoda.

axlinux nie napisał nam jeszcze czy udało mu się coś skompilować.