did-you-know? rent-now

Amazon no longer offers textbook rentals. We do!

did-you-know? rent-now

Amazon no longer offers textbook rentals. We do!

We're the #1 textbook rental company. Let us show you why.

9781590594674

Open Source Messaging Application Development

by
  • ISBN13:

    9781590594674

  • ISBN10:

    1590594673

  • Format: Paperback
  • Copyright: 2005-07-25
  • Publisher: Apress
  • Purchase Benefits
  • Free Shipping Icon Free Shipping On Orders Over $35!
    Your order must be $35 or more to qualify for free economy shipping. Bulk sales, PO's, Marketplace items, eBooks and apparel do not qualify for this offer.
  • eCampus.com Logo Get Rewarded for Ordering Your Textbooks! Enroll Now
List Price: $39.99 Save up to $26.49
  • Buy New
    $38.79
    Add to Cart Free Shipping Icon Free Shipping

    USUALLY SHIPS IN 2-3 BUSINESS DAYS

Supplemental Materials

What is included with this book?

Summary

Are you enamored with instant messaging? Would you like to learn how to create your own messaging application? This book shows you how, by dissecting Gaim-the world's most popular open source instant messaging application. Authored by the Gaim maintainer, Sean Egan, you are presented a thorough overview of Gaim architecture and Application Programming Interface. You'll learn how to make the most of the popular GTK+ graphical user interface toolkit. Egan guides you through the creation and installation of plug-ins, and discusses strategies involved in supporting messaging protocols like MSN Messenger, AIM and IRC. He also covers topics such as multi-platform support and internationalization.

Table of Contents

