SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
IDZ DO
         PRZYK£ADOWY ROZDZIA£

                           SPIS TRE CI   MySQL. Budowanie
                                         interfejsów u¿ytkownika.
           KATALOG KSI¥¯EK               Vademecum profesjonalisty
                      KATALOG ONLINE     Autor: Matthew Stucky
                                         T³umaczenie: Tomasz Miszkiel
       ZAMÓW DRUKOWANY KATALOG           ISBN: 83-7197-885-5
                                         Tytu³ orygina³u: MySQL Building User Interfaces
                                         Format: B5, stron: 582
              TWÓJ KOSZYK                Przyk³ady na ftp: 1098 kB

                    DODAJ DO KOSZYKA
                                         MySQL jest szybkim, przeno ny i — co najwa¿niejsze — darmowym systemem
                                         bazodanowym, który zdoby³ ogromn¹ popularno æ w zastosowaniach internetowych.
         CENNIK I INFORMACJE             Ksi¹¿ka „MySQL. Budowanie interfejsów u¿ytkownika.” poka¿e Ci jak u¿ywaæ tej bazy
                                         tak¿e poza Internetem. Nauczysz siê z niej budowania atrakcyjnych interfejsów
                   ZAMÓW INFORMACJE      u¿ytkownika wspó³pracuj¹cych z t¹ baz¹. W tym celu wykorzystana zostanie
                     O NOWO CIACH        biblioteka GTK+.
                                         Ksi¹¿ka jest przeznaczona g³ównie dla programistów, którzy rozwa¿aj¹ wykorzystanie
                       ZAMÓW CENNIK      Linuksa w tworzonych przez siebie rozwi¹zaniach, dla osób posiadaj¹cych pewne
                                         do wiadczenie w tworzeniu systemów opartych na architekturze klient-serwer (np. za
                                         pomoc¹ Visual Basica i SQL Server). Aby w pe³ni skorzystaæ z informacji zawartych
                 CZYTELNIA               w ksi¹¿ce, wystarczy znaæ jêzyk C i podstawy programowania baz danych.
                                            • Poznasz mocne strony i zalety bazy MySQL
          FRAGMENTY KSI¥¯EK ONLINE          • Nauczysz siê tworzyæ programy w systemie Linuks, a nastêpnie, korzystaj¹c z ich
                                              kodu ród³owego, kompilowaæ je w systemie Windows.
                                            • Dowiesz siê, w jaki sposób mo¿na instalowaæ programy korzystaj¹c ze skryptów
                                              lub pakietów RPM (RedHat Pakage Manager).
                                            • Nauczysz siê korzystaæ z interfejsu jêzyka C dla MySQL w aplikacjach, w których
                                              u¿yto bibliotekê GTK+.
                                            • Poznasz sposoby wy wietlania danych pochodz¹cych z MySQL
                                              w obiektach GTK+.
                                            • Bêdziesz w stanie utworzyæ (w jêzyku C) aplikacje, które wygl¹dem
                                              i zachowaniem przypominaj¹ programy Windowsowe
                                            • Utworzysz aplikacje, które bêd¹ dynamicznie tworzyæ graficzny interfejs
Wydawnictwo Helion                            u¿ytkownika, dziêki czemu bêdziesz móg³ zmieniæ wygl¹d interfejsu bez
ul. Chopina 6                                 konieczno ci rekompilacji kodu ród³owego
44-100 Gliwice                              • Prze ledzisz krok po kroku proces powstawania kompletnej aplikacji korzystaj¹cej
tel. (32)230-98-63                            z MySQL.
e-mail: helion@helion.pl
5RKU VTG EK
             1 #WVQTG  
             1 4GEGPGPVCEJ VGEJPKEP[EJ  
             9RTQYCFGPKG  
             Dla kogo przeznaczona jest ta ksią ka? ........................................................................ 12
             Układ ksią ki ............................................................................................................. 12
             Konwencje przyjęte w ksią ce..................................................................................... 13

%ú è +      5[DMKG YRTQYCFGPKG
4QFKC    /[53. FNC CFOKPKUVTCVQTÎY K W [VMQYPKMÎY #EEGUU K 53. 5GTXGT 
             Dlaczego właśnie MySQL? ......................................................................................... 17
             Licencje .................................................................................................................... 18
             Porównanie typów danych MySQL
               z typami dostępnymi w Access 2000 i SQL Server 7 .................................................. 19
             Czego brakuje w MySQL?.......................................................................................... 21
             MySQL, MYSQL i mysql — trzy podobne słowa, trzy ró ne znaczenia.......................... 27
             Tylko dla u ytkowników programu Access: demony i usługi.......................................... 29
             Skąd pobrać pakiet instalacyjny MySQL?..................................................................... 30
             Decyzja dotycząca metody instalacji — wszystkie za i przeciw ...................................... 31
             Pliki potrzebne do instalacji RPM................................................................................ 33
             Instalacja ................................................................................................................... 34
             Pierwsze spotkanie z MySQL: tworzenie, wykorzystywanie i usuwanie bazy danych ....... 38
             Niestandardowe, unikatowe konstrukcje SQL wykorzystywane w MySQL
               (rozszerzenie standardu ANSI SQL92) ...................................................................... 40
             Programy u ytkowe w MySQL ................................................................................... 45
             Interfejs API języka C dla MySQL .............................................................................. 53
4QFKC    )6-
 FNC RTQITCOKUVÎY MQT[UVCLæE[EJ  8KUWCN $CUKE 
             Dlaczego powinniśmy korzystać z GTK+? ................................................................... 60
             Gdzie zdobyć GTK+ i jak dokonać jego instalacji?........................................................ 61
             Licencje .................................................................................................................... 61
             Ogólny opis biblioteki GTK+...................................................................................... 63
             Pojemniki GTK+ jako odpowiedniki kontrolek zmieniających rozmiary.......................... 71
             Podstawowe widgety w programie ............................................................................... 73
4QFKC    9KúEGL YKFIGVÎY )6-
  
             Widget GtkCombo ..................................................................................................... 95
             GtkProgressBar i GtkStatusBar ................................................................................... 99
             GtkFrame i GtkAspectFrame..................................................................................... 106
             Okna dialogowe i informacyjne, czyli obiekty GtkDialog, GtkFileSelection,
              GtkColorSelectionDialog i GtkFontSelectionDialog ................................................. 110
             Systemy menu: obiekty menu, „fabryka elementów” i elementy menu kontekstowego.... 117
6         MySQL. Budowanie interfejsów u ytkownika. Vademecum profesjonalisty


4QFKC      CCYCPUQYCPG QDKGMV[ )6-
  
               GtkTable ................................................................................................................. 127
               GtkTree i GtkCTree ................................................................................................. 132
               GtkFixed ................................................................................................................. 137
               GtkLayout ............................................................................................................... 140
               GtkScrolledWindow ................................................................................................. 142
               GtkNotebook ........................................................................................................... 144
               GtkPaned ................................................................................................................ 147
4QFKC      )NCFG FNC RTQITCOKUVÎY MQT[UVCLæE[EJ  8KUWCN $CUKE  
               Środowisko Glade .................................................................................................... 151
               Pierwsze spotkanie z Glade: aplikacja WitajSwiecie .................................................... 153
               Szczegółowa analiza wybranych plików projektu WitajSwiecie.................................... 162
               Glade i widgety........................................................................................................ 170
               Tworzenie projektu: trzeba poznać hierarchię obiektów ............................................... 173
               Komunikacja pomiędzy oknami w projekcie utworzonym w Glade............................... 174
               Zmienne o zasięgu globalnym a poprawne pisanie programów ..................................... 180

%ú è ++       2TCYFKYG CRNKMCELG  
4QFKC      2TQLGMVQYCPKG K CUCFC FKC CPKC
               CRNKMCELK RT[LúEKC COÎYKGPKC 
               Projekt aplikacji ....................................................................................................... 186
               Interfejs u ytkownika ............................................................................................... 189
               Tworzenie bazy danych ............................................................................................ 193
               Wdro enie aplikacji.................................................................................................. 195
               Modernizacja aplikacji.............................................................................................. 199
4QFKC      7VYQTGPKG CRNKMCELK FQ QDU WIK COÎYKG FNC 5'5+  
               Tworzenie interfejsu u ytkownika za pomocą Glade ................................................... 202
               Funkcje aplikacji ...................................................................................................... 214
               Połączenie interfejsu i funkcji wykonujących poszczególne zadania programu............... 248
               Kompilacja programu ............................................................................................... 259
               Uwagi dotyczące utworzonego programu ................................................................... 259
4QFKC      #RNKMCELC 9[PCECPKG RTQYKLK                                 RTQLGMV K CPCNKC  
               Przedstawienie problemu .......................................................................................... 264
               Interfejs u ytkownika ............................................................................................... 267
               Baza danych, przygotowanie autoryzacji .................................................................... 271
               Tworzenie bazy danych ............................................................................................ 273
4QFKC      -QPUVTWMELC CRNKMCELK 2TQYKLG  
               Budowanie interfejsu u ytkownika za pomocą Glade .................................................. 281
               Kontrola wyświetlanych danych ................................................................................ 286
               Funkcje tworzonej aplikacji....................................................................................... 289
               Powiązanie funkcji „narzędziowych” z obiektami interfejsu u ytkownika
                — funkcje zwrotne w pliku callbacks.c.................................................................... 318
               Uwagi dotyczące utworzonego programu ................................................................... 325
4QFKC  +PUVCNCELC CRNKMCELK 9[PCECPKG RTQYKLK  
               Kompilacja z wiersza poleceń.................................................................................... 327
               Korzyści płynące z zastosowania Make ...................................................................... 328
               Instalowanie aplikacji ............................................................................................... 330
               Kompilacja programu dla Win32 za pomocą MS Visual C++ ....................................... 341
Spis treści                   7


4QFKC  2TQLGMV CRNKMCELK 4CRQTV[ 
                   Definicja problemu................................................................................................... 351
                   Interfejs u ytkownika ............................................................................................... 352
                   Baza danych, uprawnienia u ytkowników .................................................................. 356
                   Tworzenie bazy danych ............................................................................................ 357
4QFKC  -QPUVTWMELC CRNKMCELK 4CRQTV[ 
                   Opis problemu ......................................................................................................... 361
                   Aplikacja sterująca: Raporty...................................................................................... 361
                   Raport 1. Tabela....................................................................................................... 371
                   Raport 2. Wykres kołowy ......................................................................................... 377
                   Raport 3. Wykres liniowo-kolumnowy ....................................................................... 387
                   Raport 4. Wykres punktowy...................................................................................... 393
4QFKC  -QORKNCELC K KPUVCNCELC CRNKMCELK 4CRQTV[ 
                   Kompilacja i dystrybucja w formie pliku RPM ........................................................... 403
                   Kompilacja programów za pomocą MinGW dla Win32 ............................................... 408

%ú è +++          2T[M CF 
4QFKC  [PCOKEPG VYQTGPKG KPVGTHGLUW W [VMQYPKMC C RQOQEæ :/. 
                   Jeszcze raz program „Witaj Swiecie” ......................................................................... 417
                   Komunikacja pomiędzy oknami................................................................................. 422
                   Dokonywanie zmian w aplikacji bez konieczności ponownej kompilacji ....................... 430

QFCVMK  
QFCVGM #          2NKMK Y[IGPGTQYCPG RTG )NCFG                                    CRNKMCELC FNC 5'5+ 
                   interface.c................................................................................................................ 435
                   sesi.glade................................................................................................................. 460
QFCVGM $          2NKMK Y[IGPGTQYCPG RTG )NCFG                                    CRNKMCELC 2TQYKLG 
                   interface.c................................................................................................................ 499
                   prowizje.glade.......................................................................................................... 516
QFCVGM %          2NKMK Y[IGPGTQYCPG RTG )NCFG                                    CRNKMCELC 4CRQTV[  
                   Pliki dla programu głównego..................................................................................... 547
                   Pliki dla programu tworzącego raport w formie tabeli .................................................. 551
                   Pliki dla programu tworzącego wykres kołowy ........................................................... 556
                   Pliki dla programu tworzącego raport w postaci wykresu liniowo-kolumnowego ........... 559
                   Pliki dla programu generującego raport w postaci wykresu punktowego........................ 562
5MQTQYKF
Rozdział 4.
CCYCPUQYCPG
QDKGMV[ )6-
    W tym rozdziale opisano zaawansowane obiekty GTK+, słu ące do rozmieszczania i pre-
    zentacji innych elementów. Szczegółowo opisano tu następujące widgety:
        )VM6CDNG,
        )VM6TGG i )VM%6TGG,
        )VM(KZGF,
        )VM.C[QWV,
        )VM5ETQNNGF9KPFQY,
        )VM0QVGDQQM,
        )VM2CPGF.



)VM6CDNG
    Obiekt )VM6CDNG działa na zasadzie siatki, w której mo na umieszczać inne obiekty. Mo -
    na powiedzieć, e )VM6CDNG jest połączeniem dwóch prostokątnych pojemników (pozio-
    mego i pionowego). Na rysunku 4.1 przedstawiono obiekt )VM6CDNG, który utworzymy
    w przykładowym programie (listing 4.1). W )VM6CDNG mo na umieścić obiekt w kilku
    komórkach (poziomo lub pionowo).

    Przykładowy program przedstawia działanie obiektu )VM6CDNG. Pokazano tu równie
    nowy trend tworzenia „programów w akcji”, gdzie w odpowiedzi na wystąpienie zda-
    rzeń tworzy się (lub niszczy) określone widgety. Nale y pamiętać, e jeśli będziemy ko-
    rzystać z tej metody w tworzonych aplikacjach, to jednocześnie będziemy musieli zna-
    leźć sposób na przechowanie danych, które mają być przekazane tworzonym na nowo
    obiektom.

    Rysunek 4.1 przedstawia okno utworzonej aplikacji, której kod źródłowy znajduje się
    w listingu 4.1.
128       Część I       Szybkie wprowadzenie


4[UWPGM 
Uruchomiony
przykładowy program




.KUVKPI  Prezentacja obiektu GtkTable
             KPENWFG IVMIVMJ

            )VM9KFIGV
HTOAVCDNG
            )VM9KFIGV
VDN
2QPKUG RT[EKUMK QUVCPC WOKGUEQPG Y )VM6CDNG
Y  MQNWOPKG 2KGTYU[  PKEJ DGFKG PCLFQYCN UKG Y  TGFKG
MQNWOP[ FTWIK Y  TGFKG  MQNWOP[ K VCM FCNGL
)VM9KFIGV
EOFAA
            )VM9KFIGV
EOFAA
            )VM9KFIGV
EOFAA
            )VM9KFIGV
