GTKmm Tutorial Teil 1



  • evilissimo schrieb:

    Hi,

    Ursprünglich wollte ich es übersetzen. Ich verwende auch zum Teil das GTKmm Tutorial als Vorlage aber es fließen auch eigene Eindrücke in das Tutorial mit ein. Ausserdem wird es nicht ganz so streng gegliedert sein.

    Aber momentan finde ich die Zeit und ( wenn ich mal Zeit habe ) die Lust, um daran weiter zuarbeiten, nicht.

    Ich hoffe ich kann mich demnächst mal dazu aufraffen weiter zumachen 😉

    BR

    evilissimo



  • Hi,
    echt klasse Artikel 🙂

    Ich hab da eine Frage: Ich wollte nun auch GTKmm mit Visual C++ 2002 nutzen um nicht z.B. Server mit Visual C++ 2002 und Client mit Dev C++ kompilieren zu müssen fragen, ob hier jemand Erfahrung mit Visual C++ 2002 hat und, ob das ohne Probleme läuft? Wollte nicht wieder Tagelang fummeln um dann festzustellen, dass ichs wieder nicht installiert kriege.
    Und noch eine Frage: Gibt es einen Fenster Designer oder muss alles per Code geregelt werden? Sorry, falls das in den folgenden Teilen schon erklärt wurde, falls es sowas gibt, aber ich wollte bevor ich da richtig einsteige erst Oben genanntens beantwortet haben.

    Ansonsten weiter so 😃
    Übrigens find ich das die Bildchen der Fenster Mut machen und Motivieren, prima Sache 🙂

    Gruß Patrick



  • Hallo,

    Kann es sein, dass du Downloads auf deiner Seite deaktiviert hast? Ich kann nichts runterladen. Ich kriege werde zur index.php weitergeleitet.

    MFG winexec*



  • winexec* schrieb:

    Kann es sein, dass du Downloads auf deiner Seite deaktiviert hast? Ich kann nichts runterladen. Ich kriege werde zur index.php weitergeleitet.

    ja, das problemchen hatte ich gestern auch. 🙂 wenn du zum beispiel den template installer herunterladen willst musst du den link:
    http://www.evilissimo.net/files/downloads/dcgti.zip
    in:
    http://blog.evilissimo.net/files/downloads/dcgti.zip
    ändern, dann gehts.

    ciao!



  • hallo!

    beim ausführen des templateinstallers bekam ich erst die fehlermeldung, dass ich die variabble PKG_CONFIG_PATH exportieren soll, weil er die datei "gtkmm-2.4.pc" nicht gefunden hat. der pfad lautet nun: C:\Programme\GTK\lib\pkgconfig. scheint also funktioniert zu haben, da nun eine andere fehlermeldung kommt. nun sucht der installer nach der datei "libpng12.pc". das dumme ist nur: ich habe eine libpng.pc und eine libpng13.pc - nur keine libpng12.pc 😮
    ein umbenennen der datei libpng.pc in libpng12.pc endete damit, dass der installer das template vernünftig installiert hat - allerdings bekomme ich nun vom compiler ohne ende fehler. der erste hat etwas mit der cairo.h zu tun. wenn ich das richtig sehe, wird es wohl an meiner copy/rename aktion mit der datei liegen.

    wo bekomme ich die datei nun her? bzw warum habe ich andere, als ich haben sollte ? 😕

    winxp pro
    dev-cpp 4.9.9.2
    gtk-win32-devel-2.8.18-rc1
    gtkmm-devel-2.8.8-2

    wenn ich zum beispiel den code aus dem tutorial(projekt wurde mit dem template erstellt):

    #include <gtkmm/main.h>
    #include <gtkmm/window.h>
    
    int main(int argc, char *argv[])
    {
         Gtk::Main main_obj(argc, argv);
         Gtk::Window window_obj;
         main_obj.run(window_obj);
         return 0;
    }
    

    compiliere, bekomme ich diese meldungen von devcpp:

    30 C:\Programme\GTK\include\gtk-2.0\gdk\gdkcairo.h:25, from C:\Programme\GTK\include\gtk-2.0\gdk\gdk.h In file included from C:/Programme/GTK/include/gtk-2.0/gdk/gdkcairo.h:25, from C:/Programme/GTK/include/gtk-2.0/gdk/gdk.h
    31 C:\Programme\GTK\include\gtk-2.0\gdk\gdk.h:30, from C:\Programme\GTK\include\gtk-2.0\gtk\gtkmain.h from C:/Programme/GTK/include/gtk-2.0/gdk/gdk.h:30, from C:/Programme/GTK/include/gtk-2.0/gtk/gtkmain.h
    31 C:\Programme\GTK\include\gtk-2.0\gtk\gtkmain.h:31, from C:\Programme\GTK\include\gtkmm-2.4\gtkmm\main.h from C:/Programme/GTK/include/gtk-2.0/gtk/gtkmain.h:31, from C:/Programme/GTK/include/gtkmm-2.4/gtkmm/main.h
    1 C:\Programme\GTK\include\gtkmm-2.4\gtkmm\main.h:31, from main.cpp from C:/Programme/GTK/include/gtkmm-2.4/gtkmm/main.h:31, from main.cpp
    1 D:\Area51\GTKmm\low\main.cpp from main.cpp
    66 C:\Programme\GTK\include\pango-1.0\pango\pangocairo.h expected ,' or...' before '' token
    66 C:\Programme\GTK\include\pango-1.0\pango\pangocairo.h ISO C++ forbids declaration of cairo\_font\_options_t' with no type 67 C:\\Programme\\GTK\\include\\pango-1.0\\pango\\pangocairo.h expected init-declarator before '*' token 67 C:\\Programme\\GTK\\include\\pango-1.0\\pango\\pangocairo.h expected,' or ;' before '*' token 31 C:\\Programme\\GTK\\include\\gtk-2.0\\gdk\\gdk.h:50, from C:\\Programme\\GTK\\include\\gtk-2.0\\gtk\\gtkmain.h In file included from C:/Programme/GTK/include/gtk-2.0/gdk/gdk.h:50, from C:/Programme/GTK/include/gtk-2.0/gtk/gtkmain.h 31 C:\\Programme\\GTK\\include\\gtk-2.0\\gtk\\gtkmain.h:31, from C:\\Programme\\GTK\\include\\gtkmm-2.4\\gtkmm\\main.h from C:/Programme/GTK/include/gtk-2.0/gtk/gtkmain.h:31, from C:/Programme/GTK/include/gtkmm-2.4/gtkmm/main.h 1 C:\\Programme\\GTK\\include\\gtkmm-2.4\\gtkmm\\main.h:31, from main.cpp from C:/Programme/GTK/include/gtkmm-2.4/gtkmm/main.h:31, from main.cpp 51 C:\\Programme\\GTK\\include\\gtk-2.0\\gdk\\gdkscreen.h ISO C++ forbids declaration ofcairo_font_options_t' with no type
    51 C:\Programme\GTK\include\gtk-2.0\gdk\gdkscreen.h expected ;' before '*' token 106 C:\\Programme\\GTK\\include\\gtk-2.0\\gdk\\gdkscreen.h expected,' or ...' before '*' token 106 C:\\Programme\\GTK\\include\\gtk-2.0\\gdk\\gdkscreen.h ISO C++ forbids declaration ofcairo_font_options_t' with no type
    107 C:\Programme\GTK\include\gtk-2.0\gdk\gdkscreen.h expected init-declarator before '
    ' token
    107 C:\Programme\GTK\include\gtk-2.0\gdk\gdkscreen.h expected ,' or;' before '*' token
    D:\Area51\GTKmm\low\Makefile.win [Build Error] [main.o] Error 1

    ciao!



  • winexec* schrieb:

    Hallo,

    Kann es sein, dass du Downloads auf deiner Seite deaktiviert hast? Ich kann nichts runterladen. Ich kriege werde zur index.php weitergeleitet.

    MFG winexec*

    Die Links sollten jetzt wieder gehen, ich hab die alte Seite ausgemistet. Und musste erst mal schauen wie ich das mit der .htaccess datei drehe damit die alten Links auf der neuen Adresse funktionieren.

    Die links sollten nun ohne große Änderungen gehen.

    @squirr

    Leider ist pkg-config zur Zeit kaputt sonst würde es einwandfrei gehen (da der installer darauf aufsetzt ist das eigentlich schon eine Voraussetzung) 😞

    Von hand ist das ziemlich aufwendig, du musst nämlich sämtliche Verzeichnisse angeben in denen die Header sind. Dazu kommt das es auch noch Headerverzeichnisse bei den Bibliotheken gibt, etwas sehr mühsam aber es ist theoretisch machbar.

    Als nächstes musst du dann noch alle Bibliothekspfade setzen und alle Bibliotheken die du dafür brauchst einbinden.

    Sorry aber atm geht es wohl nicht einfacher.

    BR
    Vinzenz



  • Dummie schrieb:

    Hi,
    echt klasse Artikel 🙂

    Ich hab da eine Frage: Ich wollte nun auch GTKmm mit Visual C++ 2002 nutzen um nicht z.B. Server mit Visual C++ 2002 und Client mit Dev C++ kompilieren zu müssen fragen, ob hier jemand Erfahrung mit Visual C++ 2002 hat und, ob das ohne Probleme läuft? Wollte nicht wieder Tagelang fummeln um dann festzustellen, dass ichs wieder nicht installiert kriege.
    Und noch eine Frage: Gibt es einen Fenster Designer oder muss alles per Code geregelt werden? Sorry, falls das in den folgenden Teilen schon erklärt wurde, falls es sowas gibt, aber ich wollte bevor ich da richtig einsteige erst Oben genanntens beantwortet haben.

    Ansonsten weiter so 😃
    Übrigens find ich das die Bildchen der Fenster Mut machen und Motivieren, prima Sache 🙂

    Gruß Patrick

    Soweit ich weiß geht das mit VC++2k2 nicht mehr, zumindest die neuen GTKmm Versionen wirst du damit nicht mehr benutzen können, da diese auf VC++8 aka VC++ 2005 ausgelegt sind (Express geht auch!)

    Einen Fenster Designer gibt es auch (glade) und das was du damit umsetzt solltest du mit libglademm benutzen (da der generierte Code schrecklich ist).

    Aber als erstes solltest du bei GTKmm ohne Designer zurecht kommen, das ist Empfehlenswert (den Designer solltest du am Anfang höchtens dafür einsetzen, das du weißt wie du deine GUI am besten zusammensetzt aber implementieren solltest du es erst einmal selbst.)

    BR
    Vinzenz



  • evilissimo schrieb:

    @squirr

    Leider ist pkg-config zur Zeit kaputt sonst würde es einwandfrei gehen (da der installer darauf aufsetzt ist das eigentlich schon eine Voraussetzung) 😞

    Von hand ist das ziemlich aufwendig, du musst nämlich sämtliche Verzeichnisse angeben in denen die Header sind. Dazu kommt das es auch noch Headerverzeichnisse bei den Bibliotheken gibt, etwas sehr mühsam aber es ist theoretisch machbar.

    Als nächstes musst du dann noch alle Bibliothekspfade setzen und alle Bibliotheken die du dafür brauchst einbinden.

    hey!

    "pkg-config zur Zeit kaputt" *ggg* wie, kaputt? 😕

    da ich etwas langeweile hatte, habe ich mal versucht sämtliche headerverzeichnisse einzubinden, die ich in den gtk-ordnern gefunden habe. leider ohne erfolg - an den fehlern ändert sich nichts.

    dann muss gtk wohl noch etwas auf mich warten. woher weiß ich denn, ob die pkg-config wieder funktioniert?

    ciao!



  • Hallo Leute,

    ich wollte mich ebenfalls an der GTKmm-Programmierung probieren, bin allerdings schon bei der Installation und dem 1. Tutorial gescheitert und komme nun nicht weiter.

    Nach der Installation von gtk-win32-devel-2.8.18-rc1.exe und gtkmm-devel-2.8.8-2.exe habe ich das Template von evilissimo installiert.

    In Dev-Cpp gibt es nun bei mir wie beschrieben, die Option für eine Gtkmm-Applikation. Leider treten dort beim Kompillieren folgende Probleme auf:

    Compiler: Default compiler
    Building Makefile: "C:\Programmierung\Dev-Cpp\Examples\Makefile.win"
    Führt  make... aus
    make.exe -f "C:\Programmierung\Dev-Cpp\Examples\Makefile.win" all
    g++.exe -c main.cpp -o main.o -I"lib/gcc/mingw32/3.4.2/include"  -I"include/c++/3.4.2/backward"  -I"include/c++/3.4.2/mingw32"  -I"include/c++/3.4.2"  -I"include"    
    
    In file included from main.cpp:1:
    mywindow.hpp:4:19: gtkmm.h: No such file or directory
    In file included from main.cpp:1:
    mywindow.hpp:6: error: `Gtk' has not been declared
    mywindow.hpp:7: error: expected class-name before '{' token
    
    main.cpp: In function `int main(int, char**)':
    
    main.cpp:5: error: `Gtk' has not been declared
    
    main.cpp:5: error: `Main' undeclared (first use this function)
    
    main.cpp:5: error: (Each undeclared identifier is reported only once for each function it appears in.)
    main.cpp:5: error: expected `;' before "main_obj"
    
    main.cpp:7: error: `main_obj' undeclared (first use this function)
    main.cpp:8: error: `EXIT_SUCCESS' undeclared (first use this function)
    
    make.exe: *** [main.o] Error 1
    
    Ausführung beendet
    

    Gebe ich in die Konsole: pkg-config --cflags gtkmm-2.4 ein, gibt es folgende Fehlermeldung:

    C:\Programmierung\Dev-Cpp\bin> pkg-config --cflags gtkmm-2.4
    Package gtkmm-2.4 was not found in the pkg-config search path.
    Perhaps you should add the directory containing `gtkmm-2.4.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'gtkmm-2.4' found
    

    Leider weiß ich nicht was es mit der PKG_CONFIG_PATH Umgebungsvariable auf sich hat und wo man diese ändern kann. 😕

    Für Tipps wäre ich sehr dankbar! 👍



  • schicke mir eine Email
    xmluser@web.de



  • Hallo Leute!

    Ich habe mir dieses Tutorial durchgelesen und finde es super! Ich habe jetzt schon versucht das ganze unter Windows zum Laufen zu bringen, unter Linux habe ich es zum Laufen gebracht ;-).
    Leider habe ich es unter Windows noch nicht geschaft.

    - NetBeans 5.5 + C++ Plugin (IDE)
    - gtk-dev-2.10.6-win32-1.exe
    - gtkmm-devel-2.8.8-2.exe

    Diese Pakete habe ich installiert.

    Folgende Fehler erhalte ich:

    undefined reference to `Gtk::Window::Window(Gtk::WindowType)'
    Main.cc:21: undefined reference to `Gtk::Main::run(Gtk::Window&)'
    Main.cc:23: undefined reference to `Gtk::Window::~Window()'
    Main.cc:23: undefined reference to `Gtk::Main::~Main()'
    Main.cc:23: undefined reference to `Gtk::Window::~Window()'
    Main.cc:23: undefined reference to `Gtk::Main::~Main()'
    

    Ich sags auch gleich ich habe nicht alle libs einzeln hinzugefügt sondern mit den commands:

    `pkg-config --cflags gtkmm-2.4`
    `pkg-config --libs gtkmm-2.4`
    

    erstellt.

    Weiß jemand woran das liegen kann?

    Danke im voraus!

    lg fluffy



  • Welchen Compiler verwendest du?



  • Sorry!

    g++ 3.4.2 (MinGW)

    C++ Code kompilieren funktioniert einwandfrei!



  • Ähm, mach da mal einen Aufruf draus:

    g++ -o main main.cpp $(pkg-config gtkmm-2.4 --cflags --libs)
    


  • GPC schrieb:

    Ähm, mach da mal einen Aufruf draus:

    g++ -o main main.cpp $(pkg-config gtkmm-2.4 --cflags --libs)
    

    Ähm...das verstehe ich jetzt nicht in der Console eingeben? Oder meinst Du ich soll alles ausgeben von Anfang an...

    C:\>pkg-config --cflags --libs gtkmm-2.4
    -mms-bitfields 
    -ID:/Programme/DevelopmentTools/GTK/include/gtkmm-2.4
    -ID:/Programme/DevelopmentTools/GTK/lib/gtkmm-2.4/include
    -ID:/Programme/DevelopmentTools/GTK/include/glibmm-2.4
    -ID:/Programme/DevelopmentTools/GTK/lib/glibmm-2.4/include
    -ID:/Programme/DevelopmentTools/GTK/include/gdkmm-2.4
    -ID:/Programme/DevelopmentTools/GTK/lib/gdkmm-2.4/include
    -ID:/Programme/DevelopmentTools/GTK/include/pangomm-1.4 -ID:/Programme/DevelopmentTools/GTK/include/atkmm-1.6
    -ID:/Programme/DevelopmentTools/GTK/include/gtk-2.0
    -ID:/Programme/DevelopmentTools/GTK/include/sigc++-2.0
    -ID:/Programme/DevelopmentTools/GTK/lib/sigc++-2.0/include 
    -ID:/Programme/DevelopmentTools/GTK/include/glib-2.0
    -ID:/Programme/DevelopmentTools/GTK/lib/glib-2.0/include -ID:/Programme/DevelopmentTools/GTK/lib/gtk-2.0/include 
    -ID:/Programme/DevelopmentTools/GTK/include/pango-1.0 [b]-I/home/ivan/cross/build/include/cairo <-- das ist aber nicht ganz richtig oder?[/b]  
    -ID:/Programme/DevelopmentTools/GTK/include/cairo 
    -ID:/Programme/DevelopmentTools/GTK/include/atk-1.0  -LD:/Programme/DevelopmentTools/GTK/lib 
    -lgtkmm-2.4 -lgdkmm-2.4 -latkmm-1.6 -lgtk-win32-2.0 -lpangomm-1.4 -lglibmm-2.4 -lsigc-2.0 -lgdk-win32-2.0 -latk-1.0 -lgdk_pixbuf-2.0 
    -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl -liconv
    

    Fehlt mir da vielleicht ein Paket? In der Depencies steht da etwas von cairomm, das habe ich aber nirgends gefunden



  • Äh, nein. Weißt du, ich habe keine Ahnung, wie das mit NetBeans und C++ funktioniert, da ich es ehrlich gesagt für ziemlich daneben halte, eine Java IDE für das Programmieren von C++ zu verwenden, aber jedem das seine 😉

    Im Grunde solltest du das, was ich oben getippt habe, mal in die MinGW-Shell eingeben, um zu testen, ob's klappt.

    Alternativ könntest du auch gtkmm mit dem Visual Studio benutzen, siehe hier.

    Und nein, cairo(mm) brauchst du nicht für Standard GTK+ bzw. gtkmm Anwendungen. Das ist eher wie ein bisserl Zucker auf den Kuchen drauf.



  • GPC schrieb:

    Äh, nein. Weißt du, ich habe keine Ahnung, wie das mit NetBeans und C++ funktioniert, da ich es ehrlich gesagt für ziemlich daneben halte, eine Java IDE für das Programmieren von C++ zu verwenden, aber jedem das seine 😉

    Im Grunde solltest du das, was ich oben getippt habe, mal in die MinGW-Shell eingeben, um zu testen, ob's klappt.

    Alternativ könntest du auch gtkmm mit dem Visual Studio benutzen, siehe hier.

    Und nein, cairo(mm) brauchst du nicht für Standard GTK+ bzw. gtkmm Anwendungen. Das ist eher wie ein bisserl Zucker auf den Kuchen drauf.

    hrhrhr :D, naja sagen wir es so, ich arbeite Tag, täglich mit VS2005 aber programmiere dort in C#. Das Problem ist ja VS nicht unter Linux rennt(und bitte nicht mit Wine ;-)). Das ist ja der ausschlaggebende Grund. Unter Linux gibt es zwar KDevelop, Anjuta usw...nur wollte ich eben eine IDE(für Win und Linux), ich habe versucht mit Eclipse mein Problem zu lösen aber da besteht ja das Problem mit den `` unter Windows, das im Gegensatz "Netbeans" anscheinend besser gelöst hat...denn soweit war ich noch nie...

    Ich war im Moment konfus, 😕 da ja unter Windows der Befehl ned funktioniert...

    Oki, dann liegt es anscheinend an den Versionen...den Zucker brauch ich derzeit nicht, aber vielleicht einen Kaffee... 🙄 😃

    Package gtkmm-2.4 was not found in the pkg-config search path.
    Perhaps you should add the directory containing `gtkmm-2.4.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'gtkmm-2.4' found
    Main.cc:9:19: gtkmm.h: No such file or directory
    Main.cc:10: error: expected namespace-name before ';' token
    Main.cc:10: error: `<type error>' is not a namespace
    Main.cc: In function `int main(int, char**)':
    Main.cc:16: error: `Main' undeclared (first use this function)
    Main.cc:16: error: (Each undeclared identifier is reported only once for each function it appears in.)
    Main.cc:16: error: expected `;' before "kit"
    Main.cc:18: error: `Window' undeclared (first use this function)
    Main.cc:18: error: expected `;' before "window"
    Main.cc:20: error: `Main' has not been declared
    Main.cc:20: error: `window' undeclared (first use this function)
    Main.cc:20: error: `run' undeclared (first use this function)
    
    $ $PKG_CONFIG_PATH
    sh: /D/PROGRA~1/DEVELO~1/GTK/lib/pkgconfig:D:\Programme\DevelopmentTools\GTK\lib\pkgconfig: No such file or directory
    


  • Ich verwende gtkmm unter Unix und dem emacs, IDEs sind nichts für mich 😉

    housefluffy schrieb:

    Oki, dann liegt es anscheinend an den Versionen...

    gtkmm-2.4 API ist aktuell, keine Sorge.

    den Zucker brauch ich derzeit nicht, aber vielleicht einen Kaffee... 🙄 😃

    Package gtkmm-2.4 was not found in the pkg-config search path.
    Perhaps you should add the directory containing `gtkmm-2.4.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'gtkmm-2.4' found
    Main.cc:9:19: gtkmm.h: No such file or directory
    Main.cc:10: error: expected namespace-name before ';' token
    Main.cc:10: error: `<type error>' is not a namespace
    Main.cc: In function `int main(int, char**)':
    Main.cc:16: error: `Main' undeclared (first use this function)
    Main.cc:16: error: (Each undeclared identifier is reported only once for each function it appears in.)
    Main.cc:16: error: expected `;' before "kit"
    Main.cc:18: error: `Window' undeclared (first use this function)
    Main.cc:18: error: expected `;' before "window"
    Main.cc:20: error: `Main' has not been declared
    Main.cc:20: error: `window' undeclared (first use this function)
    Main.cc:20: error: `run' undeclared (first use this function)
    
    $ $PKG_CONFIG_PATH
    sh: /D/PROGRA~1/DEVELO~1/GTK/lib/pkgconfig:D:\Programme\DevelopmentTools\GTK\lib\pkgconfig: No such file or directory
    

    Hm, okay, such mal nach der Datei gtkmm-2.4.pc und füg das Verzeichnis dann zur PKG_CONFIG_PATH Variable dazu (die Datei mit der Variable dürfte profile heißen und im MinGW Verzeichnis rumliegen).

    Alternativer Plan: Du fügst alle Include-Verzeichnisse und Libs, gegen die gelinkt werden muss, von Hand zum Projekt dazu und machst dann halt ein Template draus, damit du das nicht jedes mal machen musst.



  • Vielen Dank GPC!

    Nachdem ich es mit der MinGW Shell geschafft habe, war ich hartnäckig und habe meine Programmier-Umgebung unter NetBeans auch schon eingerichtet, voila -> es funktioniert. 👍 😮

    ...und ein Danke an das C/C++ Forum, das es überhaupt gibt und einen Newb - wie mich 😃 - aushaltet *hrhr*

    lg housefluffy



  • http://www.pcpm.ucl.ac.be/~gustin/win32_ports/

    Die Seite scheint verschwunden zu sein?
    Vielleicht ist sie auch nur für den Moment nicht erreichbar, ich für meinen Teil rechne mit dem schlimmsten!

    Also.... gibt es Mirrors, Alternativen?
    Aber bitte nix zum selbst-durchkompillieren, sowas funkt nämlich nie wirklich und nervt. 😃

    Dankö :xmas1:


Anmelden zum Antworten