Komilacja programu - gtk+

Potrzebujesz pomocy z C, C++, perl, python, itp.
axlinux
Posty: 26
Rejestracja: 01 grudnia 2007, 18:47
Lokalizacja: Katowice

Komilacja programu - gtk+

Post 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 ;]
katnerster
Posty: 25
Rejestracja: 30 grudnia 2007, 17:06
Lokalizacja: wwy

Post autor: katnerster »

Witam.

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

Pozdrawiam
axlinux
Posty: 26
Rejestracja: 01 grudnia 2007, 18:47
Lokalizacja: Katowice

Post autor: axlinux »

Oczywiście w C++. :P
katnerster
Posty: 25
Rejestracja: 30 grudnia 2007, 17:06
Lokalizacja: wwy

Post autor: katnerster »

Ja niestety nie "bawiłem" się w C++.
Co do kompilacji to odsyłam do Wikipedii.
Pozdrawiam.
giaur
Member
Posty: 1915
Rejestracja: 25 maja 2007, 22:16

Post 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)
mlyczek
Junior Member
Posty: 979
Rejestracja: 02 sierpnia 2006, 19:17

Post 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
giaur
Member
Posty: 1915
Rejestracja: 25 maja 2007, 22:16

Post 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.
mlyczek
Junior Member
Posty: 979
Rejestracja: 02 sierpnia 2006, 19:17

Post 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.
giaur
Member
Posty: 1915
Rejestracja: 25 maja 2007, 22:16

Post 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.
mlyczek
Junior Member
Posty: 979
Rejestracja: 02 sierpnia 2006, 19:17

Post 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ć.
ODPOWIEDZ