David Sweet
KDE 2 Programmierung, m. CD-ROM
Komponentenbasierte Anwendungen mit Qt, KParts und DCOP
Mitwirkender: Sweet, David
Ein Angebot für € 8,00 €
David Sweet
KDE 2 Programmierung, m. CD-ROM
Komponentenbasierte Anwendungen mit Qt, KParts und DCOP
Mitwirkender: Sweet, David
- Gebundenes Buch
- Merkliste
- Auf die Merkliste
- Bewerten Bewerten
- Teilen
- Produkt teilen
- Produkterinnerung
- Produkterinnerung
David Sweet, selbst KDE-Programmierer, sowie zahlreiche Co-Autoren aus dem KDE-Core-Team zeigen Ihnen in diesem Buch ausführlich, wie Sie Anwendungen für KDE 2.2 programmieren. Dabei gehen sie detailliert auf die unter KDE 2 neu hinzugekommenen Technologien KParts und DCOP (Desktop Communication Protocol) ein. Außerdem behandeln sie Fragen der fortgeschrittenen Programmierung von KDE-Widgets, beschreiben Multimedia-Schnittstellen, stellen Entwicklerwerkzeuge wie CVS und KDevelop vor und behandeln Grundsätze des Designs von Benutzeroberflächen.
David Sweet, selbst KDE-Programmierer, sowie zahlreiche Co-Autoren aus dem KDE-Core-Team zeigen Ihnen in diesem Buch ausführlich, wie Sie Anwendungen für KDE 2.2 programmieren. Dabei gehen sie detailliert auf die unter KDE 2 neu hinzugekommenen Technologien KParts und DCOP (Desktop Communication Protocol) ein. Außerdem behandeln sie Fragen der fortgeschrittenen Programmierung von KDE-Widgets, beschreiben Multimedia-Schnittstellen, stellen Entwicklerwerkzeuge wie CVS und KDevelop vor und behandeln Grundsätze des Designs von Benutzeroberflächen.
Produktdetails
- Produktdetails
- New Technology
- Verlag: Markt +Technik
- Seitenzahl: 576
- Abmessung: 245mm
- Gewicht: 1066g
- ISBN-13: 9783827259806
- ISBN-10: 3827259800
- Artikelnr.: 24087903
- Herstellerkennzeichnung Die Herstellerinformationen sind derzeit nicht verfügbar.
- New Technology
- Verlag: Markt +Technik
- Seitenzahl: 576
- Abmessung: 245mm
- Gewicht: 1066g
- ISBN-13: 9783827259806
- ISBN-10: 3827259800
- Artikelnr.: 24087903
- Herstellerkennzeichnung Die Herstellerinformationen sind derzeit nicht verfügbar.
Vorwort 15
Danksagung 17
Teil I: Grundlagen der KDE-Anwendungsentwicklung 19
Einleitung 21
E.1 Voraussetzungen 22
E.2 Die Open Publication License (OPL) 22
E.3 Aufbau des Buchs 23
E.4 Die Konventionen in diesem Buch 23
E.5 Die CD zu diesem Buch 24
E.6 Zeit zu programmieren! 24
Kapitel 1 Der KDE-Hintergrund 25
1.1 Die Motivation für einen freien Desktop 26
1.2 Warum mit KDE entwickeln? 27
1.3 KDE - Organisation und Ressourcen 29
1.4 Systemanforderungen 30
1.5 KDE herunterladen und installieren 30
1.5.1 Binäre Pakete installieren 31
1.5.2 Quellcode-Pakete installieren 31
1.6 Lizenzen and Legalität 32
1.7 Lassen Sie uns nun mit dem Programmieren beginnen! 32
Kapitel 2 Eine einfache KDE-Anwendung 35
2.1 Der Desktop eines Linux/UNIX-Programmierers 36
2.1.1 Die nötige Ausstattung zum Bearbeiten des Codes 36
2.1.2 Debugger unter Linux 37
2.2 Ein KDE-Programm kompilieren 38
2.2.1 make benutzen 39
2.3 Struktur einer KDE-Anwendung 41
2.3.1 KApplication 42
2.3.2 KMainWindow 42
2.3.3 Eine typische main()-Funktion 44
2.4 GUI-Elemente 46
2.4.1 Die Menüleiste 48
2.4.2 Die Werkzeugleiste 51
2.4.3 Die Statusleiste 52
2.5 Programmierkonventionen 52
2.5.1 Namenskonventionen 52
2.5.2 Klassendokumentation 53
2.6 Zusammenfassung 53
Kapitel 3 Das Qt-Toolkit 55
3.1 Warum Qt? (Look and Feel) 56
3.2 Überblick über das Qt-Toolkit 56
3.2.1 QObject 57
3.2.2 QWidget 57
3.2.3 QPainter 60
3.2.4 QPushButton 62
3.3 Signale und Slots 64
3.3.1 Einen Slot erzeugen 65
3.3.2 Ein Signal aussenden 66
3.3.3 Einen Slot mit einem Signal verbinden 66
3.3.4 Signale und Slots mit Parametern 68
3.3.5 Slots in temporären Klassen 69
3.4 Der Meta Object Compiler (moc) 70
3.4.1 Verwendung des moc-Tools 70
3.4.2 Beispiel für die Verwendung von moc 70
3.5 Die Utility-Klassen 73
3.5.1 Templates 73
3.5.2 Standard Template Library (STL) 74
3.5.3 QList - Eine Qt-Template-Klasse 74
3.6 Besondere Features (ImageIO, OpenGL, Mesa) 75
3.6.1 ImageIO 75
3.6.2 OpenGL, Mesa 77
3.7 Zusammenfassung 80
Kapitel 4 Erstellung eigener KDE-Widgets 83
4.1 Grundlegendes über Widgets 84
4.1.1 Die Basisklasse QWidget 84
4.1.2 Widget-Attribute 88
4.1.3 Signale und Slots 88
4.1.4 Beispiel einer Widget-Klassendeklaration 88
4.1.5 Dokumentation 90
4.2 Widgets zeichnen 90
4.2.1 Wann wird gezeichnet? 90
4.2.2 Effizient Neuzeichnen 91
4.2.3 Ihr Widget mit QPainter zeichnen 92
4.2.4 Zeichenbefehle mit QPicture aufzeichnen 92
4.2.5 Ein einfaches Widget 92
4.3 Kind-Widgets 98
4.3.1 Verwaltung von Größe und Lage 100
4.3.2 Das Spiel spielen 105
4.4 Anwendereingaben verarbeiten 105
4.4.1 Mausereignisse 109
4.4.2 Tastaturereignisse 109
4.5 Zusammenfassung 110
Kapitel 5 KDE-Richtlinien für Benutzerschnittstellen 113
5.1 Die dokumentorientierte KDE-Schnittstelle 114
5.1.1 Die Menüleiste und die Werkzeugleiste 114
5.1.2 Aktionen erzeugen und manipulieren 116
5.1.3 Die Statusleiste 133
5.1.4 Inhaltsbereich 138
5.2 Den Anwender bei der Benutzung der Anwendung unterstützen 140
5.2.1 Tooltips, What's-This-Hilfe und mehr 141
5.3 Standard-Dialoge 146
5.4 Zusammenfassung 152
Kapitel 6 KDE-Stilreferenz 153
6.1 Auf Standardaktionen zugreifen 154
6.2 Session-Management 158
6.3 Die KDE-Standardsymbole 161
6.4 Internationalisierung 163
6.5 Klänge abspielen 165
6.6 Anwender-Benachrichtigungen 166
6.7 Andere Programme ausführen 167
6.8 Netzwerktransparenz 169
6.9 Benutzerfreundlichkeit 173
6.10 Zusammenfassung 174
Teil II: Fortgeschrittene KDE-Widgets
und UI-Design-Techniken 177
Kapitel 7 Weitere KDE-Richtlinien 179
7.1 Drag&Drop 180
7.1.1 Auf Drop-Ereignisse reagieren 181
7.1.2 Eine Drag-Operation starten 184
7.2 Konfigurationsdaten der Anwendungen 188
7.2.1 Zugriff auf Konfigurationsdateien 189
7.3 Session-Management 191
7.4 Anwendungsressourcen 196
7.4.1 Standard-Speicherorte für Ressourcen 197
7.4.2 Anwendungsressourcen 197
7.4.3 .desktop-Dateien erzeugen 202
7.5 Netzwerktransparenz 203
7.5.1 Programmierbeispiel 203
7.6 Zusammenfassung 208
Kapitel 8 Dialoge 209
8.1 Erste Schritte mit den Dialog-Widgets 210
8.2 Dialog-Design leicht gemacht 213
8.3 Modale und nicht-modale Dialoge 221
8.3.1 Nicht-modale Dialoge entfernen 224
8.4 Die KDE-Benutzerschnittstellenbibliothek (kdeui) 227
8.4.1 Vorgefertigte Dialoge 227
8.4.2 Bausteine (Manager-Widgets) 228
8.5 Dialogstil und KDialogBase 230
8.6 Ein größeres Beispiel: Der Einstellungen-Dialog von KEdit 233
8.7 UI-Design-Regeln für Dialoge 242
8.8 Zusammenfassung 243
Kapitel 9 Aufnahmebereite Benutzerschnittstellen 245
9.1 Die Bedeutung von aufnahmebereiten Schnittstellen 246
9.2 Die Aktualisierung von Fenstern beschleunigen 247
9.2.1 Mit KQuickDraw herumexperimentieren 251
9.2.2 Flackerfreie Aktualisierung 252
9.3 Ausführung längerer Jobs 253
9.3.1 Mit QTimer längere Jobs ausführen 253
9.3.2 Anwendungsfunktionen aktivieren/deaktivieren 258
9.3.3 Geschwindigkeit 259
9.3.4 Eine Alternative zu QTimer 259
9.4 Zusammenfassung 262
Kapitel 10 KDE-Widgets für komplexe Funktionen 263
10.1 HTML-Dateien rendern 264
10.1.1 Ein einfacher Webbrowser 264
10.2 Bilder bearbeiten 267
10.2.1 QImage und QPixmap im Vergleich 268
10.2.2 Ein Bildbetrachter/Bildwandler 269
10.3 Rechtschreibprüfung 272
10.3.1 KSpell in einer Anwendung verwenden 273
10.3.2 Modale Rechtschreibprüfung 276
10.3.3 KSpell konfigurieren 276
10.4 Zugriff auf das Adressbuch 278
10.4.1 Einen Kontakt auswählen 278
10.5 Zusammenfassung 281
Kapitel 11 Andere Arten von Anwendungen 283
11.1 Dialogbasierte Anwendungen 284
11.1.1 Dialogbasierte Anwendungen erstellen 284
11.2 Single-Instance-Anwendungen 287
11.3 Panel-Applets 290
11.4 Zusammenfassung 292
Teil III: Anwendungen - Interaktion und Integration 293
Kapitel 12 Komponenten erzeugen und verwenden (KParts) 295
12.1 Der Unterschied zwischen Komponenten und Widgets 296
12.2 Das KDE Komponenten-Framework 297
12.3 Benutzerschnittstellen in XML beschreiben 298
12.4 Nur-Lesen- und Lesen/Schreiben-Parts 301
12.4.1 Nur-Lesen-Parts 301
12.4.2 Lesen/Schreiben-Parts 301
12.5 Ein Part erzeugen 302
12.6 Ein Part in gemeinsam genutzten Bibliotheken
verfügbar machen 307
12.7 Eine KParts-Anwendung erzeugen 311
12.8 Mehrere Parts im selben Fenster einbetten 314
12.9 Ein KParts-Plugin erzeugen 316
12.10 Zusammenfassung 318
Kapitel 13 DCOP - das Desktop-Kommunikationsprotokoll 321
13.1 Motivation 323
13.2 Vorgeschichte 324
13.3 Zugrundeliegende Technologien 327
13.3.1 ICE - Der InterClient Exchange-Mechanismus 327
13.3.2 Datenübertragung 328
13.4 Architektur 329
13.5 Beschreibung der DCOP-Programmierschnittstelle 331
13.5.1 Vorarbeiten 331
13.5.2 send(), call(), process() und verwandte Methoden 332
13.5.3 Automatisierte Eleganz - dcopIDL 342
13.5.4 Makefile-Magie 347
13.6 Entwicklerinteressen und Tools in DCOP 348
13.6.1 Immer auf dem neuesten Stand 348
13.6.2 DCOP-Objekte referenzieren 349
13.6.3 Signale und Slots über den DCOP-Server 351
13.6.4 DCOP mit eingebettetem KPart 352
13.6.5 Leistungsfähigkeit und Overhead 354
13.7 DCOP in KDE 2.0 - einige Beispiele 355
13.7.1 KUniqueApplication 355
13.7.2 KNotify 359
13.7.3 Kleine Juwelen: dcop und kdcop 359
13.7.4 Verwandte Technologien im Überblick - dcopc,
XMLRPC und Bindungen 361
13.8 Zusammenfassung 362
Kapitel 14 Multimedia 363
14.1 Einführung in aRts/MCOP 365
14.1.1 Kapitelübersicht 368
14.2 Ein erster Einblick in das Schreiben von Modulen 369
14.2.1 Schritt 1 - Eine Schnittstellendefinition in IDL schreiben 370
14.2.2 Schritt 2 - Diese Definition mit mcopidl übersetzen 371
14.2.3 Schritt 3 - Eine Implementierung für die von Ihnen
deklarierten Schnittstellen aufsetzen 372
14.2.4 Schritt 4 - Die Implementierung mit REGISTER_IMPLEMENTATION registrieren 373
14.2.5 Schritt 5 - Gegebenenfalls eine .mcopclass-Datei schreiben 373
14.2.6 Wie man das neue Modul benutzt 374
14.3 MCOP 375
14.3.1 Die IDL-Sprache 376
14.3.2 Den IDL-Compiler aufrufen 379
14.3.3 Referenzzählung 380
14.3.4 Erste Objektreferenzen 380
14.3.5 Auf Streams zugreifen 381
14.3.6 Modulinitialisierung 382
14.3.7 Synchrone und asynchrone Streams im Vergleich 384
14.3.8 Objekte verbinden 386
14.4 Standard-Schnittstellen 387
14.4.1 Die SimpleSoundServer-Schnittstelle 387
14.4.2 Die KMedia2-Schnittstellen 389
14.4.3 Stereo-Effekte/Effectstacks 391
14.5 Implementierung eines StereoEffect 392
14.5.1 Und noch einmal IDL 392
14.5.2 Der Code 393
14.5.3 Den Effekt benutzen 394
14.6 KDE-Multimedia neben MCOP 396
14.6.1 KNotify API und KAudioPlayer 396
14.6.2 LibKMid 398
14.6.3 aKtion 398
14.7 Die Zukunft von MCOP 398
14.7.1 Composition/RAD 399
14.7.2 GUIs 399
14.7.3 Skripting 399
14.7.4 Weitere Medientypen 400
14.8 Zusammenfassung 400
Teil IV: Entwickler-Tools und Support 401
Kapitel 15 Dokumentierung 403
15.1 Quellcode dokumentieren 404
15.1.1 Herunterladen und Installieren von KDOC 404
15.1.2 Mit KDOC arbeiten 405
15.1.3 Bibliotheken-Dokumentation 408
15.1.4 Klassen-Dokumentation 408
15.1.5 Methoden-Dokumentation 409
15.1.6 Klassen- und Methoden-Dokumentation 409
15.2 Anwendungen dokumentieren 410
15.2.1 Herunterladen und Installieren der KDE DocBook-Tools 411
15.2.2 Verarbeiten einer DocBook-Dokumentation 412
15.2.3 Schreiben von DocBook-Dokumentation für KDE 413
15.3 Zusammenfassung 419
Kapitel 16 Code packen und vertreiben 421
16.1 Die Struktur eines Pakets 422
16.2 Administrative Dateien 423
16.2.1 Das Toplevel-Verzeichnis konfigurieren 424
16.2.2 Unterverzeichnisse konfigurieren 425
16.2.3 Administrative Dateien aktualisieren 428
16.2.4 Gemeinsam genutzte Bibliotheken erstellen 428
16.2.5 Verwendung der Testergebnisse 429
16.2.6 Make-Ziele 430
16.3 Ihre Anwendung vertreiben 430
16.3.1 Informative Textdateien 430
16.3.2 Aufräumarbeiten 431
16.3.3 Software hochladen und bekannt machen 432
16.4 Zusammenfassung 433
Kapitel 17 Quellcodeverwaltung mit CVS 435
17.1 Was ist CVS? 436
17.1.1 Die Rolle von CVS im KDE-Projekt 437
17.2 Organisation des CVS 437
17.2.1 Modulnamen 437
17.2.2 Zweige 438
17.3 Auf Quellcode im CVS zugreifen 439
17.3.1 Schnappschüsse 439
17.3.2 Die WWW-Schnittstelle zu CVS 440
17.3.3 CVSup 440
17.3.4 CVS-Konten 441
17.4 CVSup installieren und benutzen 441
17.5 cvs installieren und benutzen 442
17.5.1 Oft benutzte Befehle 442
17.6 Zusammenfassung 445
Kapitel 18 Die KDevelop-IDE: Die integrierte Entwicklungsumgebung für KDE 447
18.1 Allgemeines 448
18.1.1 Anwenderfreundlich und entwicklerfreundlich 450
18.2 KDE 2-Anwendungen erstellen 456
18.2.1 Vorlagen für KDE 2-Projekte 459
18.2.2 Projekte bearbeiten 460
18.3 Erste Schritte mit der KDE 2.x-API 461
18.3.1 Wie Sie Informationen abfragen 463
18.4 Der Klassenbrowser und Ihr Projekt 464
18.5 Die Dateibetrachter - die Fenster zu Ihren Projektdateien 468
18.5.1 Der logische Dateibetrachter (LFV) 468
18.5.2 Der echte Dateibetrachter (RFV) 469
18.6 Der KDevelop-Debugger 470
18.6.1 Einstellen der Debugger-Optionen 471
18.6.2 Wie man Debug-Informationen aktiviert 472
18.6.3 Ablauf einer Debug-Sitzung 473
18.7 KDevelop 2.0 - eine Vorschau 474
18.8 Zusammenfassung 476
Kapitel 19 Lizenzrechtliche Fragen 477
19.1 Was sind die "Streitfragen"? 478
19.1.1 Um welche Lizenzen geht es? 478
19.1.2 In welcher Hinsicht betreffen die Lizenzen mich? 479
19.2 Lizenzgebrauch bei KDE 480
19.2.1 Library GNU Public License (LGPL) 481
19.2.2 Die GNU General Public License (GPL) 481
19.2.3 Der "Krieg" GPL gegen Qt 482
19.3 Der Lizenzgebrauch bei Qt 484
19.3.1 Die FreeQt-Lizenz 484
19.3.2 Die Q Public License (QPL) 484
19.4 Die Geschichte der KDE/Qt-Lizenzen 486
19.4.1 Wie es zur QPL kam 486
19.4.2 Wie sich die QPL weiter entwickelte 487
19.5 Zusammenfassung 488
Kapitel A KDE-relevante Lizenzen 489
A.1 GNU Library General Public License (LGPL) 490
A.2 GNU General Public License 500
Kapitel B KDE-Klassenreferenz 507
Kapitel C Übungen 509
C.1 Kapitel 1 510
C.2 Kapitel 2 510
C.2.1 Übungen 510
C.3 Kapitel 3 515
C.3.1 Übungen 515
C.4 Kapitel 4 516
C.4.1 Übungen 516
C.5 Kapitel 5 523
C.5.1 Übungen 523
C.6 Kapitel 6 527
C.6.1 Übungen 527
C.7 Kapitel 7 535
C.7.1 Übungen 535
C.8 Kapitel 8 539
C.8.1 Übungen 539
C.9 Kapitel 9 544
C.9.1 Übungen 544
C.10 Kapitel 10 548
C.10.1 Übungen 548
C.11 Kapitel 11 551
C.11.1 Übungen 551
C.12 Kapitel 12 552
C.13 Kapitel 13 552
C.14 Kapitel 14 553
C.14.1 Übungen 553
Teil IV 556
Die Autoren 557
Stichwortverzeichnis 561
Danksagung 17
Teil I: Grundlagen der KDE-Anwendungsentwicklung 19
Einleitung 21
E.1 Voraussetzungen 22
E.2 Die Open Publication License (OPL) 22
E.3 Aufbau des Buchs 23
E.4 Die Konventionen in diesem Buch 23
E.5 Die CD zu diesem Buch 24
E.6 Zeit zu programmieren! 24
Kapitel 1 Der KDE-Hintergrund 25
1.1 Die Motivation für einen freien Desktop 26
1.2 Warum mit KDE entwickeln? 27
1.3 KDE - Organisation und Ressourcen 29
1.4 Systemanforderungen 30
1.5 KDE herunterladen und installieren 30
1.5.1 Binäre Pakete installieren 31
1.5.2 Quellcode-Pakete installieren 31
1.6 Lizenzen and Legalität 32
1.7 Lassen Sie uns nun mit dem Programmieren beginnen! 32
Kapitel 2 Eine einfache KDE-Anwendung 35
2.1 Der Desktop eines Linux/UNIX-Programmierers 36
2.1.1 Die nötige Ausstattung zum Bearbeiten des Codes 36
2.1.2 Debugger unter Linux 37
2.2 Ein KDE-Programm kompilieren 38
2.2.1 make benutzen 39
2.3 Struktur einer KDE-Anwendung 41
2.3.1 KApplication 42
2.3.2 KMainWindow 42
2.3.3 Eine typische main()-Funktion 44
2.4 GUI-Elemente 46
2.4.1 Die Menüleiste 48
2.4.2 Die Werkzeugleiste 51
2.4.3 Die Statusleiste 52
2.5 Programmierkonventionen 52
2.5.1 Namenskonventionen 52
2.5.2 Klassendokumentation 53
2.6 Zusammenfassung 53
Kapitel 3 Das Qt-Toolkit 55
3.1 Warum Qt? (Look and Feel) 56
3.2 Überblick über das Qt-Toolkit 56
3.2.1 QObject 57
3.2.2 QWidget 57
3.2.3 QPainter 60
3.2.4 QPushButton 62
3.3 Signale und Slots 64
3.3.1 Einen Slot erzeugen 65
3.3.2 Ein Signal aussenden 66
3.3.3 Einen Slot mit einem Signal verbinden 66
3.3.4 Signale und Slots mit Parametern 68
3.3.5 Slots in temporären Klassen 69
3.4 Der Meta Object Compiler (moc) 70
3.4.1 Verwendung des moc-Tools 70
3.4.2 Beispiel für die Verwendung von moc 70
3.5 Die Utility-Klassen 73
3.5.1 Templates 73
3.5.2 Standard Template Library (STL) 74
3.5.3 QList - Eine Qt-Template-Klasse 74
3.6 Besondere Features (ImageIO, OpenGL, Mesa) 75
3.6.1 ImageIO 75
3.6.2 OpenGL, Mesa 77
3.7 Zusammenfassung 80
Kapitel 4 Erstellung eigener KDE-Widgets 83
4.1 Grundlegendes über Widgets 84
4.1.1 Die Basisklasse QWidget 84
4.1.2 Widget-Attribute 88
4.1.3 Signale und Slots 88
4.1.4 Beispiel einer Widget-Klassendeklaration 88
4.1.5 Dokumentation 90
4.2 Widgets zeichnen 90
4.2.1 Wann wird gezeichnet? 90
4.2.2 Effizient Neuzeichnen 91
4.2.3 Ihr Widget mit QPainter zeichnen 92
4.2.4 Zeichenbefehle mit QPicture aufzeichnen 92
4.2.5 Ein einfaches Widget 92
4.3 Kind-Widgets 98
4.3.1 Verwaltung von Größe und Lage 100
4.3.2 Das Spiel spielen 105
4.4 Anwendereingaben verarbeiten 105
4.4.1 Mausereignisse 109
4.4.2 Tastaturereignisse 109
4.5 Zusammenfassung 110
Kapitel 5 KDE-Richtlinien für Benutzerschnittstellen 113
5.1 Die dokumentorientierte KDE-Schnittstelle 114
5.1.1 Die Menüleiste und die Werkzeugleiste 114
5.1.2 Aktionen erzeugen und manipulieren 116
5.1.3 Die Statusleiste 133
5.1.4 Inhaltsbereich 138
5.2 Den Anwender bei der Benutzung der Anwendung unterstützen 140
5.2.1 Tooltips, What's-This-Hilfe und mehr 141
5.3 Standard-Dialoge 146
5.4 Zusammenfassung 152
Kapitel 6 KDE-Stilreferenz 153
6.1 Auf Standardaktionen zugreifen 154
6.2 Session-Management 158
6.3 Die KDE-Standardsymbole 161
6.4 Internationalisierung 163
6.5 Klänge abspielen 165
6.6 Anwender-Benachrichtigungen 166
6.7 Andere Programme ausführen 167
6.8 Netzwerktransparenz 169
6.9 Benutzerfreundlichkeit 173
6.10 Zusammenfassung 174
Teil II: Fortgeschrittene KDE-Widgets
und UI-Design-Techniken 177
Kapitel 7 Weitere KDE-Richtlinien 179
7.1 Drag&Drop 180
7.1.1 Auf Drop-Ereignisse reagieren 181
7.1.2 Eine Drag-Operation starten 184
7.2 Konfigurationsdaten der Anwendungen 188
7.2.1 Zugriff auf Konfigurationsdateien 189
7.3 Session-Management 191
7.4 Anwendungsressourcen 196
7.4.1 Standard-Speicherorte für Ressourcen 197
7.4.2 Anwendungsressourcen 197
7.4.3 .desktop-Dateien erzeugen 202
7.5 Netzwerktransparenz 203
7.5.1 Programmierbeispiel 203
7.6 Zusammenfassung 208
Kapitel 8 Dialoge 209
8.1 Erste Schritte mit den Dialog-Widgets 210
8.2 Dialog-Design leicht gemacht 213
8.3 Modale und nicht-modale Dialoge 221
8.3.1 Nicht-modale Dialoge entfernen 224
8.4 Die KDE-Benutzerschnittstellenbibliothek (kdeui) 227
8.4.1 Vorgefertigte Dialoge 227
8.4.2 Bausteine (Manager-Widgets) 228
8.5 Dialogstil und KDialogBase 230
8.6 Ein größeres Beispiel: Der Einstellungen-Dialog von KEdit 233
8.7 UI-Design-Regeln für Dialoge 242
8.8 Zusammenfassung 243
Kapitel 9 Aufnahmebereite Benutzerschnittstellen 245
9.1 Die Bedeutung von aufnahmebereiten Schnittstellen 246
9.2 Die Aktualisierung von Fenstern beschleunigen 247
9.2.1 Mit KQuickDraw herumexperimentieren 251
9.2.2 Flackerfreie Aktualisierung 252
9.3 Ausführung längerer Jobs 253
9.3.1 Mit QTimer längere Jobs ausführen 253
9.3.2 Anwendungsfunktionen aktivieren/deaktivieren 258
9.3.3 Geschwindigkeit 259
9.3.4 Eine Alternative zu QTimer 259
9.4 Zusammenfassung 262
Kapitel 10 KDE-Widgets für komplexe Funktionen 263
10.1 HTML-Dateien rendern 264
10.1.1 Ein einfacher Webbrowser 264
10.2 Bilder bearbeiten 267
10.2.1 QImage und QPixmap im Vergleich 268
10.2.2 Ein Bildbetrachter/Bildwandler 269
10.3 Rechtschreibprüfung 272
10.3.1 KSpell in einer Anwendung verwenden 273
10.3.2 Modale Rechtschreibprüfung 276
10.3.3 KSpell konfigurieren 276
10.4 Zugriff auf das Adressbuch 278
10.4.1 Einen Kontakt auswählen 278
10.5 Zusammenfassung 281
Kapitel 11 Andere Arten von Anwendungen 283
11.1 Dialogbasierte Anwendungen 284
11.1.1 Dialogbasierte Anwendungen erstellen 284
11.2 Single-Instance-Anwendungen 287
11.3 Panel-Applets 290
11.4 Zusammenfassung 292
Teil III: Anwendungen - Interaktion und Integration 293
Kapitel 12 Komponenten erzeugen und verwenden (KParts) 295
12.1 Der Unterschied zwischen Komponenten und Widgets 296
12.2 Das KDE Komponenten-Framework 297
12.3 Benutzerschnittstellen in XML beschreiben 298
12.4 Nur-Lesen- und Lesen/Schreiben-Parts 301
12.4.1 Nur-Lesen-Parts 301
12.4.2 Lesen/Schreiben-Parts 301
12.5 Ein Part erzeugen 302
12.6 Ein Part in gemeinsam genutzten Bibliotheken
verfügbar machen 307
12.7 Eine KParts-Anwendung erzeugen 311
12.8 Mehrere Parts im selben Fenster einbetten 314
12.9 Ein KParts-Plugin erzeugen 316
12.10 Zusammenfassung 318
Kapitel 13 DCOP - das Desktop-Kommunikationsprotokoll 321
13.1 Motivation 323
13.2 Vorgeschichte 324
13.3 Zugrundeliegende Technologien 327
13.3.1 ICE - Der InterClient Exchange-Mechanismus 327
13.3.2 Datenübertragung 328
13.4 Architektur 329
13.5 Beschreibung der DCOP-Programmierschnittstelle 331
13.5.1 Vorarbeiten 331
13.5.2 send(), call(), process() und verwandte Methoden 332
13.5.3 Automatisierte Eleganz - dcopIDL 342
13.5.4 Makefile-Magie 347
13.6 Entwicklerinteressen und Tools in DCOP 348
13.6.1 Immer auf dem neuesten Stand 348
13.6.2 DCOP-Objekte referenzieren 349
13.6.3 Signale und Slots über den DCOP-Server 351
13.6.4 DCOP mit eingebettetem KPart 352
13.6.5 Leistungsfähigkeit und Overhead 354
13.7 DCOP in KDE 2.0 - einige Beispiele 355
13.7.1 KUniqueApplication 355
13.7.2 KNotify 359
13.7.3 Kleine Juwelen: dcop und kdcop 359
13.7.4 Verwandte Technologien im Überblick - dcopc,
XMLRPC und Bindungen 361
13.8 Zusammenfassung 362
Kapitel 14 Multimedia 363
14.1 Einführung in aRts/MCOP 365
14.1.1 Kapitelübersicht 368
14.2 Ein erster Einblick in das Schreiben von Modulen 369
14.2.1 Schritt 1 - Eine Schnittstellendefinition in IDL schreiben 370
14.2.2 Schritt 2 - Diese Definition mit mcopidl übersetzen 371
14.2.3 Schritt 3 - Eine Implementierung für die von Ihnen
deklarierten Schnittstellen aufsetzen 372
14.2.4 Schritt 4 - Die Implementierung mit REGISTER_IMPLEMENTATION registrieren 373
14.2.5 Schritt 5 - Gegebenenfalls eine .mcopclass-Datei schreiben 373
14.2.6 Wie man das neue Modul benutzt 374
14.3 MCOP 375
14.3.1 Die IDL-Sprache 376
14.3.2 Den IDL-Compiler aufrufen 379
14.3.3 Referenzzählung 380
14.3.4 Erste Objektreferenzen 380
14.3.5 Auf Streams zugreifen 381
14.3.6 Modulinitialisierung 382
14.3.7 Synchrone und asynchrone Streams im Vergleich 384
14.3.8 Objekte verbinden 386
14.4 Standard-Schnittstellen 387
14.4.1 Die SimpleSoundServer-Schnittstelle 387
14.4.2 Die KMedia2-Schnittstellen 389
14.4.3 Stereo-Effekte/Effectstacks 391
14.5 Implementierung eines StereoEffect 392
14.5.1 Und noch einmal IDL 392
14.5.2 Der Code 393
14.5.3 Den Effekt benutzen 394
14.6 KDE-Multimedia neben MCOP 396
14.6.1 KNotify API und KAudioPlayer 396
14.6.2 LibKMid 398
14.6.3 aKtion 398
14.7 Die Zukunft von MCOP 398
14.7.1 Composition/RAD 399
14.7.2 GUIs 399
14.7.3 Skripting 399
14.7.4 Weitere Medientypen 400
14.8 Zusammenfassung 400
Teil IV: Entwickler-Tools und Support 401
Kapitel 15 Dokumentierung 403
15.1 Quellcode dokumentieren 404
15.1.1 Herunterladen und Installieren von KDOC 404
15.1.2 Mit KDOC arbeiten 405
15.1.3 Bibliotheken-Dokumentation 408
15.1.4 Klassen-Dokumentation 408
15.1.5 Methoden-Dokumentation 409
15.1.6 Klassen- und Methoden-Dokumentation 409
15.2 Anwendungen dokumentieren 410
15.2.1 Herunterladen und Installieren der KDE DocBook-Tools 411
15.2.2 Verarbeiten einer DocBook-Dokumentation 412
15.2.3 Schreiben von DocBook-Dokumentation für KDE 413
15.3 Zusammenfassung 419
Kapitel 16 Code packen und vertreiben 421
16.1 Die Struktur eines Pakets 422
16.2 Administrative Dateien 423
16.2.1 Das Toplevel-Verzeichnis konfigurieren 424
16.2.2 Unterverzeichnisse konfigurieren 425
16.2.3 Administrative Dateien aktualisieren 428
16.2.4 Gemeinsam genutzte Bibliotheken erstellen 428
16.2.5 Verwendung der Testergebnisse 429
16.2.6 Make-Ziele 430
16.3 Ihre Anwendung vertreiben 430
16.3.1 Informative Textdateien 430
16.3.2 Aufräumarbeiten 431
16.3.3 Software hochladen und bekannt machen 432
16.4 Zusammenfassung 433
Kapitel 17 Quellcodeverwaltung mit CVS 435
17.1 Was ist CVS? 436
17.1.1 Die Rolle von CVS im KDE-Projekt 437
17.2 Organisation des CVS 437
17.2.1 Modulnamen 437
17.2.2 Zweige 438
17.3 Auf Quellcode im CVS zugreifen 439
17.3.1 Schnappschüsse 439
17.3.2 Die WWW-Schnittstelle zu CVS 440
17.3.3 CVSup 440
17.3.4 CVS-Konten 441
17.4 CVSup installieren und benutzen 441
17.5 cvs installieren und benutzen 442
17.5.1 Oft benutzte Befehle 442
17.6 Zusammenfassung 445
Kapitel 18 Die KDevelop-IDE: Die integrierte Entwicklungsumgebung für KDE 447
18.1 Allgemeines 448
18.1.1 Anwenderfreundlich und entwicklerfreundlich 450
18.2 KDE 2-Anwendungen erstellen 456
18.2.1 Vorlagen für KDE 2-Projekte 459
18.2.2 Projekte bearbeiten 460
18.3 Erste Schritte mit der KDE 2.x-API 461
18.3.1 Wie Sie Informationen abfragen 463
18.4 Der Klassenbrowser und Ihr Projekt 464
18.5 Die Dateibetrachter - die Fenster zu Ihren Projektdateien 468
18.5.1 Der logische Dateibetrachter (LFV) 468
18.5.2 Der echte Dateibetrachter (RFV) 469
18.6 Der KDevelop-Debugger 470
18.6.1 Einstellen der Debugger-Optionen 471
18.6.2 Wie man Debug-Informationen aktiviert 472
18.6.3 Ablauf einer Debug-Sitzung 473
18.7 KDevelop 2.0 - eine Vorschau 474
18.8 Zusammenfassung 476
Kapitel 19 Lizenzrechtliche Fragen 477
19.1 Was sind die "Streitfragen"? 478
19.1.1 Um welche Lizenzen geht es? 478
19.1.2 In welcher Hinsicht betreffen die Lizenzen mich? 479
19.2 Lizenzgebrauch bei KDE 480
19.2.1 Library GNU Public License (LGPL) 481
19.2.2 Die GNU General Public License (GPL) 481
19.2.3 Der "Krieg" GPL gegen Qt 482
19.3 Der Lizenzgebrauch bei Qt 484
19.3.1 Die FreeQt-Lizenz 484
19.3.2 Die Q Public License (QPL) 484
19.4 Die Geschichte der KDE/Qt-Lizenzen 486
19.4.1 Wie es zur QPL kam 486
19.4.2 Wie sich die QPL weiter entwickelte 487
19.5 Zusammenfassung 488
Kapitel A KDE-relevante Lizenzen 489
A.1 GNU Library General Public License (LGPL) 490
A.2 GNU General Public License 500
Kapitel B KDE-Klassenreferenz 507
Kapitel C Übungen 509
C.1 Kapitel 1 510
C.2 Kapitel 2 510
C.2.1 Übungen 510
C.3 Kapitel 3 515
C.3.1 Übungen 515
C.4 Kapitel 4 516
C.4.1 Übungen 516
C.5 Kapitel 5 523
C.5.1 Übungen 523
C.6 Kapitel 6 527
C.6.1 Übungen 527
C.7 Kapitel 7 535
C.7.1 Übungen 535
C.8 Kapitel 8 539
C.8.1 Übungen 539
C.9 Kapitel 9 544
C.9.1 Übungen 544
C.10 Kapitel 10 548
C.10.1 Übungen 548
C.11 Kapitel 11 551
C.11.1 Übungen 551
C.12 Kapitel 12 552
C.13 Kapitel 13 552
C.14 Kapitel 14 553
C.14.1 Übungen 553
Teil IV 556
Die Autoren 557
Stichwortverzeichnis 561
Vorwort 15
Danksagung 17
Teil I: Grundlagen der KDE-Anwendungsentwicklung 19
Einleitung 21
E.1 Voraussetzungen 22
E.2 Die Open Publication License (OPL) 22
E.3 Aufbau des Buchs 23
E.4 Die Konventionen in diesem Buch 23
E.5 Die CD zu diesem Buch 24
E.6 Zeit zu programmieren! 24
Kapitel 1 Der KDE-Hintergrund 25
1.1 Die Motivation für einen freien Desktop 26
1.2 Warum mit KDE entwickeln? 27
1.3 KDE - Organisation und Ressourcen 29
1.4 Systemanforderungen 30
1.5 KDE herunterladen und installieren 30
1.5.1 Binäre Pakete installieren 31
1.5.2 Quellcode-Pakete installieren 31
1.6 Lizenzen and Legalität 32
1.7 Lassen Sie uns nun mit dem Programmieren beginnen! 32
Kapitel 2 Eine einfache KDE-Anwendung 35
2.1 Der Desktop eines Linux/UNIX-Programmierers 36
2.1.1 Die nötige Ausstattung zum Bearbeiten des Codes 36
2.1.2 Debugger unter Linux 37
2.2 Ein KDE-Programm kompilieren 38
2.2.1 make benutzen 39
2.3 Struktur einer KDE-Anwendung 41
2.3.1 KApplication 42
2.3.2 KMainWindow 42
2.3.3 Eine typische main()-Funktion 44
2.4 GUI-Elemente 46
2.4.1 Die Menüleiste 48
2.4.2 Die Werkzeugleiste 51
2.4.3 Die Statusleiste 52
2.5 Programmierkonventionen 52
2.5.1 Namenskonventionen 52
2.5.2 Klassendokumentation 53
2.6 Zusammenfassung 53
Kapitel 3 Das Qt-Toolkit 55
3.1 Warum Qt? (Look and Feel) 56
3.2 Überblick über das Qt-Toolkit 56
3.2.1 QObject 57
3.2.2 QWidget 57
3.2.3 QPainter 60
3.2.4 QPushButton 62
3.3 Signale und Slots 64
3.3.1 Einen Slot erzeugen 65
3.3.2 Ein Signal aussenden 66
3.3.3 Einen Slot mit einem Signal verbinden 66
3.3.4 Signale und Slots mit Parametern 68
3.3.5 Slots in temporären Klassen 69
3.4 Der Meta Object Compiler (moc) 70
3.4.1 Verwendung des moc-Tools 70
3.4.2 Beispiel für die Verwendung von moc 70
3.5 Die Utility-Klassen 73
3.5.1 Templates 73
3.5.2 Standard Template Library (STL) 74
3.5.3 QList - Eine Qt-Template-Klasse 74
3.6 Besondere Features (ImageIO, OpenGL, Mesa) 75
3.6.1 ImageIO 75
3.6.2 OpenGL, Mesa 77
3.7 Zusammenfassung 80
Kapitel 4 Erstellung eigener KDE-Widgets 83
4.1 Grundlegendes über Widgets 84
4.1.1 Die Basisklasse QWidget 84
4.1.2 Widget-Attribute 88
4.1.3 Signale und Slots 88
4.1.4 Beispiel einer Widget-Klassendeklaration 88
4.1.5 Dokumentation 90
4.2 Widgets zeichnen 90
4.2.1 Wann wird gezeichnet? 90
4.2.2 Effizient Neuzeichnen 91
4.2.3 Ihr Widget mit QPainter zeichnen 92
4.2.4 Zeichenbefehle mit QPicture aufzeichnen 92
4.2.5 Ein einfaches Widget 92
4.3 Kind-Widgets 98
4.3.1 Verwaltung von Größe und Lage 100
4.3.2 Das Spiel spielen 105
4.4 Anwendereingaben verarbeiten 105
4.4.1 Mausereignisse 109
4.4.2 Tastaturereignisse 109
4.5 Zusammenfassung 110
Kapitel 5 KDE-Richtlinien für Benutzerschnittstellen 113
5.1 Die dokumentorientierte KDE-Schnittstelle 114
5.1.1 Die Menüleiste und die Werkzeugleiste 114
5.1.2 Aktionen erzeugen und manipulieren 116
5.1.3 Die Statusleiste 133
5.1.4 Inhaltsbereich 138
5.2 Den Anwender bei der Benutzung der Anwendung unterstützen 140
5.2.1 Tooltips, What's-This-Hilfe und mehr 141
5.3 Standard-Dialoge 146
5.4 Zusammenfassung 152
Kapitel 6 KDE-Stilreferenz 153
6.1 Auf Standardaktionen zugreifen 154
6.2 Session-Management 158
6.3 Die KDE-Standardsymbole 161
6.4 Internationalisierung 163
6.5 Klänge abspielen 165
6.6 Anwender-Benachrichtigungen 166
6.7 Andere Programme ausführen 167
6.8 Netzwerktransparenz 169
6.9 Benutzerfreundlichkeit 173
6.10 Zusammenfassung 174
Teil II: Fortgeschrittene KDE-Widgets
und UI-Design-Techniken 177
Kapitel 7 Weitere KDE-Richtlinien 179
7.1 Drag&Drop 180
7.1.1 Auf Drop-Ereignisse reagieren 181
7.1.2 Eine Drag-Operation starten 184
7.2 Konfigurationsdaten der Anwendungen 188
7.2.1 Zugriff auf Konfigurationsdateien 189
7.3 Session-Management 191
7.4 Anwendungsressourcen 196
7.4.1 Standard-Speicherorte für Ressourcen 197
7.4.2 Anwendungsressourcen 197
7.4.3 .desktop-Dateien erzeugen 202
7.5 Netzwerktransparenz 203
7.5.1 Programmierbeispiel 203
7.6 Zusammenfassung 208
Kapitel 8 Dialoge 209
8.1 Erste Schritte mit den Dialog-Widgets 210
8.2 Dialog-Design leicht gemacht 213
8.3 Modale und nicht-modale Dialoge 221
8.3.1 Nicht-modale Dialoge entfernen 224
8.4 Die KDE-Benutzerschnittstellenbibliothek (kdeui) 227
8.4.1 Vorgefertigte Dialoge 227
8.4.2 Bausteine (Manager-Widgets) 228
8.5 Dialogstil und KDialogBase 230
8.6 Ein größeres Beispiel: Der Einstellungen-Dialog von KEdit 233
8.7 UI-Design-Regeln für Dialoge 242
8.8 Zusammenfassung 243
Kapitel 9 Aufnahmebereite Benutzerschnittstellen 245
9.1 Die Bedeutung von aufnahmebereiten Schnittstellen 246
9.2 Die Aktualisierung von Fenstern beschleunigen 247
9.2.1 Mit KQuickDraw herumexperimentieren 251
9.2.2 Flackerfreie Aktualisierung 252
9.3 Ausführung längerer Jobs 253
9.3.1 Mit QTimer längere Jobs ausführen 253
9.3.2 Anwendungsfunktionen aktivieren/deaktivieren 258
9.3.3 Geschwindigkeit 259
9.3.4 Eine Alternative zu QTimer 259
9.4 Zusammenfassung 262
Kapitel 10 KDE-Widgets für komplexe Funktionen 263
10.1 HTML-Dateien rendern 264
10.1.1 Ein einfacher Webbrowser 264
10.2 Bilder bearbeiten 267
10.2.1 QImage und QPixmap im Vergleich 268
10.2.2 Ein Bildbetrachter/Bildwandler 269
10.3 Rechtschreibprüfung 272
10.3.1 KSpell in einer Anwendung verwenden 273
10.3.2 Modale Rechtschreibprüfung 276
10.3.3 KSpell konfigurieren 276
10.4 Zugriff auf das Adressbuch 278
10.4.1 Einen Kontakt auswählen 278
10.5 Zusammenfassung 281
Kapitel 11 Andere Arten von Anwendungen 283
11.1 Dialogbasierte Anwendungen 284
11.1.1 Dialogbasierte Anwendungen erstellen 284
11.2 Single-Instance-Anwendungen 287
11.3 Panel-Applets 290
11.4 Zusammenfassung 292
Teil III: Anwendungen - Interaktion und Integration 293
Kapitel 12 Komponenten erzeugen und verwenden (KParts) 295
12.1 Der Unterschied zwischen Komponenten und Widgets 296
12.2 Das KDE Komponenten-Framework 297
12.3 Benutzerschnittstellen in XML beschreiben 298
12.4 Nur-Lesen- und Lesen/Schreiben-Parts 301
12.4.1 Nur-Lesen-Parts 301
12.4.2 Lesen/Schreiben-Parts 301
12.5 Ein Part erzeugen 302
12.6 Ein Part in gemeinsam genutzten Bibliotheken
verfügbar machen 307
12.7 Eine KParts-Anwendung erzeugen 311
12.8 Mehrere Parts im selben Fenster einbetten 314
12.9 Ein KParts-Plugin erzeugen 316
12.10 Zusammenfassung 318
Kapitel 13 DCOP - das Desktop-Kommunikationsprotokoll 321
13.1 Motivation 323
13.2 Vorgeschichte 324
13.3 Zugrundeliegende Technologien 327
13.3.1 ICE - Der InterClient Exchange-Mechanismus 327
13.3.2 Datenübertragung 328
13.4 Architektur 329
13.5 Beschreibung der DCOP-Programmierschnittstelle 331
13.5.1 Vorarbeiten 331
13.5.2 send(), call(), process() und verwandte Methoden 332
13.5.3 Automatisierte Eleganz - dcopIDL 342
13.5.4 Makefile-Magie 347
13.6 Entwicklerinteressen und Tools in DCOP 348
13.6.1 Immer auf dem neuesten Stand 348
13.6.2 DCOP-Objekte referenzieren 349
13.6.3 Signale und Slots über den DCOP-Server 351
13.6.4 DCOP mit eingebettetem KPart 352
13.6.5 Leistungsfähigkeit und Overhead 354
13.7 DCOP in KDE 2.0 - einige Beispiele 355
13.7.1 KUniqueApplication 355
13.7.2 KNotify 359
13.7.3 Kleine Juwelen: dcop und kdcop 359
13.7.4 Verwandte Technologien im Überblick - dcopc,
XMLRPC und Bindungen 361
13.8 Zusammenfassung 362
Kapitel 14 Multimedia 363
14.1 Einführung in aRts/MCOP 365
14.1.1 Kapitelübersicht 368
14.2 Ein erster Einblick in das Schreiben von Modulen 369
14.2.1 Schritt 1 - Eine Schnittstellendefinition in IDL schreiben 370
14.2.2 Schritt 2 - Diese Definition mit mcopidl übersetzen 371
14.2.3 Schritt 3 - Eine Implementierung für die von Ihnen
deklarierten Schnittstellen aufsetzen 372
14.2.4 Schritt 4 - Die Implementierung mit REGISTER_IMPLEMENTATION registrieren 373
14.2.5 Schritt 5 - Gegebenenfalls eine .mcopclass-Datei schreiben 373
14.2.6 Wie man das neue Modul benutzt 374
14.3 MCOP 375
14.3.1 Die IDL-Sprache 376
14.3.2 Den IDL-Compiler aufrufen 379
14.3.3 Referenzzählung 380
14.3.4 Erste Objektreferenzen 380
14.3.5 Auf Streams zugreifen 381
14.3.6 Modulinitialisierung 382
14.3.7 Synchrone und asynchrone Streams im Vergleich 384
14.3.8 Objekte verbinden 386
14.4 Standard-Schnittstellen 387
14.4.1 Die SimpleSoundServer-Schnittstelle 387
14.4.2 Die KMedia2-Schnittstellen 389
14.4.3 Stereo-Effekte/Effectstacks 391
14.5 Implementierung eines StereoEffect 392
14.5.1 Und noch einmal IDL 392
14.5.2 Der Code 393
14.5.3 Den Effekt benutzen 394
14.6 KDE-Multimedia neben MCOP 396
14.6.1 KNotify API und KAudioPlayer 396
14.6.2 LibKMid 398
14.6.3 aKtion 398
14.7 Die Zukunft von MCOP 398
14.7.1 Composition/RAD 399
14.7.2 GUIs 399
14.7.3 Skripting 399
14.7.4 Weitere Medientypen 400
14.8 Zusammenfassung 400
Teil IV: Entwickler-Tools und Support 401
Kapitel 15 Dokumentierung 403
15.1 Quellcode dokumentieren 404
15.1.1 Herunterladen und Installieren von KDOC 404
15.1.2 Mit KDOC arbeiten 405
15.1.3 Bibliotheken-Dokumentation 408
15.1.4 Klassen-Dokumentation 408
15.1.5 Methoden-Dokumentation 409
15.1.6 Klassen- und Methoden-Dokumentation 409
15.2 Anwendungen dokumentieren 410
15.2.1 Herunterladen und Installieren der KDE DocBook-Tools 411
15.2.2 Verarbeiten einer DocBook-Dokumentation 412
15.2.3 Schreiben von DocBook-Dokumentation für KDE 413
15.3 Zusammenfassung 419
Kapitel 16 Code packen und vertreiben 421
16.1 Die Struktur eines Pakets 422
16.2 Administrative Dateien 423
16.2.1 Das Toplevel-Verzeichnis konfigurieren 424
16.2.2 Unterverzeichnisse konfigurieren 425
16.2.3 Administrative Dateien aktualisieren 428
16.2.4 Gemeinsam genutzte Bibliotheken erstellen 428
16.2.5 Verwendung der Testergebnisse 429
16.2.6 Make-Ziele 430
16.3 Ihre Anwendung vertreiben 430
16.3.1 Informative Textdateien 430
16.3.2 Aufräumarbeiten 431
16.3.3 Software hochladen und bekannt machen 432
16.4 Zusammenfassung 433
Kapitel 17 Quellcodeverwaltung mit CVS 435
17.1 Was ist CVS? 436
17.1.1 Die Rolle von CVS im KDE-Projekt 437
17.2 Organisation des CVS 437
17.2.1 Modulnamen 437
17.2.2 Zweige 438
17.3 Auf Quellcode im CVS zugreifen 439
17.3.1 Schnappschüsse 439
17.3.2 Die WWW-Schnittstelle zu CVS 440
17.3.3 CVSup 440
17.3.4 CVS-Konten 441
17.4 CVSup installieren und benutzen 441
17.5 cvs installieren und benutzen 442
17.5.1 Oft benutzte Befehle 442
17.6 Zusammenfassung 445
Kapitel 18 Die KDevelop-IDE: Die integrierte Entwicklungsumgebung für KDE 447
18.1 Allgemeines 448
18.1.1 Anwenderfreundlich und entwicklerfreundlich 450
18.2 KDE 2-Anwendungen erstellen 456
18.2.1 Vorlagen für KDE 2-Projekte 459
18.2.2 Projekte bearbeiten 460
18.3 Erste Schritte mit der KDE 2.x-API 461
18.3.1 Wie Sie Informationen abfragen 463
18.4 Der Klassenbrowser und Ihr Projekt 464
18.5 Die Dateibetrachter - die Fenster zu Ihren Projektdateien 468
18.5.1 Der logische Dateibetrachter (LFV) 468
18.5.2 Der echte Dateibetrachter (RFV) 469
18.6 Der KDevelop-Debugger 470
18.6.1 Einstellen der Debugger-Optionen 471
18.6.2 Wie man Debug-Informationen aktiviert 472
18.6.3 Ablauf einer Debug-Sitzung 473
18.7 KDevelop 2.0 - eine Vorschau 474
18.8 Zusammenfassung 476
Kapitel 19 Lizenzrechtliche Fragen 477
19.1 Was sind die "Streitfragen"? 478
19.1.1 Um welche Lizenzen geht es? 478
19.1.2 In welcher Hinsicht betreffen die Lizenzen mich? 479
19.2 Lizenzgebrauch bei KDE 480
19.2.1 Library GNU Public License (LGPL) 481
19.2.2 Die GNU General Public License (GPL) 481
19.2.3 Der "Krieg" GPL gegen Qt 482
19.3 Der Lizenzgebrauch bei Qt 484
19.3.1 Die FreeQt-Lizenz 484
19.3.2 Die Q Public License (QPL) 484
19.4 Die Geschichte der KDE/Qt-Lizenzen 486
19.4.1 Wie es zur QPL kam 486
19.4.2 Wie sich die QPL weiter entwickelte 487
19.5 Zusammenfassung 488
Kapitel A KDE-relevante Lizenzen 489
A.1 GNU Library General Public License (LGPL) 490
A.2 GNU General Public License 500
Kapitel B KDE-Klassenreferenz 507
Kapitel C Übungen 509
C.1 Kapitel 1 510
C.2 Kapitel 2 510
C.2.1 Übungen 510
C.3 Kapitel 3 515
C.3.1 Übungen 515
C.4 Kapitel 4 516
C.4.1 Übungen 516
C.5 Kapitel 5 523
C.5.1 Übungen 523
C.6 Kapitel 6 527
C.6.1 Übungen 527
C.7 Kapitel 7 535
C.7.1 Übungen 535
C.8 Kapitel 8 539
C.8.1 Übungen 539
C.9 Kapitel 9 544
C.9.1 Übungen 544
C.10 Kapitel 10 548
C.10.1 Übungen 548
C.11 Kapitel 11 551
C.11.1 Übungen 551
C.12 Kapitel 12 552
C.13 Kapitel 13 552
C.14 Kapitel 14 553
C.14.1 Übungen 553
Teil IV 556
Die Autoren 557
Stichwortverzeichnis 561
Danksagung 17
Teil I: Grundlagen der KDE-Anwendungsentwicklung 19
Einleitung 21
E.1 Voraussetzungen 22
E.2 Die Open Publication License (OPL) 22
E.3 Aufbau des Buchs 23
E.4 Die Konventionen in diesem Buch 23
E.5 Die CD zu diesem Buch 24
E.6 Zeit zu programmieren! 24
Kapitel 1 Der KDE-Hintergrund 25
1.1 Die Motivation für einen freien Desktop 26
1.2 Warum mit KDE entwickeln? 27
1.3 KDE - Organisation und Ressourcen 29
1.4 Systemanforderungen 30
1.5 KDE herunterladen und installieren 30
1.5.1 Binäre Pakete installieren 31
1.5.2 Quellcode-Pakete installieren 31
1.6 Lizenzen and Legalität 32
1.7 Lassen Sie uns nun mit dem Programmieren beginnen! 32
Kapitel 2 Eine einfache KDE-Anwendung 35
2.1 Der Desktop eines Linux/UNIX-Programmierers 36
2.1.1 Die nötige Ausstattung zum Bearbeiten des Codes 36
2.1.2 Debugger unter Linux 37
2.2 Ein KDE-Programm kompilieren 38
2.2.1 make benutzen 39
2.3 Struktur einer KDE-Anwendung 41
2.3.1 KApplication 42
2.3.2 KMainWindow 42
2.3.3 Eine typische main()-Funktion 44
2.4 GUI-Elemente 46
2.4.1 Die Menüleiste 48
2.4.2 Die Werkzeugleiste 51
2.4.3 Die Statusleiste 52
2.5 Programmierkonventionen 52
2.5.1 Namenskonventionen 52
2.5.2 Klassendokumentation 53
2.6 Zusammenfassung 53
Kapitel 3 Das Qt-Toolkit 55
3.1 Warum Qt? (Look and Feel) 56
3.2 Überblick über das Qt-Toolkit 56
3.2.1 QObject 57
3.2.2 QWidget 57
3.2.3 QPainter 60
3.2.4 QPushButton 62
3.3 Signale und Slots 64
3.3.1 Einen Slot erzeugen 65
3.3.2 Ein Signal aussenden 66
3.3.3 Einen Slot mit einem Signal verbinden 66
3.3.4 Signale und Slots mit Parametern 68
3.3.5 Slots in temporären Klassen 69
3.4 Der Meta Object Compiler (moc) 70
3.4.1 Verwendung des moc-Tools 70
3.4.2 Beispiel für die Verwendung von moc 70
3.5 Die Utility-Klassen 73
3.5.1 Templates 73
3.5.2 Standard Template Library (STL) 74
3.5.3 QList - Eine Qt-Template-Klasse 74
3.6 Besondere Features (ImageIO, OpenGL, Mesa) 75
3.6.1 ImageIO 75
3.6.2 OpenGL, Mesa 77
3.7 Zusammenfassung 80
Kapitel 4 Erstellung eigener KDE-Widgets 83
4.1 Grundlegendes über Widgets 84
4.1.1 Die Basisklasse QWidget 84
4.1.2 Widget-Attribute 88
4.1.3 Signale und Slots 88
4.1.4 Beispiel einer Widget-Klassendeklaration 88
4.1.5 Dokumentation 90
4.2 Widgets zeichnen 90
4.2.1 Wann wird gezeichnet? 90
4.2.2 Effizient Neuzeichnen 91
4.2.3 Ihr Widget mit QPainter zeichnen 92
4.2.4 Zeichenbefehle mit QPicture aufzeichnen 92
4.2.5 Ein einfaches Widget 92
4.3 Kind-Widgets 98
4.3.1 Verwaltung von Größe und Lage 100
4.3.2 Das Spiel spielen 105
4.4 Anwendereingaben verarbeiten 105
4.4.1 Mausereignisse 109
4.4.2 Tastaturereignisse 109
4.5 Zusammenfassung 110
Kapitel 5 KDE-Richtlinien für Benutzerschnittstellen 113
5.1 Die dokumentorientierte KDE-Schnittstelle 114
5.1.1 Die Menüleiste und die Werkzeugleiste 114
5.1.2 Aktionen erzeugen und manipulieren 116
5.1.3 Die Statusleiste 133
5.1.4 Inhaltsbereich 138
5.2 Den Anwender bei der Benutzung der Anwendung unterstützen 140
5.2.1 Tooltips, What's-This-Hilfe und mehr 141
5.3 Standard-Dialoge 146
5.4 Zusammenfassung 152
Kapitel 6 KDE-Stilreferenz 153
6.1 Auf Standardaktionen zugreifen 154
6.2 Session-Management 158
6.3 Die KDE-Standardsymbole 161
6.4 Internationalisierung 163
6.5 Klänge abspielen 165
6.6 Anwender-Benachrichtigungen 166
6.7 Andere Programme ausführen 167
6.8 Netzwerktransparenz 169
6.9 Benutzerfreundlichkeit 173
6.10 Zusammenfassung 174
Teil II: Fortgeschrittene KDE-Widgets
und UI-Design-Techniken 177
Kapitel 7 Weitere KDE-Richtlinien 179
7.1 Drag&Drop 180
7.1.1 Auf Drop-Ereignisse reagieren 181
7.1.2 Eine Drag-Operation starten 184
7.2 Konfigurationsdaten der Anwendungen 188
7.2.1 Zugriff auf Konfigurationsdateien 189
7.3 Session-Management 191
7.4 Anwendungsressourcen 196
7.4.1 Standard-Speicherorte für Ressourcen 197
7.4.2 Anwendungsressourcen 197
7.4.3 .desktop-Dateien erzeugen 202
7.5 Netzwerktransparenz 203
7.5.1 Programmierbeispiel 203
7.6 Zusammenfassung 208
Kapitel 8 Dialoge 209
8.1 Erste Schritte mit den Dialog-Widgets 210
8.2 Dialog-Design leicht gemacht 213
8.3 Modale und nicht-modale Dialoge 221
8.3.1 Nicht-modale Dialoge entfernen 224
8.4 Die KDE-Benutzerschnittstellenbibliothek (kdeui) 227
8.4.1 Vorgefertigte Dialoge 227
8.4.2 Bausteine (Manager-Widgets) 228
8.5 Dialogstil und KDialogBase 230
8.6 Ein größeres Beispiel: Der Einstellungen-Dialog von KEdit 233
8.7 UI-Design-Regeln für Dialoge 242
8.8 Zusammenfassung 243
Kapitel 9 Aufnahmebereite Benutzerschnittstellen 245
9.1 Die Bedeutung von aufnahmebereiten Schnittstellen 246
9.2 Die Aktualisierung von Fenstern beschleunigen 247
9.2.1 Mit KQuickDraw herumexperimentieren 251
9.2.2 Flackerfreie Aktualisierung 252
9.3 Ausführung längerer Jobs 253
9.3.1 Mit QTimer längere Jobs ausführen 253
9.3.2 Anwendungsfunktionen aktivieren/deaktivieren 258
9.3.3 Geschwindigkeit 259
9.3.4 Eine Alternative zu QTimer 259
9.4 Zusammenfassung 262
Kapitel 10 KDE-Widgets für komplexe Funktionen 263
10.1 HTML-Dateien rendern 264
10.1.1 Ein einfacher Webbrowser 264
10.2 Bilder bearbeiten 267
10.2.1 QImage und QPixmap im Vergleich 268
10.2.2 Ein Bildbetrachter/Bildwandler 269
10.3 Rechtschreibprüfung 272
10.3.1 KSpell in einer Anwendung verwenden 273
10.3.2 Modale Rechtschreibprüfung 276
10.3.3 KSpell konfigurieren 276
10.4 Zugriff auf das Adressbuch 278
10.4.1 Einen Kontakt auswählen 278
10.5 Zusammenfassung 281
Kapitel 11 Andere Arten von Anwendungen 283
11.1 Dialogbasierte Anwendungen 284
11.1.1 Dialogbasierte Anwendungen erstellen 284
11.2 Single-Instance-Anwendungen 287
11.3 Panel-Applets 290
11.4 Zusammenfassung 292
Teil III: Anwendungen - Interaktion und Integration 293
Kapitel 12 Komponenten erzeugen und verwenden (KParts) 295
12.1 Der Unterschied zwischen Komponenten und Widgets 296
12.2 Das KDE Komponenten-Framework 297
12.3 Benutzerschnittstellen in XML beschreiben 298
12.4 Nur-Lesen- und Lesen/Schreiben-Parts 301
12.4.1 Nur-Lesen-Parts 301
12.4.2 Lesen/Schreiben-Parts 301
12.5 Ein Part erzeugen 302
12.6 Ein Part in gemeinsam genutzten Bibliotheken
verfügbar machen 307
12.7 Eine KParts-Anwendung erzeugen 311
12.8 Mehrere Parts im selben Fenster einbetten 314
12.9 Ein KParts-Plugin erzeugen 316
12.10 Zusammenfassung 318
Kapitel 13 DCOP - das Desktop-Kommunikationsprotokoll 321
13.1 Motivation 323
13.2 Vorgeschichte 324
13.3 Zugrundeliegende Technologien 327
13.3.1 ICE - Der InterClient Exchange-Mechanismus 327
13.3.2 Datenübertragung 328
13.4 Architektur 329
13.5 Beschreibung der DCOP-Programmierschnittstelle 331
13.5.1 Vorarbeiten 331
13.5.2 send(), call(), process() und verwandte Methoden 332
13.5.3 Automatisierte Eleganz - dcopIDL 342
13.5.4 Makefile-Magie 347
13.6 Entwicklerinteressen und Tools in DCOP 348
13.6.1 Immer auf dem neuesten Stand 348
13.6.2 DCOP-Objekte referenzieren 349
13.6.3 Signale und Slots über den DCOP-Server 351
13.6.4 DCOP mit eingebettetem KPart 352
13.6.5 Leistungsfähigkeit und Overhead 354
13.7 DCOP in KDE 2.0 - einige Beispiele 355
13.7.1 KUniqueApplication 355
13.7.2 KNotify 359
13.7.3 Kleine Juwelen: dcop und kdcop 359
13.7.4 Verwandte Technologien im Überblick - dcopc,
XMLRPC und Bindungen 361
13.8 Zusammenfassung 362
Kapitel 14 Multimedia 363
14.1 Einführung in aRts/MCOP 365
14.1.1 Kapitelübersicht 368
14.2 Ein erster Einblick in das Schreiben von Modulen 369
14.2.1 Schritt 1 - Eine Schnittstellendefinition in IDL schreiben 370
14.2.2 Schritt 2 - Diese Definition mit mcopidl übersetzen 371
14.2.3 Schritt 3 - Eine Implementierung für die von Ihnen
deklarierten Schnittstellen aufsetzen 372
14.2.4 Schritt 4 - Die Implementierung mit REGISTER_IMPLEMENTATION registrieren 373
14.2.5 Schritt 5 - Gegebenenfalls eine .mcopclass-Datei schreiben 373
14.2.6 Wie man das neue Modul benutzt 374
14.3 MCOP 375
14.3.1 Die IDL-Sprache 376
14.3.2 Den IDL-Compiler aufrufen 379
14.3.3 Referenzzählung 380
14.3.4 Erste Objektreferenzen 380
14.3.5 Auf Streams zugreifen 381
14.3.6 Modulinitialisierung 382
14.3.7 Synchrone und asynchrone Streams im Vergleich 384
14.3.8 Objekte verbinden 386
14.4 Standard-Schnittstellen 387
14.4.1 Die SimpleSoundServer-Schnittstelle 387
14.4.2 Die KMedia2-Schnittstellen 389
14.4.3 Stereo-Effekte/Effectstacks 391
14.5 Implementierung eines StereoEffect 392
14.5.1 Und noch einmal IDL 392
14.5.2 Der Code 393
14.5.3 Den Effekt benutzen 394
14.6 KDE-Multimedia neben MCOP 396
14.6.1 KNotify API und KAudioPlayer 396
14.6.2 LibKMid 398
14.6.3 aKtion 398
14.7 Die Zukunft von MCOP 398
14.7.1 Composition/RAD 399
14.7.2 GUIs 399
14.7.3 Skripting 399
14.7.4 Weitere Medientypen 400
14.8 Zusammenfassung 400
Teil IV: Entwickler-Tools und Support 401
Kapitel 15 Dokumentierung 403
15.1 Quellcode dokumentieren 404
15.1.1 Herunterladen und Installieren von KDOC 404
15.1.2 Mit KDOC arbeiten 405
15.1.3 Bibliotheken-Dokumentation 408
15.1.4 Klassen-Dokumentation 408
15.1.5 Methoden-Dokumentation 409
15.1.6 Klassen- und Methoden-Dokumentation 409
15.2 Anwendungen dokumentieren 410
15.2.1 Herunterladen und Installieren der KDE DocBook-Tools 411
15.2.2 Verarbeiten einer DocBook-Dokumentation 412
15.2.3 Schreiben von DocBook-Dokumentation für KDE 413
15.3 Zusammenfassung 419
Kapitel 16 Code packen und vertreiben 421
16.1 Die Struktur eines Pakets 422
16.2 Administrative Dateien 423
16.2.1 Das Toplevel-Verzeichnis konfigurieren 424
16.2.2 Unterverzeichnisse konfigurieren 425
16.2.3 Administrative Dateien aktualisieren 428
16.2.4 Gemeinsam genutzte Bibliotheken erstellen 428
16.2.5 Verwendung der Testergebnisse 429
16.2.6 Make-Ziele 430
16.3 Ihre Anwendung vertreiben 430
16.3.1 Informative Textdateien 430
16.3.2 Aufräumarbeiten 431
16.3.3 Software hochladen und bekannt machen 432
16.4 Zusammenfassung 433
Kapitel 17 Quellcodeverwaltung mit CVS 435
17.1 Was ist CVS? 436
17.1.1 Die Rolle von CVS im KDE-Projekt 437
17.2 Organisation des CVS 437
17.2.1 Modulnamen 437
17.2.2 Zweige 438
17.3 Auf Quellcode im CVS zugreifen 439
17.3.1 Schnappschüsse 439
17.3.2 Die WWW-Schnittstelle zu CVS 440
17.3.3 CVSup 440
17.3.4 CVS-Konten 441
17.4 CVSup installieren und benutzen 441
17.5 cvs installieren und benutzen 442
17.5.1 Oft benutzte Befehle 442
17.6 Zusammenfassung 445
Kapitel 18 Die KDevelop-IDE: Die integrierte Entwicklungsumgebung für KDE 447
18.1 Allgemeines 448
18.1.1 Anwenderfreundlich und entwicklerfreundlich 450
18.2 KDE 2-Anwendungen erstellen 456
18.2.1 Vorlagen für KDE 2-Projekte 459
18.2.2 Projekte bearbeiten 460
18.3 Erste Schritte mit der KDE 2.x-API 461
18.3.1 Wie Sie Informationen abfragen 463
18.4 Der Klassenbrowser und Ihr Projekt 464
18.5 Die Dateibetrachter - die Fenster zu Ihren Projektdateien 468
18.5.1 Der logische Dateibetrachter (LFV) 468
18.5.2 Der echte Dateibetrachter (RFV) 469
18.6 Der KDevelop-Debugger 470
18.6.1 Einstellen der Debugger-Optionen 471
18.6.2 Wie man Debug-Informationen aktiviert 472
18.6.3 Ablauf einer Debug-Sitzung 473
18.7 KDevelop 2.0 - eine Vorschau 474
18.8 Zusammenfassung 476
Kapitel 19 Lizenzrechtliche Fragen 477
19.1 Was sind die "Streitfragen"? 478
19.1.1 Um welche Lizenzen geht es? 478
19.1.2 In welcher Hinsicht betreffen die Lizenzen mich? 479
19.2 Lizenzgebrauch bei KDE 480
19.2.1 Library GNU Public License (LGPL) 481
19.2.2 Die GNU General Public License (GPL) 481
19.2.3 Der "Krieg" GPL gegen Qt 482
19.3 Der Lizenzgebrauch bei Qt 484
19.3.1 Die FreeQt-Lizenz 484
19.3.2 Die Q Public License (QPL) 484
19.4 Die Geschichte der KDE/Qt-Lizenzen 486
19.4.1 Wie es zur QPL kam 486
19.4.2 Wie sich die QPL weiter entwickelte 487
19.5 Zusammenfassung 488
Kapitel A KDE-relevante Lizenzen 489
A.1 GNU Library General Public License (LGPL) 490
A.2 GNU General Public License 500
Kapitel B KDE-Klassenreferenz 507
Kapitel C Übungen 509
C.1 Kapitel 1 510
C.2 Kapitel 2 510
C.2.1 Übungen 510
C.3 Kapitel 3 515
C.3.1 Übungen 515
C.4 Kapitel 4 516
C.4.1 Übungen 516
C.5 Kapitel 5 523
C.5.1 Übungen 523
C.6 Kapitel 6 527
C.6.1 Übungen 527
C.7 Kapitel 7 535
C.7.1 Übungen 535
C.8 Kapitel 8 539
C.8.1 Übungen 539
C.9 Kapitel 9 544
C.9.1 Übungen 544
C.10 Kapitel 10 548
C.10.1 Übungen 548
C.11 Kapitel 11 551
C.11.1 Übungen 551
C.12 Kapitel 12 552
C.13 Kapitel 13 552
C.14 Kapitel 14 553
C.14.1 Übungen 553
Teil IV 556
Die Autoren 557
Stichwortverzeichnis 561