About the Author xv
About the Technical Reviewer xvii
Acknowledgments xix
Introduction xxi
Getting Started
1(22)
History of IM
1(1)
History of Gaim
2(1)
Setting Up Your Build Environment
3(9)
Cygwin
3(6)
MinGW
9(1)
Library Dependencies
10(2)
Getting Gaim
12(1)
Configuring Gaim
13(1)
Compiling Gaim
14(1)
Using Gaim
15(6)
Adding a New Account
15(1)
Accounts
16(1)
Buddy List
17(1)
Preferences
18(1)
Conversations
19(1)
Tools
20(1)
Summary
21(2)
The Open Source Development Process
23(14)
Open Source versus Free Software
23(1)
Why the Open Source Development Process Works
24(5)
Organization
24(3)
Motivations of Open Source Developers
27(2)
How the Open Source Development Process Works
29(2)
Meritocracy
29(1)
Cathedral and the Bazaar
30(1)
Contributing to Open Source Development
31(3)
Getting Started
31(2)
Climbing the Ranks
33(1)
Managing Your Own Open Source Project
34(2)
Becoming a Maintainer
34(1)
Management Techniques
35(1)
Summary
36(1)
Development Tools
37(48)
Editors
37(11)
Emacs
38(4)
vi
42(3)
IDEs
45(3)
GCC
48(3)
How a Program Is Built
49(1)
Invoking GCC
49(2)
make
51(4)
Makefile Rules
51(1)
Implicit Rules
52(1)
Variables
52(1)
Multiple Directories
53(2)
Autotools
55(6)
Automake
56(1)
Autoconf
57(2)
Other Required Files
59(1)
autogen.sh
60(1)
Using the Build Environment
61(1)
GDB
61(3)
Running Your Application Within GDB
61(1)
Analyzing Core Dumps with GDB
62(1)
Debugging Segfaults
62(2)
CVS
64(15)
Versioning
65(1)
Branches
65(1)
Using CVS
65(8)
View CVS
73(6)
SourceForge.net
79(5)
Submitting a Tracker Item
79(4)
Managing Tracker Items
83(1)
Summary
84(1)
Programming Gaim
85(28)
Compiling Your First Plug-In: helloworld.c
85(2)
Anatomy of a Gaim Plug-in
87(7)
GAIM_INIT_PLUGIN
87(2)
GaimPluginInfo
89(3)
plugin_load()
92(2)
#include Statements
94(1)
Object-Oriented Programming
94(2)
Abstraction
95(1)
Inheritance
95(1)
Polymorphism
96(1)
Object-Oriented C
96(5)
Objects
96(3)
Inheritance
99(1)
Accessor and Mutator Functions
100(1)
Data Structures
101(5)
Linked Lists
101(2)
Hash Tables
103(2)
Trees
105(1)
The Gaim API
106(6)
Core/UI Split
106(2)
GaimAccount (account.h)
108(1)
GaimConnection (connection.h)
108(1)
GaimConversation (conversation.h)
109(1)
GaimBuddyList (blist.h)
110(2)
Summary
112(1)
GTK+ Basics
113(84)
Overview of GTK+
113(4)
History
113(2)
Architecture
115(2)
Language Bindings
117(1)
Anatomy of a GTK+ Application
117(3)
The gtk_init() Function
118(1)
The Main Loop
119(1)
User Interface Principles
120(2)
Elegance
120(1)
GNOME HIG
120(2)
Creating Dialogs in GTK+
122(14)
Widget Packing
122(1)
Container Widgets
122(14)
Event Listeners
136(3)
Signals
136(1)
Callbacks
136(1)
A Sample GTK+ Application
137(1)
Gaim Signals
138(1)
GTK+ Widgets
139(33)
GtkLabel
139(1)
GtkImage
140(1)
GtkProgressBar
141(2)
GtkEntry
143(3)
GtkSpinButton
146(1)
GtkButton
147(3)
GtkToggleButton
150(1)
GtkCheckButton
151(1)
GtkRadioButton
152(1)
GtkTextView
153(5)
GtkTreeView
158(5)
GtkComboBox
163(1)
GtkToolbar
164(3)
GtkMenu
167(2)
GtkDialog
169(2)
GtkFileChooserDialog
171(1)
A Gaim Plug-in Example
172(23)
Gaim Plug-in Boilerplate
173(1)
The Data Structures
174(1)
Using Gaim Signals
175(1)
Scanning Messages
175(3)
Hooking into Account Actions
178(2)
Creating the GUI
180(7)
The Entire Plug-In
187(8)
Potential Enhancements
195(1)
Summary
195(2)
Advanced GTK+
197(40)
A Sample Plug-In
197(2)
GObject
199(18)
Object-Oriented Features of GObject
199(3)
Using GObject
202(15)
Creating a Composite Widget
217(2)
GdkPixbuf
219(3)
Working with Image Files
219(1)
GdkPixbufLoader
220(1)
Animations
221(1)
Pango
222(2)
PangoLayout
222(1)
PangoAttribute
223(1)
GDK
224(8)
The X Window System
224(2)
GdkDrawable
226(1)
Drawing Functions
227(5)
Overriding GtkWidget
232(3)
Data Fields of GtkWidget
232(1)
Overriding Functions
233(1)
Receiving Events
234(1)
Summary
235(2)
Sockets
237(30)
Networking
237(5)
The OSI Seven-Layer Model
238(4)
Domain Name Service
242(1)
Sockets
242(11)
Connecting to a Server
242(6)
Accepting Connections from Clients
248(4)
Reading and Writing Data to a Socket
252(1)
Non-blocking I/O
253(1)
select()
253(2)
fd_set
254(1)
timeval
254(1)
Non-Blocking Sockets with select ()
255(1)
Integrating into GLib's Main Loop
255(2)
GIOChannel
256(1)
g_io_add_watch()
256(1)
A Sample Gaim Plug-in
257(8)
The Boilerplate
257(1)
plugin_load ()
258(1)
incoming_cb()
259(1)
create_response()
260(1)
The Final Plug-In
261(3)
Possible Extensions
264(1)
Summary
265(2)
Protocol Plug-Ins
267(32)
Protocol Design
267(8)
Packet Framing
267(2)
Packet Headers
269(2)
Packet Data
271(4)
Protocol Implementation in C
275(5)
Binary Protocols
275(2)
Text Protocols
277(3)
Learning Protocols
280(8)
Reverse Engineering
280(1)
Legal Ramifications of Reverse Engineering
281(2)
Packet Sniffing
283(3)
Reverse Engineering Techniques
286(2)
Interfacing with Gaim
288(9)
server.c
288(1)
GaimPluginProtocolInfo
289(5)
Command Functions
294(3)
Program Flow of a prpl
297(1)
Summary
297(2)
Internationalization
299(20)
Internationalization Defined
300(1)
Text Encoding
301(5)
ASCII
302(1)
Foreign Encodings
302(1)
iconv
303(2)
Knowing What Encodings to Use
305(1)
Unicode
306(2)
Code Points
306(1)
Encodings
307(1)
UTF-8
307(1)
Translations with gettext
308(9)
An Overview of gettext
309(1)
Setting Up gettext
310(2)
Coding with gettext
312(2)
Translating with gettext
314(2)
Using Translations
316(1)
gettext Summarized
316(1)
Summary
317(2)
Portability
319(18)
The C Programming Language
319(6)
History
320(1)
K&R, ANSI, and C99
321(2)
libc
323(1)
Tips on Writing Portable C Code
324(1)
POSIX
325(1)
Porting to Windows with MinGW
326(1)
Cygwin
327(1)
Windows Compatibility Libraries
327(1)
GLib
327(6)
Portable Macros
328(1)
Utility Functions
329(1)
Memory Allocation
330(1)
File Management
331(1)
Plug-Ins
331(2)
GDK
333(2)
X11
333(1)
Win32
334(1)
WIMP
335(1)
Summary
335(2)
Index 337

Supplemental Materials

What is included with this book?

The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.

The Used, Rental and eBook copies of this book are not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.

Rewards Program