EOFAA
            )VM9KFIGV
EOFAA
            )VM9KFIGV
EOFAA
            )VM9KFIGV
EOFAA
            )VM9KFIGV
EOFAA
            )VM9KFIGV
EJMA

            XQKF   FGUVTQ[AOCKP

            XQKF   OCMGAVCDNGADWVVQPU

            XQKF   CVVCEJAYKFIGVU

            XQKF   EOFAAAENKEMGF

            XQKF   EOFAAAENKEMGF

            XQKF   EOFAAAENKEMGF

            XQKF   EOFAAAENKEMGF

            XQKF   EOFAAAENKEMGF

            XQKF   EOFAAAENKEMGF

            XQKF   EOFAAAENKEMGF

            XQKF   EOFAAAENKEMGF


            IKPV OCKP
IKPV CTIE IEJCT
CTIX=?
            ]

               IVMAKPKV
 CTIE      CTIX

               HTOAVCDNG  IVMAYKPFQYAPGY
)6-A9+019A612.'8'.
Rozdział 4.   Zaawansowane obiekty GTK+                 129


    IVMAYKPFQYAUGVAVKVNG
)6-A9+019
HTOAVCDNG    2TGGPVCELC VCDNKE[ QDKGMVQY 

    IVMAUKIPCNAEQPPGEV
)6-A1$,'%6
HTOAVCDNG
          FGUVTQ[ 
         )6-A5+)0#.A(70%
FGUVTQ[AOCKP
         07..

    OCMGAVCDNGADWVVQPU
+PKELCNKCELC RT[EKUMQY  W[EKGO YCTVQUEK FQO[UNP[EJ
5MQT[UVCO[ VW  IVMAVCDNGACVVCEJAFGHCWNVU
 COKCUV
HWPMELK CVVCEJAYKFIGVU
 Y EGNW FGOQPUVTCELK FKCNCPKC

Contenu connexe

Similaire à MySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalisty

PHP, MySQL i Apache dla każdego. Wydanie II
PHP, MySQL i Apache dla każdego. Wydanie IIPHP, MySQL i Apache dla każdego. Wydanie II
PHP, MySQL i Apache dla każdego. Wydanie IIWydawnictwo Helion
 
Visual C# 2005. Zapiski programisty
Visual C# 2005. Zapiski programistyVisual C# 2005. Zapiski programisty
Visual C# 2005. Zapiski programistyWydawnictwo Helion
 
PHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki startPHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki startWydawnictwo Helion
 
100 sposobów na serwery Windows
100 sposobów na serwery Windows100 sposobów na serwery Windows
100 sposobów na serwery WindowsWydawnictwo Helion
 
Visual Basic 2005. Zapiski programisty
Visual Basic 2005. Zapiski programistyVisual Basic 2005. Zapiski programisty
Visual Basic 2005. Zapiski programistyWydawnictwo Helion
 
Visual Basic .NET. Księga eksperta
Visual Basic .NET. Księga ekspertaVisual Basic .NET. Księga eksperta
Visual Basic .NET. Księga ekspertaWydawnictwo Helion
 
.NET Framework 2.0. Zaawansowane programowanie
.NET Framework 2.0. Zaawansowane programowanie.NET Framework 2.0. Zaawansowane programowanie
.NET Framework 2.0. Zaawansowane programowanieWydawnictwo Helion
 
PHP, MySQL i Apache dla każdego. Wydanie III
PHP, MySQL i Apache dla każdego. Wydanie IIIPHP, MySQL i Apache dla każdego. Wydanie III
PHP, MySQL i Apache dla każdego. Wydanie IIIWydawnictwo Helion
 
Linux dla programistów i użytkowników
Linux dla programistów i użytkownikówLinux dla programistów i użytkowników
Linux dla programistów i użytkownikówWydawnictwo Helion
 
.Net. Najpilniej strzeżone tajemnice
.Net. Najpilniej strzeżone tajemnice.Net. Najpilniej strzeżone tajemnice
.Net. Najpilniej strzeżone tajemniceWydawnictwo Helion
 
Microsoft SQL Server 2005. Podręcznik programisty
Microsoft SQL Server 2005. Podręcznik programistyMicrosoft SQL Server 2005. Podręcznik programisty
Microsoft SQL Server 2005. Podręcznik programistyWydawnictwo Helion
 

Similaire à MySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalisty (20)

Debian Linux. Ćwiczenia
Debian Linux. ĆwiczeniaDebian Linux. Ćwiczenia
Debian Linux. Ćwiczenia
 
Mandrake Linux
Mandrake LinuxMandrake Linux
Mandrake Linux
 
PHP, MySQL i Apache dla każdego. Wydanie II
PHP, MySQL i Apache dla każdego. Wydanie IIPHP, MySQL i Apache dla każdego. Wydanie II
PHP, MySQL i Apache dla każdego. Wydanie II
 
Visual C# 2005. Zapiski programisty
Visual C# 2005. Zapiski programistyVisual C# 2005. Zapiski programisty
Visual C# 2005. Zapiski programisty
 
Po prostu sieci komputerowe
Po prostu sieci komputerowePo prostu sieci komputerowe
Po prostu sieci komputerowe
 
PHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki startPHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki start
 
100 sposobów na serwery Windows
100 sposobów na serwery Windows100 sposobów na serwery Windows
100 sposobów na serwery Windows
 
Linux w sieci
Linux w sieciLinux w sieci
Linux w sieci
 
Cisco. Receptury
Cisco. RecepturyCisco. Receptury
Cisco. Receptury
 
Contribute 2. Szybki start
Contribute 2. Szybki startContribute 2. Szybki start
Contribute 2. Szybki start
 
Visual Basic 2005. Zapiski programisty
Visual Basic 2005. Zapiski programistyVisual Basic 2005. Zapiski programisty
Visual Basic 2005. Zapiski programisty
 
Visual Basic .NET. Księga eksperta
Visual Basic .NET. Księga ekspertaVisual Basic .NET. Księga eksperta
Visual Basic .NET. Księga eksperta
 
.NET Framework 2.0. Zaawansowane programowanie
.NET Framework 2.0. Zaawansowane programowanie.NET Framework 2.0. Zaawansowane programowanie
.NET Framework 2.0. Zaawansowane programowanie
 
MySQL
MySQLMySQL
MySQL
 
PHP, MySQL i Apache dla każdego. Wydanie III
PHP, MySQL i Apache dla każdego. Wydanie IIIPHP, MySQL i Apache dla każdego. Wydanie III
PHP, MySQL i Apache dla każdego. Wydanie III
 
Po prostu Red Hat Linux 9
Po prostu Red Hat Linux 9Po prostu Red Hat Linux 9
Po prostu Red Hat Linux 9
 
Linux dla programistów i użytkowników
Linux dla programistów i użytkownikówLinux dla programistów i użytkowników
Linux dla programistów i użytkowników
 
.Net. Najpilniej strzeżone tajemnice
.Net. Najpilniej strzeżone tajemnice.Net. Najpilniej strzeżone tajemnice
.Net. Najpilniej strzeżone tajemnice
 
Po prostu Red Hat Linux 8
Po prostu Red Hat Linux 8Po prostu Red Hat Linux 8
Po prostu Red Hat Linux 8
 
Microsoft SQL Server 2005. Podręcznik programisty
Microsoft SQL Server 2005. Podręcznik programistyMicrosoft SQL Server 2005. Podręcznik programisty
Microsoft SQL Server 2005. Podręcznik programisty
 

Plus de Wydawnictwo Helion

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyWydawnictwo Helion
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikWydawnictwo Helion
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczneWydawnictwo Helion
 
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieE-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieWydawnictwo Helion
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsWydawnictwo Helion
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IIWydawnictwo Helion
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuWydawnictwo Helion
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIWydawnictwo Helion
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningWydawnictwo Helion
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykWydawnictwo Helion
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaWydawnictwo Helion
 

Plus de Wydawnictwo Helion (20)

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. Projekty
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnik
 
Access w biurze i nie tylko
Access w biurze i nie tylkoAccess w biurze i nie tylko
Access w biurze i nie tylko
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
 
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieE-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółu
 
Windows PowerShell. Podstawy
Windows PowerShell. PodstawyWindows PowerShell. Podstawy
Windows PowerShell. Podstawy
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie II
 
JavaScript. Pierwsze starcie
JavaScript. Pierwsze starcieJavaScript. Pierwsze starcie
JavaScript. Pierwsze starcie
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny trening
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktyk
 
Excel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktykExcel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktyk
 
Access 2007 PL. Seria praktyk
Access 2007 PL. Seria praktykAccess 2007 PL. Seria praktyk
Access 2007 PL. Seria praktyk
 
Word 2007 PL. Seria praktyk
Word 2007 PL. Seria praktykWord 2007 PL. Seria praktyk
Word 2007 PL. Seria praktyk
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacja
 
AutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PLAutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PL
 
Bazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcieBazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcie
 
Inventor. Pierwsze kroki
Inventor. Pierwsze krokiInventor. Pierwsze kroki
Inventor. Pierwsze kroki
 

MySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalisty

  • 1. IDZ DO PRZYK£ADOWY ROZDZIA£ SPIS TRE CI MySQL. Budowanie interfejsów u¿ytkownika. KATALOG KSI¥¯EK Vademecum profesjonalisty KATALOG ONLINE Autor: Matthew Stucky T³umaczenie: Tomasz Miszkiel ZAMÓW DRUKOWANY KATALOG ISBN: 83-7197-885-5 Tytu³ orygina³u: MySQL Building User Interfaces Format: B5, stron: 582 TWÓJ KOSZYK Przyk³ady na ftp: 1098 kB DODAJ DO KOSZYKA MySQL jest szybkim, przeno ny i — co najwa¿niejsze — darmowym systemem bazodanowym, który zdoby³ ogromn¹ popularno æ w zastosowaniach internetowych. CENNIK I INFORMACJE Ksi¹¿ka „MySQL. Budowanie interfejsów u¿ytkownika.” poka¿e Ci jak u¿ywaæ tej bazy tak¿e poza Internetem. Nauczysz siê z niej budowania atrakcyjnych interfejsów ZAMÓW INFORMACJE u¿ytkownika wspó³pracuj¹cych z t¹ baz¹. W tym celu wykorzystana zostanie O NOWO CIACH biblioteka GTK+. Ksi¹¿ka jest przeznaczona g³ównie dla programistów, którzy rozwa¿aj¹ wykorzystanie ZAMÓW CENNIK Linuksa w tworzonych przez siebie rozwi¹zaniach, dla osób posiadaj¹cych pewne do wiadczenie w tworzeniu systemów opartych na architekturze klient-serwer (np. za pomoc¹ Visual Basica i SQL Server). Aby w pe³ni skorzystaæ z informacji zawartych CZYTELNIA w ksi¹¿ce, wystarczy znaæ jêzyk C i podstawy programowania baz danych. • Poznasz mocne strony i zalety bazy MySQL FRAGMENTY KSI¥¯EK ONLINE • Nauczysz siê tworzyæ programy w systemie Linuks, a nastêpnie, korzystaj¹c z ich kodu ród³owego, kompilowaæ je w systemie Windows. • Dowiesz siê, w jaki sposób mo¿na instalowaæ programy korzystaj¹c ze skryptów lub pakietów RPM (RedHat Pakage Manager). • Nauczysz siê korzystaæ z interfejsu jêzyka C dla MySQL w aplikacjach, w których u¿yto bibliotekê GTK+. • Poznasz sposoby wy wietlania danych pochodz¹cych z MySQL w obiektach GTK+. • Bêdziesz w stanie utworzyæ (w jêzyku C) aplikacje, które wygl¹dem i zachowaniem przypominaj¹ programy Windowsowe • Utworzysz aplikacje, które bêd¹ dynamicznie tworzyæ graficzny interfejs Wydawnictwo Helion u¿ytkownika, dziêki czemu bêdziesz móg³ zmieniæ wygl¹d interfejsu bez ul. Chopina 6 konieczno ci rekompilacji kodu ród³owego 44-100 Gliwice • Prze ledzisz krok po kroku proces powstawania kompletnej aplikacji korzystaj¹cej tel. (32)230-98-63 z MySQL. e-mail: helion@helion.pl
  • 2. 5RKU VTG EK 1 #WVQTG 1 4GEGPGPVCEJ VGEJPKEP[EJ 9RTQYCFGPKG Dla kogo przeznaczona jest ta ksią ka? ........................................................................ 12 Układ ksią ki ............................................................................................................. 12 Konwencje przyjęte w ksią ce..................................................................................... 13 %ú è + 5[DMKG YRTQYCFGPKG 4QFKC /[53. FNC CFOKPKUVTCVQTÎY K W [VMQYPKMÎY #EEGUU K 53. 5GTXGT Dlaczego właśnie MySQL? ......................................................................................... 17 Licencje .................................................................................................................... 18 Porównanie typów danych MySQL z typami dostępnymi w Access 2000 i SQL Server 7 .................................................. 19 Czego brakuje w MySQL?.......................................................................................... 21 MySQL, MYSQL i mysql — trzy podobne słowa, trzy ró ne znaczenia.......................... 27 Tylko dla u ytkowników programu Access: demony i usługi.......................................... 29 Skąd pobrać pakiet instalacyjny MySQL?..................................................................... 30 Decyzja dotycząca metody instalacji — wszystkie za i przeciw ...................................... 31 Pliki potrzebne do instalacji RPM................................................................................ 33 Instalacja ................................................................................................................... 34 Pierwsze spotkanie z MySQL: tworzenie, wykorzystywanie i usuwanie bazy danych ....... 38 Niestandardowe, unikatowe konstrukcje SQL wykorzystywane w MySQL (rozszerzenie standardu ANSI SQL92) ...................................................................... 40 Programy u ytkowe w MySQL ................................................................................... 45 Interfejs API języka C dla MySQL .............................................................................. 53 4QFKC )6- FNC RTQITCOKUVÎY MQT[UVCLæE[EJ 8KUWCN $CUKE Dlaczego powinniśmy korzystać z GTK+? ................................................................... 60 Gdzie zdobyć GTK+ i jak dokonać jego instalacji?........................................................ 61 Licencje .................................................................................................................... 61 Ogólny opis biblioteki GTK+...................................................................................... 63 Pojemniki GTK+ jako odpowiedniki kontrolek zmieniających rozmiary.......................... 71 Podstawowe widgety w programie ............................................................................... 73 4QFKC 9KúEGL YKFIGVÎY )6- Widget GtkCombo ..................................................................................................... 95 GtkProgressBar i GtkStatusBar ................................................................................... 99 GtkFrame i GtkAspectFrame..................................................................................... 106 Okna dialogowe i informacyjne, czyli obiekty GtkDialog, GtkFileSelection, GtkColorSelectionDialog i GtkFontSelectionDialog ................................................. 110 Systemy menu: obiekty menu, „fabryka elementów” i elementy menu kontekstowego.... 117
  • 3. 6 MySQL. Budowanie interfejsów u ytkownika. Vademecum profesjonalisty 4QFKC CCYCPUQYCPG QDKGMV[ )6- GtkTable ................................................................................................................. 127 GtkTree i GtkCTree ................................................................................................. 132 GtkFixed ................................................................................................................. 137 GtkLayout ............................................................................................................... 140 GtkScrolledWindow ................................................................................................. 142 GtkNotebook ........................................................................................................... 144 GtkPaned ................................................................................................................ 147 4QFKC )NCFG FNC RTQITCOKUVÎY MQT[UVCLæE[EJ 8KUWCN $CUKE Środowisko Glade .................................................................................................... 151 Pierwsze spotkanie z Glade: aplikacja WitajSwiecie .................................................... 153 Szczegółowa analiza wybranych plików projektu WitajSwiecie.................................... 162 Glade i widgety........................................................................................................ 170 Tworzenie projektu: trzeba poznać hierarchię obiektów ............................................... 173 Komunikacja pomiędzy oknami w projekcie utworzonym w Glade............................... 174 Zmienne o zasięgu globalnym a poprawne pisanie programów ..................................... 180 %ú è ++ 2TCYFKYG CRNKMCELG 4QFKC 2TQLGMVQYCPKG K CUCFC FKC CPKC CRNKMCELK RT[LúEKC COÎYKGPKC Projekt aplikacji ....................................................................................................... 186 Interfejs u ytkownika ............................................................................................... 189 Tworzenie bazy danych ............................................................................................ 193 Wdro enie aplikacji.................................................................................................. 195 Modernizacja aplikacji.............................................................................................. 199 4QFKC 7VYQTGPKG CRNKMCELK FQ QDU WIK COÎYKG FNC 5'5+ Tworzenie interfejsu u ytkownika za pomocą Glade ................................................... 202 Funkcje aplikacji ...................................................................................................... 214 Połączenie interfejsu i funkcji wykonujących poszczególne zadania programu............... 248 Kompilacja programu ............................................................................................... 259 Uwagi dotyczące utworzonego programu ................................................................... 259 4QFKC #RNKMCELC 9[PCECPKG RTQYKLK RTQLGMV K CPCNKC Przedstawienie problemu .......................................................................................... 264 Interfejs u ytkownika ............................................................................................... 267 Baza danych, przygotowanie autoryzacji .................................................................... 271 Tworzenie bazy danych ............................................................................................ 273 4QFKC -QPUVTWMELC CRNKMCELK 2TQYKLG Budowanie interfejsu u ytkownika za pomocą Glade .................................................. 281 Kontrola wyświetlanych danych ................................................................................ 286 Funkcje tworzonej aplikacji....................................................................................... 289 Powiązanie funkcji „narzędziowych” z obiektami interfejsu u ytkownika — funkcje zwrotne w pliku callbacks.c.................................................................... 318 Uwagi dotyczące utworzonego programu ................................................................... 325 4QFKC +PUVCNCELC CRNKMCELK 9[PCECPKG RTQYKLK Kompilacja z wiersza poleceń.................................................................................... 327 Korzyści płynące z zastosowania Make ...................................................................... 328 Instalowanie aplikacji ............................................................................................... 330 Kompilacja programu dla Win32 za pomocą MS Visual C++ ....................................... 341
  • 4. Spis treści 7 4QFKC 2TQLGMV CRNKMCELK 4CRQTV[ Definicja problemu................................................................................................... 351 Interfejs u ytkownika ............................................................................................... 352 Baza danych, uprawnienia u ytkowników .................................................................. 356 Tworzenie bazy danych ............................................................................................ 357 4QFKC -QPUVTWMELC CRNKMCELK 4CRQTV[ Opis problemu ......................................................................................................... 361 Aplikacja sterująca: Raporty...................................................................................... 361 Raport 1. Tabela....................................................................................................... 371 Raport 2. Wykres kołowy ......................................................................................... 377 Raport 3. Wykres liniowo-kolumnowy ....................................................................... 387 Raport 4. Wykres punktowy...................................................................................... 393 4QFKC -QORKNCELC K KPUVCNCELC CRNKMCELK 4CRQTV[ Kompilacja i dystrybucja w formie pliku RPM ........................................................... 403 Kompilacja programów za pomocą MinGW dla Win32 ............................................... 408 %ú è +++ 2T[M CF 4QFKC [PCOKEPG VYQTGPKG KPVGTHGLUW W [VMQYPKMC C RQOQEæ :/. Jeszcze raz program „Witaj Swiecie” ......................................................................... 417 Komunikacja pomiędzy oknami................................................................................. 422 Dokonywanie zmian w aplikacji bez konieczności ponownej kompilacji ....................... 430 QFCVMK QFCVGM # 2NKMK Y[IGPGTQYCPG RTG )NCFG CRNKMCELC FNC 5'5+ interface.c................................................................................................................ 435 sesi.glade................................................................................................................. 460 QFCVGM $ 2NKMK Y[IGPGTQYCPG RTG )NCFG CRNKMCELC 2TQYKLG interface.c................................................................................................................ 499 prowizje.glade.......................................................................................................... 516 QFCVGM % 2NKMK Y[IGPGTQYCPG RTG )NCFG CRNKMCELC 4CRQTV[ Pliki dla programu głównego..................................................................................... 547 Pliki dla programu tworzącego raport w formie tabeli .................................................. 551 Pliki dla programu tworzącego wykres kołowy ........................................................... 556 Pliki dla programu tworzącego raport w postaci wykresu liniowo-kolumnowego ........... 559 Pliki dla programu generującego raport w postaci wykresu punktowego........................ 562 5MQTQYKF
  • 5. Rozdział 4. CCYCPUQYCPG QDKGMV[ )6- W tym rozdziale opisano zaawansowane obiekty GTK+, słu ące do rozmieszczania i pre- zentacji innych elementów. Szczegółowo opisano tu następujące widgety: )VM6CDNG, )VM6TGG i )VM%6TGG, )VM(KZGF, )VM.C[QWV, )VM5ETQNNGF9KPFQY, )VM0QVGDQQM, )VM2CPGF. )VM6CDNG Obiekt )VM6CDNG działa na zasadzie siatki, w której mo na umieszczać inne obiekty. Mo - na powiedzieć, e )VM6CDNG jest połączeniem dwóch prostokątnych pojemników (pozio- mego i pionowego). Na rysunku 4.1 przedstawiono obiekt )VM6CDNG, który utworzymy w przykładowym programie (listing 4.1). W )VM6CDNG mo na umieścić obiekt w kilku komórkach (poziomo lub pionowo). Przykładowy program przedstawia działanie obiektu )VM6CDNG. Pokazano tu równie nowy trend tworzenia „programów w akcji”, gdzie w odpowiedzi na wystąpienie zda- rzeń tworzy się (lub niszczy) określone widgety. Nale y pamiętać, e jeśli będziemy ko- rzystać z tej metody w tworzonych aplikacjach, to jednocześnie będziemy musieli zna- leźć sposób na przechowanie danych, które mają być przekazane tworzonym na nowo obiektom. Rysunek 4.1 przedstawia okno utworzonej aplikacji, której kod źródłowy znajduje się w listingu 4.1.
  • 6. 128 Część I Szybkie wprowadzenie 4[UWPGM Uruchomiony przykładowy program .KUVKPI Prezentacja obiektu GtkTable KPENWFG IVMIVMJ )VM9KFIGV
  • 7. HTOAVCDNG )VM9KFIGV
  • 8. VDN
  • 9. 2QPKUG RT[EKUMK QUVCPC WOKGUEQPG Y )VM6CDNG
  • 10. Y MQNWOPKG 2KGTYU[ PKEJ DGFKG PCLFQYCN UKG Y TGFKG
  • 11. MQNWOP[ FTWIK Y TGFKG MQNWOP[ K VCM FCNGL
  • 13. EOFAA )VM9KFIGV
  • 14. EOFAA )VM9KFIGV
  • 15. EOFAA )VM9KFIGV
  • 16. EOFAA )VM9KFIGV
  • 17. EOFAA )VM9KFIGV
  • 18. EOFAA )VM9KFIGV
  • 19. EOFAA )VM9KFIGV
  • 20. EOFAA )VM9KFIGV
  • 21. EJMA XQKF FGUVTQ[AOCKP XQKF OCMGAVCDNGADWVVQPU XQKF CVVCEJAYKFIGVU XQKF EOFAAAENKEMGF XQKF EOFAAAENKEMGF XQKF EOFAAAENKEMGF XQKF EOFAAAENKEMGF XQKF EOFAAAENKEMGF XQKF EOFAAAENKEMGF XQKF EOFAAAENKEMGF XQKF EOFAAAENKEMGF IKPV OCKP IKPV CTIE IEJCT
  • 22. CTIX=? ] IVMAKPKV CTIE CTIX HTOAVCDNG IVMAYKPFQYAPGY )6-A9+019A612.'8'.
  • 23. Rozdział 4. Zaawansowane obiekty GTK+ 129 IVMAYKPFQYAUGVAVKVNG )6-A9+019 HTOAVCDNG 2TGGPVCELC VCDNKE[ QDKGMVQY IVMAUKIPCNAEQPPGEV )6-A1$,'%6 HTOAVCDNG FGUVTQ[ )6-A5+)0#.A(70% FGUVTQ[AOCKP 07.. OCMGAVCDNGADWVVQPU
  • 24. +PKELCNKCELC RT[EKUMQY W[EKGO YCTVQUEK FQO[UNP[EJ
  • 25.
  • 26. 5MQT[UVCO[ VW IVMAVCDNGACVVCEJAFGHCWNVU COKCUV
  • 27. HWPMELK CVVCEJAYKFIGVU Y EGNW FGOQPUVTCELK FKCNCPKC
  • 29. IVMAVCDNGACVVCEJAFGHCWNVU )6-A6#$.' VDN EOFAA IVMAVCDNGACVVCEJAFGHCWNVU )6-A6#$.' VDN EOFAA IVMAVCDNGACVVCEJAFGHCWNVU )6-A6#$.' VDN EOFAA IVMAVCDNGACVVCEJAFGHCWNVU )6-A6#$.' VDN EOFAA IVMAVCDNGACVVCEJAFGHCWNVU )6-A6#$.' VDN EOFAA IVMAVCDNGACVVCEJAFGHCWNVU )6-A6#$.' VDN EOFAA IVMAVCDNGACVVCEJAFGHCWNVU )6-A6#$.' VDN EOFAA IVMAVCDNGACVVCEJAFGHCWNVU )6-A6#$.' VDN EOFAA EJMA IVMAEJGEMADWVVQPAPGYAYKVJANCDGN 2T[EKUM Y[DQTW IVMAVCDNGACVVCEJAFGHCWNVU )6-A6#$.' VDN EJMA IVMAEQPVCKPGTACFF )6-A%106#+0'4 HTOAVCDNG VDN IVMAYKFIGVAUJQYACNN HTOAVCDNG IVMAOCKP TGVWTP _ XQKF FGUVTQ[AOCKP ] IVMAOCKPASWKV _ XQKF CVVCEJAYKFIGVU IKPV A126+105 IKPV A2#%-+0) ] IVMAVCDNGACVVCEJ )6-A6#$.' VDN EOFAA A126+105 A126+105 A2#%-+0) A2#%-+0) IVMAVCDNGACVVCEJ )6-A6#$.' VDN EOFAA A126+105 A126+105 A2#%-+0) A2#%-+0) IVMAVCDNGACVVCEJ )6-A6#$.' VDN EOFAA A126+105 A126+105 A2#%-+0) A2#%-+0) IVMAVCDNGACVVCEJ )6-A6#$.' VDN EOFAA A126+105 A126+105 A2#%-+0) A2#%-+0) IVMAVCDNGACVVCEJ )6-A6#$.' VDN EOFAA A126+105 A126+105 A2#%-+0) A2#%-+0) IVMAVCDNGACVVCEJ )6-A6#$.' VDN EOFAA A126+105 A126+105 A2#%-+0) A2#%-+0) IVMAVCDNGACVVCEJ )6-A6#$.' VDN EOFAA A126+105 A126+105 A2#%-+0) A2#%-+0)
  • 30. 130 Część I Szybkie wprowadzenie IVMAVCDNGACVVCEJ )6-A6#$.' VDN EOFAA A126+105 A126+105 A2#%-+0) A2#%-+0) IVMAVCDNGACVVCEJ )6-A6#$.' VDN EJMA A126+105 A126+105 A2#%-+0) A2#%-+0) _ XQKF OCMGAVCDNGADWVVQPU ] VDN IVMAVCDNGAPGY 647'
  • 31. 2CTCOGVT[ RQY[UGL HWPMELK VQ TGF[ MQNWOP[ QPCEGPKG LGFPQTQFPQUEK
  • 32. EOFAA IVMADWVVQPAPGYAYKVJANCDGN 9[RGNPKGPKG QDKGMVCOK IVMAUKIPCNAEQPPGEV )6-A1$,'%6 EOFAA ENKEMGF )6-A5+)0#.A(70% EOFAAAENKEMGF 07.. EOFAA IVMADWVVQPAPGYAYKVJANCDGN 7UVCYPQRELGP(+.. IVMAUKIPCNAEQPPGEV )6-A1$,'%6 EOFAA ENKEMGF )6-A5+)0#.A(70% EOFAAAENKEMGF 07.. EOFAA IVMADWVVQPAPGYAYKVJANCDGN 9[DKGT QRELG 5*4+0- IVMAUKIPCNAEQPPGEV )6-A1$,'%6 EOFAA ENKEMGF )6-A5+)0#.A(70% EOFAAAENKEMGF 07.. EOFAA IVMADWVVQPAPGYAYKVJANCDGN 9[DKGTP1RELGP':2#0 IVMAUKIPCNAEQPPGEV )6-A1$,'%6 EOFAA ENKEMGF )6-A5+)0#.A(70% EOFAAAENKEMGF 07.. EOFAA IVMADWVVQPAPGYAYKVJANCDGN 9[DKGTP1RELGP(+..PKP5*4+0- IVMAUKIPCNAEQPPGEV )6-A1$,'%6 EOFAA ENKEMGF )6-A5+)0#.A(70% EOFAAAENKEMGF 07.. EOFAA IVMADWVVQPAPGYAYKVJANCDGN 9[DKGTP1RELGP5*4+0-PKP':2#0 IVMAUKIPCNAEQPPGEV )6-A1$,'%6 EOFAA ENKEMGF )6-A5+)0#.A(70% EOFAAAENKEMGF 07.. EOFAA IVMADWVVQPAPGYAYKVJANCDGN 9[DKGTPQRELGP(+..PKP':2#0 IVMAUKIPCNAEQPPGEV )6-A1$,'%6 EOFAA ENKEMGF )6-A5+)0#.A(70% EOFAAAENKEMGF 07.. EOFAA IVMADWVVQPAPGYAYKVJANCDGN 9[DKGT QRELGP(+.. ':2#0 K 5*4+0- IVMAUKIPCNAEQPPGEV )6-A1$,'%6 EOFAA ENKEMGF )6-A5+)0#.A(70% EOFAAAENKEMGF 07.. EJMA IVMAEJGEMADWVVQPAPGYAYKVJANCDGN 2T[EKUM Y[DQTW _
  • 33. Rozdział 4. Zaawansowane obiekty GTK+ 131 XQKF EOFAAAENKEMGF ]
  • 34. 6W Y[MQT[UVCO[ RQ TC RKGTYU[ HWPMELG IVMAYKFIGVAFGUVTQ[
  • 35. 2Q PCEKUPKGEKW RT[EKUMW RTG W[VMQYPKMC DGFKGO[
  • 36. PKUE[E K VYQT[E QF PQYC ECNC VCDNKEG QDKGMVCOK
  • 37. /WUKO[ VCM RQUVCRKE DQ QDKGMV )VM6CDNG PKG RQUKCFC HWPMELK
  • 38.
  • 39. AUGVA
  • 40.
  • 41.
  • 42. 0CYGV IF[D[ VCMC KPUVTWMELC KUVPKCNC OQPC D[ K VCM Y[MQT[UVCE
  • 43. QOCYKCP[ URQUQD 9RKU[YCPKG RQFQDP[EJ HWPMELK FNC MCFGIQ RT[EKUMW
  • 44. LGUV RTQEGUGO OWFP[O CNG LGUNK UCOQFKGNPKG Y[MQPCO[ OKCP[
  • 45. TQOKGUEGPKC QDKGMVQY Y KPVGTHGLUKG VQ PCWE[O[ UKG CTCFCE
  • 46. RQYKGTEJPKC VCDNKE[ K DúFKGO[ OKGE PCF PKC RGNPC MQPVTQNG
  • 47. IVMAYKFIGVAFGUVTQ[ VDN OCMGAVCDNGADWVVQPU CVVCEJAYKFIGVU IVMAEQPVCKPGTACFF )6-A%106#+0'4 HTOAVCDNG VDN IVMAYKFIGVAUJQYACNN HTOAVCDNG _ XQKF EOFAAAENKEMGF ] IVMAYKFIGVAFGUVTQ[ VDN OCMGAVCDNGADWVVQPU CVVCEJAYKFIGVU )6-A(+.. IVMAEQPVCKPGTACFF )6-A%106#+0'4 HTOAVCDNG VDN IVMAYKFIGVAUJQYACNN HTOAVCDNG _ XQKF EOFAAAENKEMGF ] IVMAYKFIGVAFGUVTQ[ VDN OCMGAVCDNGADWVVQPU CVVCEJAYKFIGVU )6-A5*4+0- IVMAEQPVCKPGTACFF )6-A%106#+0'4 HTOAVCDNG VDN IVMAYKFIGVAUJQYACNN HTOAVCDNG _ XQKF EOFAAAENKEMGF ] IVMAYKFIGVAFGUVTQ[ VDN OCMGAVCDNGADWVVQPU CVVCEJAYKFIGVU )6-A':2#0 IVMAEQPVCKPGTACFF )6-A%106#+0'4 HTOAVCDNG VDN IVMAYKFIGVAUJQYACNN HTOAVCDNG _ XQKF EOFAAAENKEMGF ] IVMAYKFIGVAFGUVTQ[ VDN OCMGAVCDNGADWVVQPU CVVCEJAYKFIGVU )6-A(+.. ^ )6-A5*4+0- IVMAEQPVCKPGTACFF )6-A%106#+0'4 HTOAVCDNG VDN
  • 48. 132 Część I Szybkie wprowadzenie IVMAYKFIGVAUJQYACNN HTOAVCDNG _ XQKF EOFAAAENKEMGF ] IVMAYKFIGVAFGUVTQ[ VDN OCMGAVCDNGADWVVQPU CVVCEJAYKFIGVU )6-A5*4+0- ^ )6-A':2#0 IVMAEQPVCKPGTACFF )6-A%106#+0'4 HTOAVCDNG VDN IVMAYKFIGVAUJQYACNN HTOAVCDNG _ XQKF EOFAAAENKEMGF ] IVMAYKFIGVAFGUVTQ[ VDN OCMGAVCDNGADWVVQPU CVVCEJAYKFIGVU )6-A(+.. ^ )6-A':2#0 IVMAEQPVCKPGTACFF )6-A%106#+0'4 HTOAVCDNG VDN IVMAYKFIGVAUJQYACNN HTOAVCDNG _ XQKF EOFAAAENKEMGF ] IVMAYKFIGVAFGUVTQ[ VDN OCMGAVCDNGADWVVQPU CVVCEJAYKFIGVU )6-A5*4+0- ^ )6-A(+.. ^ )6-A':2#0 IVMAEQPVCKPGTACFF )6-A%106#+0'4 HTOAVCDNG VDN IVMAYKFIGVAUJQYACNN HTOAVCDNG _ )VM6TGG K )VM%6TGG Obiekty )VM6TGG i )VM%6TGG słu ą do prezentacji drzewa elementów. Litera „C” w na- zwie )VM%6TGG oznacza „kolumny” (C pochodzi od angielskiego słowa Columns); mo - na powiedzieć, e )VM%6TGG jest skrzy owaniem dwóch, znanych z VB kontrolek: kon- trolki prezentującej dane i kontrolki drzewa (rysunek 4.2, listing 4.2). W GTK+ obiekt )VM%QPVCKPGT jest obiektem nadrzędnym dla )VM.KUV, )VM%.KUV i )VM6TGG. )VM%6TGG po- chodzi od )VM%.KUV, ale podobny związek nie istnieje pomiędzy )VM6TGG i )VM.KUV. 4[UWPGM Drzewa elementów, czyli GtkTree i GtkCTree W tym programie porównano cechy i wygląd widgetów )VM6TGG (po lewej stronie okna) i )VM%6TGG (po prawej stronie okna). Główną ró nicą pomiędzy tymi obiektami jest fakt, e )VM%6TGG akceptuje tylko mapy pikselowe i tekst, a w )VM6TGG mo na umieścić dowol- ne widgety potomne.
  • 49. Rozdział 4. Zaawansowane obiekty GTK+ 133 .KUVKPI GtkTree i GtkCTree KPENWFG IVMIVMJ )VM9KFIGV
  • 50. HTOAVTGGU )VM9KFIGV
  • 52. EVTGGATKIJV )VM9KFIGV
  • 53. UWDVTGGAKVGO )VM9KFIGV
  • 54. UWDVTGGAKVGO )VM9KFIGV
  • 55. UWDVTGGAYKFIGVU XQKF FGUVTQ[AOCKP XQKF EOFAE[ENGANKPGAUV[NGAENKEMGF XQKF EOFAE[ENGAGZRCPFGTAENKEMGF IKPV OCKP IKPV CTIE IEJCT
  • 56. CTIX=? ] )VM9KFIGV
  • 59. XDQZATKIJV )VM9KFIGV
  • 61. NXNAKVGO )VM9KFIGV
  • 62. YKFIGVUAKVGO )VM9KFIGV
  • 65. EJGEMADQZAYKFIGV )VM9KFIGV
  • 67. KVGOAKVGOAKVGO )VM9KFIGV
  • 70. EJGEMADQZAKVGO )VM9KFIGV
  • 72. EOFAE[ENGAGZRCPFGT )VM%6TGG0QFG
  • 73. TQQVAPQFGA )VM%6TGG0QFG
  • 74. TQQVAPQFGA )VM%6TGG0QFG
  • 76. 2QPKGL YRKUGO[ PCINQYMK MQNWOP Y QDKGMEKG %VTGG
  • 77. 5GTQMQUE MQNWOP[ LGUV QMTGUNQPC RTG NKEDG NKVGT PCY[
  • 78. PCINQYMC C PKG RTG FCPG LCMKG CYKGTC
  • 79. IEJCT
  • 80. EQNWOPAVKVNGU=? ] 2Q[ELC +PHQTOCELC _ IEJCT
  • 81. TQQVAFCVC=? ] TQQV VGUV _ IEJCT
  • 82. TQQVAFCVC=? ] TQQV 6GP RQUKCFC YGN[ RQFTGFPG _ IEJCT
  • 83. TQQVAFCVC=? ] 2QFYGGN 2QFYGGN _ IVMAKPKV CTIE CTIX HTOAVTGGU IVMAYKPFQYAPGY )6-A9+019A612.'8'. IVMAYKPFQYAUGVAVKVNG )6-A9+019 HTOAVTGGU 2TGGPVCELC YKFIGVQY FTGY IVMAUKIPCNAEQPPGEV )6-A1$,'%6 HTOAVTGGU FGUVTQ[ )6-A5+)0#.A(70% FGUVTQ[AOCKP 07.. JDQZAOCKP IVMAJDQZAPGY 647' XDQZANGHV IVMAXDQZAPGY 647' XDQZATKIJV IVMAXDQZAPGY (#.5'
  • 84. )NQYPC TQPKEC RQOKGF[ )VM6TGG C )VM%6TGG
  • 85. LGUV VCM UCOQ LCM OKGF[ )VM.KUV C )VM%.KUV HCMV G
  • 87. 134 Część I Szybkie wprowadzenie
  • 88. C )VM%6TGG V[NMQ OCR[ RKMUGNQYG K VGMUV
  • 90. TGYQ PKG LGUV RT[FCVP[O QDKGMVGO LGUNK PKE PKG CYKGTC
  • 91. 0C UEGUEKG FQFCYCPKG PQY[EJ GNGOGPVQY FQ FTGYC LGUV DCTFQ RTQUVG
  • 92. NXNAKVGO IVMAVTGGAKVGOAPGYAYKVJANCDGN 2QKQO 'NGOGPV NXNAKVGO IVMAVTGGAKVGOAPGYAYKVJANCDGN 2QKQO 'NGOGPV IVMAVTGGACRRGPF )6-A64'' VTGGANGHV NXNAKVGO IVMAVTGGACRRGPF )6-A64'' VTGGANGHV NXNAKVGO
  • 93. 0C TCKG PCUG FTGYQ RT[RQOKPC DCTFKGL RQNG NKUV[
  • 94. CNGV[ FTGYC DGFC DCTFKGL YKFQEPG IF[ WOKGUEKO[ Y PKO
  • 95. RQFFTGYQ 2QFFTGYC FQFCLG UKG VTQEJG KPCEGL QF YGNQY
  • 96. K YUMCPKMQY MVQTG CRGYPKCLC UVTWMVWTG RQFFTGYC
  • 97.
  • 98. 0KG DGFKGO[ WOKGUECE FTGYC Y FTGYKG NGE FQFCO[
  • 100. UWDVTGGAKVGO IVMAVTGGAPGY KVGOAKVGO IVMAVTGGAKVGOAPGYAYKVJANCDGN 2QKQO 'NGOGPV IVMAVTGGACRRGPF )6-A64'' UWDVTGGAKVGO KVGOAKVGO IVMAVTGGAKVGOAUGVAUWDVTGG )6-A64''A+6'/ NXNAKVGO UWDVTGGAKVGO
  • 101. 6GTC VTGDC LCYPKG RQMCCE GNGOGPV[ RQFFTGYC
  • 102.
  • 103. ,GUNK W[VMQYPKM CPCE[ GNGOGPV[ RQFFTGYC C PCUVGRPKG YKPKG
  • 104. LGIQ ICNC VQ VG GNGOGPV[ PCFCN DGFC CPCEQPG
  • 105. IVMAYKFIGVAUJQY KVGOAKVGO UWDVTGGAKVGO IVMAVTGGAPGY KVGOAKVGOAKVGO IVMAVTGGAKVGOAPGYAYKVJANCDGN 2QKQO 'NGOGPV IVMAVTGGACRRGPF )6-A64'' UWDVTGGAKVGO KVGOAKVGOAKVGO IVMAVTGGAKVGOAUGVAUWDVTGG )6-A64''A+6'/ KVGOAKVGO UWDVTGGAKVGO IVMAYKFIGVAUJQY KVGOAKVGOAKVGO YKFIGVUAKVGO IVMAVTGGAKVGOAPGYAYKVJANCDGN 9KFIGV[ IVMAVTGGACRRGPF )6-A64'' VTGGANGHV YKFIGVUAKVGO UWDVTGGAYKFIGVU IVMAVTGGAPGY IVMAVTGGAKVGOAUGVAUWDVTGG )6-A64''A+6'/ YKFIGVUAKVGO UWDVTGGAYKFIGVU
  • 107.
  • 109.
  • 110. Rozdział 4. Zaawansowane obiekty GTK+ 135 NCDGNAKVGO IVMAVTGGAKVGOAPGY NCDGNAYKFIGV IVMANCDGNAPGY 6Q LGUV GV[MKGVC IVMAEQPVCKPGTACFF )6-A%106#+0'4 NCDGNAKVGO NCDGNAYKFIGV IVMAVTGGACRRGPF )6-A64'' UWDVTGGAYKFIGVU NCDGNAKVGO IVMAYKFIGVAUJQY NCDGNAYKFIGV IVMAYKFIGVAUJQY NCDGNAKVGO
  • 111. 0CUVGRPKG WOKGUEKO[ Y FTGYKG RT[EKUM
  • 112. DWVVQPAKVGO IVMAVTGGAKVGOAPGY DWVVQPAYKFIGV IVMADWVVQPAPGYAYKVJANCDGN 6Q LGUV RT[EKUM IVMAEQPVCKPGTACFF )6-A%106#+0'4 DWVVQPAKVGO DWVVQPAYKFIGV IVMAVTGGACRRGPF )6-A64'' UWDVTGGAYKFIGVU DWVVQPAKVGO IVMAYKFIGVAUJQY DWVVQPAYKFIGV IVMAYKFIGVAUJQY DWVVQPAKVGO
  • 113. # VGTC RQNG Y[DQTW
  • 114. EJGEMADQZAKVGO IVMAVTGGAKVGOAPGY EJGEMADQZAYKFIGV IVMAEJGEMADWVVQPAPGYAYKVJANCDGN 6Q LGUV RQNG Y[DQTW IVMAEQPVCKPGTACFF )6-A%106#+0'4 EJGEMADQZAKVGO EJGEMADQZAYKFIGV IVMAVTGGACRRGPF )6-A64'' UWDVTGGAYKFIGVU EJGEMADQZAKVGO IVMAYKFIGVAUJQY EJGEMADQZAYKFIGV IVMAYKFIGVAUJQY EJGEMADQZAKVGO
  • 115. 2QTQYPCLO[ VQ FTGYGO %6TGG
  • 116. EVTGGATKIJV IVMAEVTGGAPGYAYKVJAVKVNGU EQNWOPAVKVNGU TQQVAPQFGA IVMAEVTGGAKPUGTVAPQFG )6-A%64'' EVTGGATKIJV 07.. 07.. TQQVAFCVC 07.. 07.. 07.. 07.. (#.5' 647' TQQVAPQFGA IVMAEVTGGAKPUGTVAPQFG )6-A%64'' EVTGGATKIJV 07.. 07.. TQQVAFCVC 07.. 07.. 07.. 07.. (#.5' 647' TQQVAPQFGA IVMAEVTGGAKPUGTVAPQFG )6-A%64'' EVTGGATKIJV TQQVAPQFGA 07.. TQQVAFCVC 07.. 07.. 07.. 07.. (#.5' 647'
  • 117. -QPUVTWMELC FTGYC %6TGG LGUV PCEPKG RTQUVUC
  • 118. 9[UVCTE[ WVYQT[E LGFGP GIGORNCT VGIQ YKFIGVW C PCUVGRPKG
  • 119. VYQT[E YGN[ K NCE[E LG YGNCOK Y FTGYKG 1VQ
  • 120. RCTCOGVT[ FNC HWPMELK IVMAEVTGGAKPUGTVAPQFG
  • 121.
  • 122. EVTGG 1DKGMV %6TGG
  • 123. RCTGPV 1PCEC YGGN PCFTGFP[ 07.. FNC YGNC INQYPGIQ
  • 124. UKDNKPI 1PCEC YGGN UKQUVTCP[ 07.. VQ CMQPEGPKG ICNGK
  • 125. VGZV 6CDNKEC YCTVQUEKCOK RQUEGIQNP[EJ MQNWOP
  • 126. NKEDC YCTVQUEK LGUV TQYPC NKEDKG MQNWOP
  • 128. URCEKPI .KEDC RKMUGNK RQOKGF[ UVTWMVWTC FTGYC
  • 131. DKVOCUMAENQUGF 1FRQYKGFPKG KMQP[ Y[UYKGVNCPG
  • 132. RKZOCRAQRGPGF IF[ YGGN LGUV TQYKPKGV[ NWD YKPKGV[
  • 134. KUANGCH 9CTVQUE NQIKEPC QMTGUNCLCEC E[ GNGOGPV PKG LGUV YGNGO
  • 135. 136 Część I Szybkie wprowadzenie
  • 136. 647' QPCEC G GNGOGPV PKG CYKGTC YGNQY RQFTGFP[EJ
  • 137. PKG OQPC VCO WOKGUEKE CFP[EJ YGNQY RQFTGFP[EJ
  • 138. GZRCPFGF 9CTVQUE NQIKEPC QMTGUNCLCEC E[ FCP[ YGGN
  • 140.
  • 141. EOFAE[ENGANKPGAUV[NG IVMADWVVQPAPGYAYKVJANCDGN 5V[NG NKPKK IVMAUKIPCNAEQPPGEV )6-A1$,'%6 EOFAE[ENGANKPGAUV[NG ENKEMGF )6-A5+)0#.A(70% EOFAE[ENGANKPGAUV[NGAENKEMGF 07.. EOFAE[ENGAGZRCPFGT IVMADWVVQPAPGYAYKVJANCDGN 5V[NG TQYKLCE[ IVMAUKIPCNAEQPPGEV )6-A1$,'%6 EOFAE[ENGAGZRCPFGT ENKEMGF )6-A5+)0#.A(70% EOFAE[ENGAGZRCPFGTAENKEMGF 07.. IVMADQZARCEMAUVCTV )6-A$1: XDQZANGHV VTGGANGHV 647' 647' IVMADQZARCEMAUVCTV )6-A$1: XDQZATKIJV EVTGGATKIJV 647' 647' IVMADQZARCEMAUVCTV )6-A$1: XDQZATKIJV EOFAE[ENGANKPGAUV[NG 647' (#.5' IVMADQZARCEMAUVCTV )6-A$1: XDQZATKIJV EOFAE[ENGAGZRCPFGT 647' (#.5' IVMADQZARCEMAUVCTV )6-A$1: JDQZAOCKP XDQZANGHV 647' 647' IVMADQZARCEMAUVCTV )6-A$1: JDQZAOCKP XDQZATKIJV 647' 647' IVMAEQPVCKPGTACFF )6-A%106#+0'4 HTOAVTGGU JDQZAOCKP IVMAYKFIGVAUJQYACNN HTOAVTGGU IVMAOCKP TGVWTP _ XQKF FGUVTQ[AOCKP ] IVMAOCKPASWKV _ XQKF EOFAE[ENGANKPGAUV[NGAENKEMGF ] UVCVKE IKPV NKPGAUV[NG KH NKPGAUV[NG NKPGAUV[NG GNUG NKPGAUV[NG UYKVEJ NKPGAUV[NG ] ECUG IVMAEVTGGAUGVANKPGAUV[NG )6-A%64'' EVTGGATKIJV )6-A%64''A.+0'5A010' DTGCM ECUG IVMAEVTGGAUGVANKPGAUV[NG )6-A%64'' EVTGGATKIJV )6-A%64''A.+0'5A51.+ DTGCM ECUG IVMAEVTGGAUGVANKPGAUV[NG )6-A%64'' EVTGGATKIJV )6-A%64''A.+0'5A166' DTGCM
  • 142. Rozdział 4. Zaawansowane obiekty GTK+ 137 ECUG IVMAEVTGGAUGVANKPGAUV[NG )6-A%64'' EVTGGATKIJV )6-A%64''A.+0'5A6#$$' DTGCM FGHCWNV IARTKPV 6C NKPKC PKG RQYKPPC D[E YKFQEPC DTGCM _ _ XQKF EOFAE[ENGAGZRCPFGTAENKEMGF ] UVCVKE IKPV GZRCPFGTAUV[NG KH GZRCPFGTAUV[NG GZRCPFGTAUV[NG GNUG GZRCPFGTAUV[NG UYKVEJ GZRCPFGTAUV[NG ] ECUG IVMAEVTGGAUGVAGZRCPFGTAUV[NG )6-A%64'' EVTGGATKIJV )6-A%64''A':2#0'4A010' DTGCM ECUG IVMAEVTGGAUGVAGZRCPFGTAUV[NG )6-A%64'' EVTGGATKIJV )6-A%64''A':2#0'4A537#4' DTGCM ECUG IVMAEVTGGAUGVAGZRCPFGTAUV[NG )6-A%64'' EVTGGATKIJV )6-A%64''A':2#0'4A64+#0).' DTGCM ECUG IVMAEVTGGAUGVAGZRCPFGTAUV[NG )6-A%64'' EVTGGATKIJV )6-A%64''A':2#0'4A%+4%7.#4 DTGCM FGHCWNV IARTKPV 6C NKPKC PKG RQYKPPC D[E YKFQEPC DTGCM _ _ )VM(KZGF Obiekt )VM(KZGF jest obiektem docenianym szczególnie przez programistów wykorzy- stujących wcześniej VB lub VC++ ze względu na jedną, wa ną właściwość. Otó w tym obiekcie mo emy umieszczać inne widgety bezpośrednio na jego powierzchni (pokrytej siatką, ułatwiającą lokalizację rozmieszczanych widgetów — rysunek 4.3). Nie korzy- stamy tu z obiektów-pojemników, których stosowanie jest główną własnością GTK+. Większość programistów zamiast tego obiektu wybierze )VM.C[QWV, ze względu na jego większe mo liwości (obiekt zaprezentowano w kolejnej sekcji, „)VM.C[QWV”). Program umieszczony w listingu 4.3 jest bardzo prosty. Wykorzystano w nim obiekt )VM(KZGF i jeden przycisk, który po ka dym kliknięciu zmienia swoją pozycję na po- wierzchni okna )VM(KZGF. Porównajmy )VM(KZGF z obiektem )VM.C[QWV przed podjęciem decyzji, który z nich lepiej nadaje się do wykorzystania w naszych aplikacjach.
  • 143. 138 Część I Szybkie wprowadzenie 4[UWPGM Obiekt GtkFixed .KUVKPI Prezentacja GtkFixed KPENWFG IVMIVMJ KPENWFG UVFNKDJ
  • 144. $KDNKQVGMC UVFNKDJ LGUV RQVTGDPC FQ
  • 145. Y[PCECPKC YCTVQUEK NQUQY[EJ Y HWPMELK YTQVPGL 9CTVQUEK
  • 146. NQUQYG DGFC RQVTGDPC FQ RTGOKGUECPKC RT[EKUMW RQ
  • 149. HTOAHKZGF )VM9KFIGV
  • 150. HKZGFAOCKP )VM9KFIGV
  • 151. EOF XQKF FGUVTQ[AOCKP XQKF EOFAENKEMGF IKPV OCKP IKPV CTIE IEJCT
  • 152. CTIX=? ] IVMAKPKV CTIE CTIX HTOAHKZGF IVMAYKPFQYAPGY )6-A9+019A612.'8'. IVMAYKPFQYAUGVAVKVNG )6-A9+019 HTOAHKZGF 2TGGPVCELC QDKGMVW )VM(KZGF IVMAUKIPCNAEQPPGEV )6-A1$,'%6 HTOAHKZGF FGUVTQ[ )6-A5+)0#.A(70% FGUVTQ[AOCKP 07.. HKZGFAOCKP IVMAHKZGFAPGY
  • 153. )VM(KZGF LGUV QDKGMVGO RTQUV[O Y W[EKW 0CNG[
  • 154. RQFCE YURQNTGFPG RQNQGPKC MCFGIQ YKFIGVW RQVQOPGIQ
  • 155. WOKGUECPGIQ PC RQYKGTEJPK )VM(KZGF #VT[DWV[ HKNN
  • 156. GZRCPF RCFFKPI KVF UC VW DGW[VGEPG QDKGMV[
  • 157. RQVQOPG WOKGUEQPG PC RQYKGTEJPK )VM(KZGF DGFC FQO[UNPKG
  • 158. CLOQYCE PCLOPKGLU[ QDUCT RQYCNCLCE[ PC KEJ Y[UYKGVNGPKG
  • 159. 6CM UCOQ CEJQYC UKG UCO QDKGMV )VM(KZGF MVQT[ DGFKG FQO[UNPKG
  • 160. CLOQYCN OKPKOCNPC RQYKGTEJPKG GMTCPW RQVTGDPC FQ Y[UYKGVNGPKC
  • 161. YU[UVMKEJ LGIQ QDKGMVQY ,GUNK YKFIGV RQVQOP[ QUVCPKG RTGUWPKGV[
  • 162. RQC DKGCE[ QDUCT )VM(KZGF VQ YKFIGV VGP OKGPK QFRQYKGFPKQ
  • 163. UYQLG Y[OKCT[ VCM CD[ RTGUWPKGV[ QDKGMV PCFCN D[N YKFQEP[
  • 164. ,GUNK QDKGMV RQVQOP[ QUVCPKG RQPKGL WOKGUEQP[ Y UTQFMW
  • 165. QMPC INQYPGIQ )VM(KZGF PKG OPKGLU[ CWVQOCV[EPKG
  • 167.
  • 168.
  • 169. /QG VQ RTQYCFKE FQ FKYP[EJ K PKGQEGMKYCP[EJ CEJQYCP
  • 170. Rozdział 4. Zaawansowane obiekty GTK+ 139
  • 171. QMPC INQYPGIQ Y VTCMEKG FKCNCPKC RTQITCOW CNQO[
  • 172. RT[MNCFQYC RQ[ELG QDKGMVW 2TGUWPO[ QDKGMV PC RQ[ELG
  • 173. QMPQ INQYPG FQUVQUWLG UKG FQ PQYGIQ RQNQGPKC )F[ OKGPKO[ RQNQGPKG
  • 174. QDKGMVW PC QMPQ PKG OPKGLU[ UKG )F[ LGFPCM RTGPKGUKGO[
  • 175. QDKGMV PC VQ QMPQ INQYPG PQY OKGPK UYQL TQOKCT VCM CD[
  • 176. Y[UYKGVNCP[ QDKGMV OKGUEKN UKG PC LGIQ RQYKGTEJPK
  • 177. 1MPQ INQYPG LGUV T[UQYCPG RQPQYPKG C MCF[O TCGO IF[ QDKGMV[ PCNGCEG FQ
  • 178. PKGIQ QUVCPC WOKGUEQPG RQC RQYKGTEJPKC )VM(KZGF 1MPQ INQYPG MVQTG
  • 179. RKGTYQVPKG D[NQ MYCFTCVGO OQG UVCE UKG Y RGYP[EJ RT[RCFMCEJ PR
  • 180. DCTFQ EKGPMKO K FNWIKO RTQUVQMCVGO
  • 181.
  • 182. %JQè )VM(KZGF LGUV DCTFQ NCVY[ Y CUVQUQYCPKW
  • 184. 2TGF FQMQPCPKGO Y[DQTW WNWDKQPGIQ QMPC URTCYFO[
  • 185. YCF[ K CNGV[ MCFGIQ PKEJ )VM(KZGF K )VM.C[QWV
  • 186. EOF IVMADWVVQPAPGYAYKVJANCDGN 2T[EKUM IVMAUKIPCNAEQPPGEV )6-A1$,'%6 EOF ENKEMGF )6-A5+)0#.A(70% EOFAENKEMGF 07.. IVMAHKZGFARWV )6-A(+:' HKZGFAOCKP EOF
  • 187. 6TGEKO K EYCTV[O RCTCOGVTGO RQY[UGL HWPMELK
  • 188. UC QFRQYKGFPKQ QFNGINQUE QF NGYGL MTCYGFK QMPC Y RKMUGNCEJ
  • 189. K QFNGINQUE QF IQTPGL MTCYGFK QMPC TQYPKG
  • 191. IVMAEQPVCKPGTACFF )6-A%106#+0'4 HTOAHKZGF HKZGFAOCKP IVMAYKFIGVAUJQYACNN HTOAHKZGF IVMAOCKP TGVWTP _ XQKF FGUVTQ[AOCKP ] IVMAOCKPASWKV _ XQKF EOFAENKEMGF ] IKPV ZARQU [ARQU ZARQU TCPF [ARQU TCPF
  • 192. 6W IGPGTWLGO[ NKED[ NQUQYG Y CMTGUKG QF FQ
  • 193. MVQTG RQUNWC PCO LCMQ PQYG NQMCNKCELG RT[EKUMW
  • 194. FQ] ZARQU ZARQU _ YJKNG ZARQU
  • 195. 140 Część I Szybkie wprowadzenie FQ] [ARQU [ARQU _ YJKNG [ARQU IVMAHKZGFAOQXG )6-A(+:' HKZGFAOCKP )6-A9+)'6 EOF ZARQU [ARQU _ )VM.C[QWV )VM.C[QWV ma podobne właściwości, co )VM(KZGF, ale umo liwia wykorzystanie więk- szej powierzchni dla widgetów potomnych od powierzchni wymaganej do ich wyświe- tlenia. W tym obiekcie, zamiast korzystać z niszczenia i ponownego tworzenia okna, mamy do dyspozycji funkcje
  • 197. i
  • 198. AVJCYA
  • 199. (opisane w listingu 4.4). Na rysun- ku 4.4 przedstawiono wynik działania programu. 4[UWPGM Prezentacja działania GtkLayout Aby uwidocznić podobieństwa i ró nice pomiędzy kontrolkami )VM(KZGF i )VM.C[QWV, listing 4.4 jest bardzo podobny do listingu 4.3. Najlepiej oba programy skompilować i uruchomić, a następnie wybrać bardziej odpowiedni dla danego zastosowania obiekt. .KUVKPI Prezentacja GtkLayout KPENWFG IVMIVMJ KPENWFG UVFNKDJ )VM9KFIGV
  • 200. HTOANC[QWV )VM9KFIGV
  • 201. NC[QWVAOCKP )VM9KFIGV
  • 202. EOF XQKF FGUVTQ[AOCKP XQKF EOFAENKEMGF IKPV OCKP IKPV CTIE IEJCT
  • 203. CTIX=? ] IVMAKPKV CTIE CTIX HTOANC[QWV IVMAYKPFQYAPGY )6-A9+019A612.'8'. IVMAYKPFQYAUGVAVKVNG )6-A9+019 HTOANC[QWV 2TGGPVCELC QDKGMVW )VM.C[QWV IVMAUKIPCNAEQPPGEV )6-A1$,'%6 HTOANC[QWV FGUVTQ[ )6-A5+)0#.A(70% FGUVTQ[AOCKP 07..
  • 204. Rozdział 4. Zaawansowane obiekty GTK+ 141 NC[QWVAOCKP IVMANC[QWVAPGY 07.. 07..
  • 205. COKCUV Y[YQN[YCE HWPMELG IVMANC[QWVAPGY MVQTC LCMQ RCTCOGVTQY
  • 206. RQVTGDWLG QDKGMVQY TGIWNCE[LP[EJ RQKQO[EJ K RKQPQY[EJ
  • 207. OQPC UMQT[UVCE RQRTGFPKGIQ NKUVKPIW
  • 208. K Y KPUVTWMELCEJ VYQTCE[EJ QDKGMV[ COKGPKE
  • 209. UNQYMQ HKZGF PC NC[QWV RTQITCO RQYKPKGP CFKCNCE
  • 210.
  • 211. 6GP RTQITCO LGUV RQFQDP[ FQ RQRTGFPKGIQ CNG RQUKCFC
  • 214. EOF IVMADWVVQPAPGYAYKVJANCDGN 2T[EKUM IVMAUKIPCNAEQPPGEV )6-A1$,'%6 EOF ENKEMGF )6-A5+)0#.A(70% EOFAENKEMGF 07.. IVMANC[QWVARWV )6-A.#;176 NC[QWVAOCKP EOF IVMAEQPVCKPGTACFF )6-A%106#+0'4 HTOANC[QWV NC[QWVAOCKP IVMAYKFIGVAUJQYACNN HTOANC[QWV IVMAOCKP TGVWTP _ XQKF FGUVTQ[AOCKP ] IVMAOCKPASWKV _ XQKF EOFAENKEMGF ] IKPV ZARQU [ARQU ZARQU TCPF [ARQU TCPF
  • 215. 6W IGPGTWLGO[ NKED[ NQUQYG Y CMTGUKG QF FQ
  • 216. MVQTG RQUNWC PCO LCMQ PQYG NQMCNKCELG RT[EKUMW
  • 217. FQ] ZARQU ZARQU _ YJKNG ZARQU FQ] [ARQU [ARQU _ YJKNG [ARQU
  • 218. 1VQ PCLYKGMUC TQPKEC RQOKGF[ )VM(KZGF C )VM.C[QWV
  • 219. COKCUV T[UQYCE QF PQYC QMPQ YTC LGIQ GNGOGPVCOK NGRKGL
  • 220. CDNQMQYCE LG C RQ WRTGFPKO RTGOKGUEGPKW LGIQ QDKGMVQY
  • 221. QFDNQMQYCE ,GUV VQ UEGIÎNPKG RT[FCVPG RT[ YKGNW QDKGMVCEJ
  • 223. 142 Część I Szybkie wprowadzenie IVMANC[QWVAHTGGG )6-A.#;176 NC[QWVAOCKP IVMANC[QWVAOQXG )6-A.#;176 NC[QWVAOCKP )6-A9+)'6 EOF ZARQU [ARQU IVMANC[QWVAVJCY )6-A.#;176 NC[QWVAOCKP _ )VM5ETQNNGF9KPFQY Obiekt )VM5ETQNNGF9KPFQY jest pojemnikiem, w którym mo na umieścić inne widgety. Okno to posiada paski przewijania. Mo na je zaimplementować równie w innych wid- getach, które nie posiadają tych pasków. Dzięki temu na jednym ekranie mo na umie- ścić kilka okienek, w których — za pomocą pasków przewijania — mo na wybierać wyświetlany obszar z po ądanymi obiektami. Na rysunku 4.5 przedstawiono okno wy- generowane przez program, którego kod źródłowy znajduje się w listingu 4.5. 4[UWPGM Obiekt GtkScrolledWindow W programie prezentującym okno przewijane umieściliśmy dwa przyciski, dzięki któ- rym mo emy wybrać odpowiednie ustawienia. Jeden z nich słu y do wybrania opcji always, czyli stałego wyświetlania pasków przewijania (niezale nie od tego, czy jest to potrzebne, czy nie), a drugi — do ustawienia opcji auto, czyli wyświetlania pasków tyl- ko wtedy, gdy widget w oknie głównym nie mieści się na wyświetlanym obszarze. Na- le y wiedzieć, e odpowiednich ustawień mo na dokonać dla ka dego paska osobno. Na przykład dla paska pionowego mo na wybrać właściwość auto, a dla poziomego — always. W naszym programie będziemy wybierać takie same właściwości dla obydwu pasków. .KUVKPI Prezentacja GtkScrolledDemo KPENWFG IVMIVMJ )VM9KFIGV
  • 224. HTOAUETQNNGF )VM9KFIGV
  • 225. UETQNNGFAOCKP )VM9KFIGV
  • 226. HKZGFAOCKP )VM9KFIGV
  • 228. EOFAUGVARQNKE[ACNYC[U XQKF FGUVTQ[AOCKP XQKF EOFAUGVARQNKE[ACWVQAENKEMGF XQKF EOFAUGVARQNKE[ACNYC[UAENKEMGF
  • 229. Rozdział 4. Zaawansowane obiekty GTK+ 143 IKPV OCKP IKPV CTIE IEJCT
  • 230. CTIX=? ] IVMAKPKV CTIE CTIX HTOAUETQNNGF IVMAYKPFQYAPGY )6-A9+019A612.'8'. IVMAYKPFQYAUGVAVKVNG )6-A9+019 HTOAUETQNNGF 2TGGPVCELC QMPC RCUMCOK RTGYKLCPKC
  • 231. 0CNG[ CWYC[E G PKG RQFCLCE RQECVMQY[EJ TQOKCTQY
  • 232. QMPC ICFCO[ UKG PC VQ CD[ QMPQ CLGNQ DCTFQ OCNC
  • 233. RQYKGTEJPKG #D[ Y[UYKGVNKE QD[FYC RT[EKUMK VTGDC
  • 234. DGFKG OKGPKE TQOKCT[ QMPC INQYPGIQ 2QMCGO[ VW TQYPKG
  • 235. FYC URQUQD[ Y[UYKGVNCPKC RCUMQY RTGYKLCPKC
  • 236. IVMAUKIPCNAEQPPGEV )6-A1$,'%6 HTOAUETQNNGF FGUVTQ[ )6-A5+)0#.A(70% FGUVTQ[AOCKP 07.. UETQNNGFAOCKP IVMAUETQNNGFAYKPFQYAPGY 07.. 07.. HKZGFAOCKP IVMAHKZGFAPGY EOFAUGVARQNKE[ACWVQ IVMADWVVQPAPGYAYKVJANCDGN 2CUMK Y[UYKGVNCPG Y TCKG RQVTGD[ IVMAUKIPCNAEQPPGEV )6-A1$,'%6 EOFAUGVARQNKE[ACWVQ ENKEMGF )6-A5+)0#.A(70% EOFAUGVARQNKE[ACWVQAENKEMGF 07.. EOFAUGVARQNKE[ACNYC[U IVMADWVVQPAPGYAYKVJANCDGN 2CUMK CYUG YKFQEPG IVMAUKIPCNAEQPPGEV )6-A1$,'%6 EOFAUGVARQNKE[ACNYC[U ENKEMGF )6-A5+)0#.A(70% EOFAUGVARQNKE[ACNYC[UAENKEMGF 07.. IVMAHKZGFARWV )6-A(+:' HKZGFAOCKP EOFAUGVARQNKE[ACWVQ IVMAHKZGFARWV )6-A(+:' HKZGFAOCKP EOFAUGVARQNKE[ACNYC[U IVMAUETQNNGFAYKPFQYACFFAYKVJAXKGYRQTV )6-A5%41..'A9+019 UETQNNGFAOCKP HKZGFAOCKP IVMAEQPVCKPGTACFF )6-A%106#+0'4 HTOAUETQNNGF UETQNNGFAOCKP IVMAYKFIGVAUJQYACNN HTOAUETQNNGF IVMAOCKP TGVWTP _ XQKF FGUVTQ[AOCKP ] IVMAOCKPASWKV _ XQKF EOFAUGVARQNKE[ACWVQAENKEMGF ] IVMAUETQNNGFAYKPFQYAUGVARQNKE[ )6-A5%41..'A9+019 UETQNNGFAOCKP )6-A21.+%;A#761/#6+% )6-A21.+%;A#761/#6+%
  • 237. 144 Część I Szybkie wprowadzenie _ XQKF EOFAUGVARQNKE[ACNYC[UAENKEMGF ]
  • 238. 6Q LGUV FQO[UNPG CEJQYCPKG UKG YKFIGVW
  • 239. IVMAUETQNNGFAYKPFQYAUGVARQNKE[ )6-A5%41..'A9+019 UETQNNGFAOCKP )6-A21.+%;A#.9#;5 )6-A21.+%;A#.9#;5 _ )VM0QVGDQQM Obiekt )VM0QVGDQQM jest odpowiednikiem kontrolki nazywanej przez programistów VB „kontrolką zakładek”. Taka kontrolka umo liwia egzystencję wielu obiektów na jednej „powierzchni u ytkowej”. Ka da zakładka oznacza osobną stronę, na której mo na umie- ścić dowolne obiekty kontrolne. W danej chwili mo na wyświetlić jedną stronę, a inne w tym czasie pozostaną ukryte. Okno z główną zakładką aplikacji pokazano na rysunku 4.6, a odpowiedni kod źródło- wy w listingu 4.6. Zwróćmy uwagę na mo liwość dynamicznego dodawania kolejnych stron (w zasadzie mo na napisać program, w którym mo na dodawać równie inne wid- gety w trakcie jego działania). 4[UWPGM Uruchomiony program prezentujący działanie GtkNotebook .KUVKPI Program prezentujący obiekt GtkPaned KPENWFG IVMIVMJ )VM9KFIGV
  • 240. HTOAPQVGDQQM )VM9KFIGV
  • 241. PQVGDQQMAOCKP )VM9KFIGV
  • 242. HKZGFARCIG )VM9KFIGV
  • 243. XDQZARCIG XQKF FGUVTQ[AOCKP XQKF EOFATQVCVGAVCDUAENKEMGF XQKF EOFAUGVAVCDUAJQOQIGPGQWUAENKEMGF XQKF EOFAUGVAVCDUAJGVGTQIGPGQWUAENKEMGF XQKF EOFACFFARCIGAENKEMGF XQKF EOFAIGVARCIGAKPFGZAENKEMGF XQKF PQVGDQQMAUYKVEJARCIG IKPV OCKP IKPV CTIE IEJCT
  • 244. CTIX=? ] )VM9KFIGV
  • 246. Rozdział 4. Zaawansowane obiekty GTK+ 145 )VM9KFIGV
  • 252. NDNAVCD IVMAKPKV CTIE CTIX HTOAPQVGDQQM IVMAYKPFQYAPGY )6-A9+019A612.'8'. IVMAYKPFQYAUGVAVKVNG )6-A9+019 HTOAPQVGDQQM 2TGGPVCELC QMPC 0QVGDQQM IVMAUKIPCNAEQPPGEV )6-A1$,'%6 HTOAPQVGDQQM FGUVTQ[ )6-A5+)0#.A(70% FGUVTQ[AOCKP 07.. PQVGDQQMAOCKP IVMAPQVGDQQMAPGY IVMAUKIPCNAEQPPGEV )6-A1$,'%6 PQVGDQQMAOCKP UYKVEJRCIG )6-A5+)0#.A(70% PQVGDQQMAUYKVEJARCIG 07..
  • 253. 5VTQPC RKGTYUC Y PQVCVPKMW
  • 254. HKZGFARCIG IVMAHKZGFAPGY NDNAVCD IVMANCDGNAPGY 2KGTYUC CMNCFMC EOFATQVCVGAVCDU IVMADWVVQPAPGYAYKVJANCDGN 4QVCELC CMNCFGM IVMAUKIPCNAEQPPGEV )6-A1$,'%6 EOFATQVCVGAVCDU ENKEMGF )6-A5+)0#.A(70% EOFATQVCVGAVCDUAENKEMGF 07.. EOFAUGVAVCDUAJQOQIGPGQWU IVMADWVVQPAPGYAYKVJANCDGN 6CMC UCOC YKGNMQUE CMNCFGM IVMAUKIPCNAEQPPGEV )6-A1$,'%6 EOFAUGVAVCDUAJQOQIGPGQWU ENKEMGF )6-A5+)0#.A(70% EOFAUGVAVCDUAJQOQIGPGQWUAENKEMGF 07.. EOFAUGVAVCDUAJGVGTQIGPGQWU IVMADWVVQPAPGYAYKVJANCDGN 4QPC YKGNMQUE CMNCFGM IVMAUKIPCNAEQPPGEV )6-A1$,'%6 EOFAUGVAVCDUAJGVGTQIGPGQWU ENKEMGF )6-A5+)0#.A(70% EOFAUGVAVCDUAJGVGTQIGPGQWUAENKEMGF 07.. IVMAHKZGFARWV )6-A(+:' HKZGFARCIG EOFATQVCVGAVCDU IVMAHKZGFARWV )6-A(+:' HKZGFARCIG EOFAUGVAVCDUAJQOQIGPGQWU IVMAHKZGFARWV )6-A(+:' HKZGFARCIG EOFAUGVAVCDUAJGVGTQIGPGQWU IVMAPQVGDQQMACRRGPFARCIG )6-A016'$11- PQVGDQQMAOCKP HKZGFARCIG NDNAVCD
  • 255. 5VTQPC
  • 256. XDQZARCIG IVMAXDQZAPGY 647' EOFACFFARCIG IVMADWVVQPAPGYAYKVJANCDGN QFCL UVTQPG IVMAUKIPCNAEQPPGEV )6-A1$,'%6 EOFACFFARCIG ENKEMGF )6-A5+)0#.A(70% EOFACFFARCIGAENKEMGF 07..
  • 257. 146 Część I Szybkie wprowadzenie EOFAIGVARCIGAKPFGZ IVMADWVVQPAPGYAYKVJANCDGN 2QDKGT KPFGMU UVTQP[ IVMAUKIPCNAEQPPGEV )6-A1$,'%6 EOFAIGVARCIGAKPFGZ ENKEMGF )6-A5+)0#.A(70% EOFAIGVARCIGAKPFGZAENKEMGF 07.. IVMADQZARCEMAUVCTVAFGHCWNVU )6-A$1: XDQZARCIG EOFACFFARCIG IVMADQZARCEMAUVCTVAFGHCWNVU )6-A$1: XDQZARCIG EOFAIGVARCIGAKPFGZ NDNAVCD IVMANCDGNAPGY TWIC CMNCFMC IVMAPQVGDQQMACRRGPFARCIG )6-A016'$11- PQVGDQQMAOCKP XDQZARCIG NDNAVCD
  • 258. -QPKGE FTWIKGL CMNCFMK ECU PC NQGPKG QMPC INQYPGIQ
  • 259. IVMAEQPVCKPGTACFF )6-A%106#+0'4 HTOAPQVGDQQM PQVGDQQMAOCKP IVMAYKFIGVAUJQYACNN HTOAPQVGDQQM IVMAOCKP TGVWTP _ XQKF FGUVTQ[AOCKP ] IVMAOCKPASWKV _ XQKF EOFATQVCVGAVCDUAENKEMGF ] UVCVKE IKPV VCDANQECVKQP KH VCDANQECVKQP VCDANQECVKQP GNUG VCDANQECVKQP UYKVEJ VCDANQECVKQP ] ECUG IVMAPQVGDQQMAUGVAVCDARQU )6-A016'$11- PQVGDQQMAOCKP )6-A215A612 DTGCM ECUG IVMAPQVGDQQMAUGVAVCDARQU )6-A016'$11- PQVGDQQMAOCKP )6-A215A4+)*6 DTGCM ECUG IVMAPQVGDQQMAUGVAVCDARQU )6-A016'$11- PQVGDQQMAOCKP )6-A215A$1661/ DTGCM ECUG IVMAPQVGDQQMAUGVAVCDARQU )6-A016'$11- PQVGDQQMAOCKP )6-A215A.'(6 DTGCM FGHCWNV IARTKPV 6GP RT[RCFGM PKG RQYKPKGP PKIF[ Y[UVCRKEP _ _ XQKF EOFAUGVAVCDUAJQOQIGPGQWUAENKEMGF ] IVMAPQVGDQQMAUGVAJQOQIGPGQWUAVCDU )6-A016'$11- PQVGDQQMAOCKP 647' _ XQKF EOFAUGVAVCDUAJGVGTQIGPGQWUAENKEMGF
  • 260. Rozdział 4. Zaawansowane obiekty GTK+ 147 ]
  • 261. 6C HWPMELC PKG OC GHGMVW LGUNK CMNCFMK WOKGUEQPG UC RQ RTCYGL NWD NGYGL
  • 262. UVTQPKG 9 V[O RT[RCFMW HWPMELC CEJQYC UKG VCM UCOQ LCM
  • 264. IVMAPQVGDQQMAUGVAJQOQIGPGQWUAVCDU )6-A016'$11- PQVGDQQMAOCKP (#.5' _ XQKF EOFACFFARCIGAENKEMGF ] )VM9KFIGV
  • 265. HKZGF )VM9KFIGV
  • 266. NDN HKZGF IVMAHKZGFAPGY NDN IVMANCDGNAPGY 0QY[ IVMAPQVGDQQMACRRGPFARCIG )6-A016'$11- PQVGDQQMAOCKP HKZGF NDN
  • 268. IVMAYKFIGVAUJQYACNN PQVGDQQMAOCKP _ XQKF EOFAIGVARCIGAKPFGZAENKEMGF ]
  • 270. IARTKPV +PFGMU UVTQP[ VQ KP IVMAPQVGDQQMAIGVAEWTTGPVARCIG )6-A016'$11- PQVGDQQMAOCKP _ XQKF PQVGDQQMAUYKVEJARCIG ] IARTKPV UVTQPG OKGPKQPQP _ )VM2CPGF Dzięki widgetowi )VM2CPGF mo na podzielić okno — pionowo lub poziomo — na dwie mniejsze powierzchnie, zwane panelami (rysunek 4.7). Jeśli chcemy uzyskać więcej mniejszych powierzchni, mo emy dzielić większe na dwie mniejsze, potem mniejsze na jeszcze mniejsze, i tak dalej. Po uruchomieniu programu w oknie zobaczymy specjalne przyciski, dzięki którym będziemy mogli zmienić rozmiary ka dej powierzchni (pod wa- runkiem, e wybierzemy właściwe opcje). Zwróćmy uwagę na wymiary przycisków słu ących do zmiany rozmiarów powierzchni. W naszym przypadku mamy do czynienia z bardzo „cieniutkimi” obiektami, ale nic nie stoi na przeszkodzie, aby wykorzystać większe przyciski. Wymiary tych przycisków są związane z przestrzenią pomiędzy granicą powierzchni a obiektami w niej umieszczony- mi. Wielkość tej przestrzeni określa się w funkcji IVMARCPGFAIWVVGTAUKG .
  • 271. 148 Część I Szybkie wprowadzenie 4[UWPGM Okno prezentacji GtkPaned .KUVKPI Prezentacja GtkPaned KPENWFG IVMIVMJ )VM9KFIGV
  • 272. HTOARCPGF XQKF FGUVTQ[AOCKP IKPV OCKP IKPV CTIE IEJCT
  • 273. CTIX=? ] )VM9KFIGV
  • 274. NDNAJRCPGFANGHV )VM9KFIGV
  • 275. NDNAXRCPGFAVQR )VM9KFIGV
  • 276. NDNAJRCPGFANGHV )VM9KFIGV
  • 277. NDNAXRCPGFAVQR )VM9KFIGV
  • 278. NDNAXRCPGFADQVVQO )VM9KFIGV
  • 279. JRCPGF )VM9KFIGV
  • 280. XRCPGF )VM9KFIGV
  • 281. JRCPGF )VM9KFIGV
  • 282. XRCPGF IVMAKPKV CTIE CTIX HTOARCPGF IVMAYKPFQYAPGY )6-A9+019A612.'8'. IVMAYKPFQYAUGVAVKVNG )6-A9+019 HTOARCPGF 2TGGPVCELC )VM2CPGF IVMAUKIPCNAEQPPGEV )6-A1$,'%6 HTOARCPGF FGUVTQ[ )6-A5+)0#.A(70% FGUVTQ[AOCKP 07.. JRCPGF IVMAJRCPGFAPGY IVMARCPGFAIWVVGTAUKG )6-A2#0' JRCPGF IVMARCPGFAJCPFNGAUKG )6-A2#0' JRCPGF NDNAJRCPGFANGHV IVMANCDGNAPGY JRCPGF PC NGYQP1RELC 4GUKG 647'P1RELC 5JTKPM 647' IVMARCPGFARCEM )6-A2#0' JRCPGF NDNAJRCPGFANGHV 647' 647'
  • 283. 9[YQNCPKG HWPMELK IVMARCPGFAIWVVGTAUKG WOQNKYKC WUVCNGPKG QFNGINQUEK
  • 284. RQOKGF[ RCPGNGO C YKFIGVCOK KUVPKGLCE[OK QDQM 9CTVQ CWYC[E
  • 285. G PKGYKGNMK QFUVGR Y[INCFC GUVGV[EPKG Y KPVGTHGLUKG W[VMQYPKMC
  • 286.
  • 287. IVMARCPGFAJCPFNGAUKG RQYQFWLG WOKGUEGPKG OCNGIQ MYCFTCVQYGIQ RT[EKUMW
  • 288. FKGMK MVQTGOW W[VMQYPKM OQG OKGPKE TQOKCT[ RCPGNW
  • 289.
  • 291. Y NGYGL RQKQOGL EGUEK RCPGNW NWD Y IQTPGL
  • 292. RKQPQYGL EGUEK RCPGNW IVMARCPGFARCEM UNW[ RCVT RQPKGL
  • 293. FQ WOKGUECPKC QDKGMVQY Y FQNPGL NWD RTCYGL EGUEK
  • 294. Rozdział 4. Zaawansowane obiekty GTK+ 149
  • 295. RCPGNW JRCPGF NWD XRCPGF
  • 296.
  • 298. RCPG RCPGN FQEGNQY[
  • 299. EJKNF YKFIGV RQVQOP[ WOKGUECP[ Y NGYGL RTCYGL
  • 301. TGUKG LGUNK OC YCTVQUE 647' QDKGMV RQVQOP[ OKGPK TQOKCT[ QFRQYKGFPKQ
  • 302. FQ OKCP RTQRQTELK Y QMPKG INQYP[O
  • 303. UJTKPM LGUNK OC YCTVQUE (#.5' RCPGN PKG DGFKG OQIN OKGE RQYKGTEJPK
  • 304. OPKGLUGL PK RQYKGTEJPKC QDKGMVW RQVQOPGIQ
  • 305. XRCPGF IVMAXRCPGFAPGY IVMARCPGFAIWVVGTAUKG )6-A2#0' XRCPGF NDNAXRCPGFAVQR IVMANCDGNAPGY XRCPGF IQTCP1RELC 4GUKG 647'P1RELC 5JTKPM (#.5' IVMARCPGFARCEM )6-A2#0' JRCPGF XRCPGF 647' (#.5' IVMARCPGFARCEM )6-A2#0' XRCPGF NDNAXRCPGFAVQR 647' (#.5' JRCPGF IVMAJRCPGFAPGY IVMARCPGFAJCPFNGAUKG )6-A2#0' JRCPGF NDNAJRCPGFANGHV IVMANCDGNAPGY JRCPGF PC NGYQP1RELC 4GUKG (#.5'P1RELC 5JTKPM 647' IVMARCPGFARCEM )6-A2#0' XRCPGF JRCPGF (#.5' 647' IVMARCPGFARCEM )6-A2#0' JRCPGF NDNAJRCPGFANGHV (#.5' 647' XRCPGF IVMAXRCPGFAPGY IVMARCPGFAIWVVGTAUKG )6-A2#0' XRCPGF IVMARCPGFAJCPFNGAUKG )6-A2#0' XRCPGF NDNAXRCPGFAVQR IVMANCDGNAPGY XRCPGF IQTCP4GUKG (#.5'P1RELC 5JTKPM (#.5' NDNAXRCPGFADQVVQO IVMANCDGNAPGY XRCPGF FQN IVMARCPGFARCEM )6-A2#0' JRCPGF XRCPGF (#.5' (#.5' IVMARCPGFARCEM )6-A2#0' XRCPGF NDNAXRCPGFAVQR (#.5' (#.5' IVMARCPGFARCEM )6-A2#0' XRCPGF NDNAXRCPGFADQVVQO (#.5' (#.5' IVMAEQPVCKPGTACFF )6-A%106#+0'4 HTOARCPGF JRCPGF IVMAYKFIGVAUJQYACNN HTOARCPGF IVMAOCKP TGVWTP _ XQKF FGUVTQ[AOCKP ] IVMAOCKPASWKV _