summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 56070ff)
raw | patch | inline | side by side (parent: 56070ff)
author | keescook <keescook@users.sourceforge.net> | |
Tue, 13 Mar 2007 06:01:53 +0000 (06:01 +0000) | ||
committer | keescook <keescook@users.sourceforge.net> | |
Tue, 13 Mar 2007 06:01:53 +0000 (06:01 +0000) |
src/Makefile_insert | patch | blob | history | |
src/extension/internal/cairo-renderer.cpp | patch | blob | history | |
src/gnuc-attribute.h | [deleted file] | patch | blob | history |
src/marker-status.cpp | [deleted file] | patch | blob | history |
src/marker-status.h | [deleted file] | patch | blob | history |
src/pedro/pedrogui.cpp | [deleted file] | patch | blob | history |
src/pedro/pedrogui.h | [deleted file] | patch | blob | history |
diff --git a/src/Makefile_insert b/src/Makefile_insert
index 281e8e14877dc4a94c33c1b04d1cddf87d3f76eb..e87beb03134f5d5d8b1039b638eed18f4edf6f4a 100644 (file)
--- a/src/Makefile_insert
+++ b/src/Makefile_insert
fontsize-expansion.cpp fontsize-expansion.h \
forward.h \
geom.cpp geom.h \
- gnuc-attribute.h \
gradient-context.cpp gradient-context.h \
gradient-drag.cpp gradient-drag.h \
help.cpp help.h \
layer-manager.cpp layer-manager.h \
macros.h \
main-cmdlineact.cpp main-cmdlineact.h \
- marker-status.cpp marker-status.h \
media.cpp media.h \
message-context.cpp message-context.h \
message-stack.cpp message-stack.h \
index 5fc1d16b7e231e072209f2ef5d5ed75b5727d38f..5583fa63c9a89dd164f956e7785193ea639dd278 100644 (file)
#include "display/canvas-bpath.h"
#include "sp-item.h"
#include "sp-item-group.h"
-#include "marker-status.h"
#include "style.h"
#include "marker.h"
#include "sp-linear-gradient.h"
diff --git a/src/gnuc-attribute.h b/src/gnuc-attribute.h
--- a/src/gnuc-attribute.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * Define _gnuc_attribute(blah) as synonym for __attribute__(blah) on gcc,
- * or as nothing on other compilers.
- */
-#ifndef _gnuc_attribute
-# ifdef __GNUC__
-# define _gnuc_attribute(_attr) __attribute__(_attr)
-# else
-# define _gnuc_attribute(_attr)
-# endif
-#endif
diff --git a/src/marker-status.cpp b/src/marker-status.cpp
--- a/src/marker-status.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-
-void marker_status(char const *format, ...)
-{
- /* Don't bother inlining this. Not called often, and eventually all
- calls will be removed anyway. */
-#if 0 /* Bryce sets this to 1. */
- va_list args;
- va_start(args, format);
- g_logv(marker_status_INITIAL_ARGS, format, args);
- va_end(args);
-#endif
-}
-
-/*
- Local Variables:
- mode:c++
- c-file-style:"stroustrup"
- c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
- indent-tabs-mode:nil
- fill-column:99
- End:
-*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
diff --git a/src/marker-status.h b/src/marker-status.h
--- a/src/marker-status.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef SEEN_MARKER_DEBUG_H
-#define SEEN_MARKER_DEBUG_H
-
-#include "gnuc-attribute.h"
-
-void marker_status(char const *format, ...) _gnuc_attribute((format(__printf__, 1, 2)));
-
-#endif /* !SEEN_MARKER_DEBUG_H */
-
-/*
- Local Variables:
- mode:c++
- c-file-style:"stroustrup"
- c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
- indent-tabs-mode:nil
- fill-column:99
- End:
-*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
diff --git a/src/pedro/pedrogui.cpp b/src/pedro/pedrogui.cpp
--- a/src/pedro/pedrogui.cpp
+++ /dev/null
@@ -1,2758 +0,0 @@
-/*
- * Simple demo GUI for the Pedro mini-XMPP client.
- *
- * Authors:
- * Bob Jamison
- *
- * Copyright (C) 2005 Bob Jamison
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "pedrogui.h"
-
-#include <stdarg.h>
-
-namespace Pedro
-{
-
-
-
-//#########################################################################
-//# I C O N S
-//#########################################################################
-
-static const guint8 icon_available[] =
-{ ""
- /* Pixbuf magic (0x47646b50) */
- "GdkP"
- /* length: header (24) + pixel_data (672) */
- "\0\0\2\270"
- /* pixdata_type (0x1010002) */
- "\1\1\0\2"
- /* rowstride (48) */
- "\0\0\0""0"
- /* width (12) */
- "\0\0\0\14"
- /* height (14) */
- "\0\0\0\16"
- /* pixel_data: */
- "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0""333\377333"
- "\377333\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
- "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0""333\377\377\377"
- "\0\377\377\377\0\377\377\377\0\377333\377\377\377\377\0\377\377\377\0"
- "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0""333\377\377"
- "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\37733"
- "3\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0""333\377"
- "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
- "\377\377\0\377\377\377\0\377333\377\377\377\377\0\377\377\377\0\377\377"
- "\377\0""333\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\0\377\0"
- "\0\0\377\377\377\0\377\377\377\0\377333\377\377\377\377\0\377\377\377"
- "\0\377\377\377\0""333\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377"
- "\0\377\0\0\0\377\377\377\0\377\377\377\0\377333\377\377\377\377\0\377"
- "\377\377\0\377\377\377\0""333\377\377\377\0\377\377\377\0\377\377\377"
- "\0\377\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377333\377\377"
- "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0""333\377\377\377"
- "\0\377\377\377\0\377\0\0\0\377\377\377\0\377\377\377\0\377333\377\377"
- "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0""3"
- "33\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\0\377\377\377\0"
- "\377333\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
- "\377\377\0\377\377\377\0""333\377\377\377\0\377\377\377\0\377\377\377"
- "\0\377333\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
- "\377\377\377\0\377\377\377\0\377\377\377\0LLL\377\0\0\0\377\0\0\0\377"
- "\0\0\0\377LLL\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
- "\0\377\377\377\0\377\377\377\0\377\377\377\0LLL\377\0\0\0\377\0\0\0\377"
- "\0\0\0\377LLL\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
- "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\0\0\0\377"
- "\0\0\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
- "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
- "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
- "\377\0\377\377\377\0\377\377\377\0\377\377\377\0"};
-
-
-static const guint8 icon_away[] =
-{ ""
- /* Pixbuf magic (0x47646b50) */
- "GdkP"
- /* length: header (24) + pixel_data (672) */
- "\0\0\2\270"
- /* pixdata_type (0x1010002) */
- "\1\1\0\2"
- /* rowstride (48) */
- "\0\0\0""0"
- /* width (12) */
- "\0\0\0\14"
- /* height (14) */
- "\0\0\0\16"
- /* pixel_data: */
- "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
- "\0""333\377333\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
- "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
- "\377\0""333\377\377\377\0\377\377\377\0\377333\377\377\377\377\0\377"
- "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
- "\377\377\0""333\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
- "\0\377333\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
- "\377\377\377\0\377\0\0\377\377\0\0\377\377\0\0\377\377\0\0\377\377\0"
- "\0\377\377\0\0\377\377\0\0\377\377\0\0\377\377\377\377\0\377\377\377"
- "\0\377\377\377\0\377\0\0\377\377\377\377\377\377\377\377\377\377\377"
- "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
- "\377\377\377\377\377\377\0\0\377\377\377\377\0\377\0\0\377\377\377\377"
- "\377\0\0\0\377\377\377\377\377\377\377\377\377\0\0\0\377\377\377\377"
- "\377\0\0\0\377\0\0\0\377\377\377\377\377\377\377\377\377\377\0\0\377"
- "\377\0\0\377\377\377\377\377\0\0\0\377\0\0\0\377\377\377\377\377\0\0"
- "\0\377\0\0\0\377\377\377\377\377\377\377\377\377\0\0\0\377\377\377\377"
- "\377\377\0\0\377\377\0\0\377\377\377\377\377\0\0\0\377\377\377\377\377"
- "\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\377\377"
- "\377\377\377\0\0\377\377\0\0\377\377\377\377\377\0\0\0\377\377\377\377"
- "\377\377\377\377\377\0\0\0\377\0\0\0\377\377\377\377\377\377\377\377"
- "\377\0\0\0\377\377\377\377\377\377\0\0\377\377\377\377\0\377\0\0\377"
- "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
- "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\0\0"
- "\377\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\377\377\0\0\377"
- "\377\0\0\377\377\0\0\377\377\0\0\377\377\0\0\377\377\0\0\377\377\0\0"
- "\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
- "\377\0\377\377\377\0LLL\377333\377\0\0\0\377\0\0\0\377LLL\377\377\377"
- "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
- "\377\0\377\377\377\0\377\377\377\0""333\377333\377333\377\377\377\377"
- "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
- "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
- "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
- "\0"};
-
-
-static const guint8 icon_chat[] =
-{ ""
- /* Pixbuf magic (0x47646b50) */
- "GdkP"
- /* length: header (24) + pixel_data (672) */
- "\0\0\2\270"
- /* pixdata_type (0x1010002) */
- "\1\1\0\2"
- /* rowstride (48) */
- "\0\0\0""0"
- /* width (12) */
- "\0\0\0\14"
- /* height (14) */
- "\0\0\0\16"
- /* pixel_data: */
- "\377\377\377\0\377\377\377\0\377\377\377\0""333\377333\377333\377\377"
- "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
- "\377\377\0\377\377\377\0\377\377\377\0""333\377\377\377\0\377\377\377"
- "\0\377\377\377\0\377333\377\377\377\377\0\377\377\377\0\377\377\377\0"
- "\377\377\377\0\377\377\377\0\377\377\377\0""333\377\377\377\0\377\377"
- "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377333\377\377\377\377"
- "\0\377\377\377\0\377\377\377\0\377\377\377\0""333\377\377\377\0\377\377"
- "\377\0\377fff\377\377\377\0\377fff\377\377\377\0\377\377\377\0\37733"
- "3\377\377\377\377\0\377\377\377\0\377\377\377\0""333\377\377\377\0\377"
- "fff\377\377\377\0\377fff\377\377\377\0\377fff\377\377\377\0\377333\377"
- "\377\377\377\0\377\377\377\0\377\377\377\0""333\377\377\377\0\377fff"
- "\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0\377\0\0\0\377\0"
- "\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0""33"
- "3\377\377\377\0\377fff\377\377\377\0\377\0\0\0\377\377\377\0\377\377"
- "\377\0\377\377\377\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377\377"
- "\377\0""333\377\377\377\0\377fff\377\0\0\0\377\377\377\0\377\377\377"
- "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\377"
- "\0\377\377\377\0\377\377\377\0""333\377\0\0\0\377\377\377\0\377\377\377"
- "\0\377\0\0\0\377\377\377\0\377\0\0\0\377\377\377\0\377\377\377\0\377"
- "\0\0\0\377\377\377\377\0\377\377\377\0""333\377\0\0\0\377\377\377\0\377"
- "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
- "\377\377\0\377\0\0\0\377\377\377\377\0\377\377\377\0LLL\377\0\0\0\377"
- "\377\377\0\377\377\377\0\377\0\0\0\377\377\377\0\377\0\0\0\377\377\377"
- "\0\377\377\377\0\377\0\0\0\377\377\377\377\0\377\377\377\0LLL\377333"
- "\377\0\0\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\0\377\377"
- "\377\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
- "\377\0""333\377333\377\0\0\0\377\377\377\0\377\377\377\0\377\377\377"
- "\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
- "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\0\0\0\377"
- "\0\0\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0"};
-
-
-static const guint8 icon_dnd[] =
-{ ""
- /* Pixbuf magic (0x47646b50) */
- "GdkP"
- /* length: header (24) + pixel_data (672) */
- "\0\0\2\270"
- /* pixdata_type (0x1010002) */
- "\1\1\0\2"
- /* rowstride (48) */
- "\0\0\0""0"
- /* width (12) */
- "\0\0\0\14"
- /* height (14) */
- "\0\0\0\16"
- /* pixel_data: */
- "\377\377\377\0\377\377\377\0\377\377\377\0""333\377333\377333\377\377"
- "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
- "\377\377\0\377\377\377\0\377\377\377\0""333\377\377\377\0\377\377\377"
- "\0\377\377\377\0\377333\377\377\377\377\0\377\377\377\0\377\377\377\0"
- "\377\377\377\0\377\377\377\0\377\377\377\0""333\377\377\377\0\377\377"
- "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377333\377\377\377\377"
- "\0\377\377\377\0\377\377\377\0\377\377\377\0""333\377\377\377\0\377\377"
- "\377\0\377fff\377\377\377\0\377fff\377\377\377\0\377\377\377\0\37733"
- "3\377\377\377\377\0\377\377\377\0\377\377\377\0""333\377\377\377\0\377"
- "fff\377\377\377\0\377fff\377\377\377\0\377fff\377\377\377\0\377333\377"
- "\377\377\377\0\377\377\377\0\377\377\377\0""333\377\377\377\0\377fff"
- "\377\377\377\0\377\377\377\0\377\377\377\0\377\177\0\0\377\177\0\0\377"
- "\177\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
- "333\377\377\377\0\377fff\377\377\377\0\377\177\0\0\377\377\0\0\377\377"
- "\0\0\377\377\0\0\377\177\0\0\377\377\377\377\0\377\377\377\0\377\377"
- "\377\0""333\377\377\377\0\377fff\377\177\0\0\377\377\377\377\377fff\377"
- "\377\0\0\377fff\377\377\377\377\377\177\0\0\377\377\377\377\0\377\377"
- "\377\0\377\377\377\0""333\377\177\0\0\377\377\0\0\377fff\377\377\377"
- "\377\377fff\377\377\377\377\377fff\377\377\0\0\377\177\0\0\377\377\377"
- "\377\0\377\377\377\0""333\377\177\0\0\377\377\0\0\377\377\0\0\377fff"
- "\377\377\377\377\377fff\377\377\0\0\377\377\0\0\377\177\0\0\377\377\377"
- "\377\0\377\377\377\0LLL\377\177\0\0\377\377\0\0\377fff\377\377\377\377"
- "\377fff\377\377\377\377\377fff\377\377\0\0\377\177\0\0\377\377\377\377"
- "\0\377\377\377\0LLL\377333\377\177\0\0\377\377\377\377\377fff\377\377"
- "\0\0\377fff\377\377\377\377\377\177\0\0\377\377\377\377\0\377\377\377"
- "\0\377\377\377\0\377\377\377\0""333\377333\377\177\0\0\377\377\0\0\377"
- "\377\0\0\377\377\0\0\377\177\0\0\377\377\377\377\0\377\377\377\0\377"
- "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
- "\377\377\0\177\0\0\377\177\0\0\377\177\0\0\377\377\377\377\0\377\377"
- "\377\0\377\377\377\0"};
-
-
-static const guint8 icon_error[] =
-{ ""
- /* Pixbuf magic (0x47646b50) */
- "GdkP"
- /* length: header (24) + pixel_data (672) */
- "\0\0\2\270"
- /* pixdata_type (0x1010002) */
- "\1\1\0\2"
- /* rowstride (48) */
- "\0\0\0""0"
- /* width (12) */
- "\0\0\0\14"
- /* height (14) */
- "\0\0\0\16"
- /* pixel_data: */
- "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
- "\0""333\377333\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
- "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0""333\377"
- "\377\377\377\0\0\0\0\377\350\350\350\377333\377\377\377\377\0\377\377"
- "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0""333\377"
- "\350\350\350\377fff\377\0\0\0\377\350\350\350\377\350\350\350\377333"
- "\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0""333\377"
- "\350\350\350\377\350\350\350\377\350\350\350\377\0\0\0\377\350\350\350"
- "\377\350\350\350\377\350\350\350\377333\377\377\377\377\0\377\377\377"
- "\0\377\377\377\0""333\377\350\350\350\377\350\350\350\377\0\0\0\377\0"
- "\0\0\377fff\377\350\350\350\377\350\350\350\377333\377\377\377\377\0"
- "\377\377\377\0\377\377\377\0""333\377\350\350\350\377\350\350\350\377"
- "\0\0\0\377\350\350\350\377\0\0\0\377\0\0\0\377\0\0\0\377333\377\377\377"
- "\377\0\377\377\377\0\377\377\377\0""333\377\350\350\350\377\0\0\0\377"
- "\350\350\350\377\0\0\0\377\350\350\350\377\350\350\350\377\350\350\350"
- "\377333\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0""3"
- "33\377\350\350\350\377\0\0\0\377\0\0\0\377\0\0\0\377\350\350\350\377"
- "fff\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
- "\377\0""333\377\0\0\0\377\350\350\350\377\350\350\350\377\350\350\350"
- "\377\0\0\0\377333\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
- "\377\0\377\377\377\0\377\377\377\0""333\377\350\350\350\377\350\350\350"
- "\377\350\350\350\377333\377\377\377\377\0\377\377\377\0\377\377\377\0"
- "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0LLL\377\0\0\0"
- "\377\0\0\0\377\0\0\0\377LLL\377\377\377\377\0\377\377\377\0\377\377\377"
- "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0LLL\377\0\0"
- "\0\377\0\0\0\377\0\0\0\377LLL\377\377\377\377\0\377\377\377\0\377\377"
- "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
- "\377\0\0\0\0\377\0\0\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377"
- "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
- "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
- "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"};
-
-
-static const guint8 icon_offline[] =
-{ ""
- /* Pixbuf magic (0x47646b50) */
- "GdkP"
- /* length: header (24) + pixel_data (672) */
- "\0\0\2\270"
- /* pixdata_type (0x1010002) */
- "\1\1\0\2"
- /* rowstride (48) */
- "\0\0\0""0"
- /* width (12) */
- "\0\0\0\14"
- /* height (14) */
- "\0\0\0\16"
- /* pixel_data: */
- "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0""333\377333"
- "\377333\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
- "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0""333\377\377\377"
- "\377\377\377\377\377\377\377\377\377\377333\377\377\377\377\0\377\377"
- "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0""333\377"
- "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
- "\377\377\377333\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
- "\377\0""333\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
- "\377\377\377\377\377\377\377\377\377\377\377\377\377\377333\377\377\377"
- "\377\0\377\377\377\0\377\377\377\0""333\377\377\377\377\377\377\377\377"
- "\377\0\0\0\377\377\377\377\377\0\0\0\377\377\377\377\377\377\377\377"
- "\377333\377\377\377\377\0\377\377\377\0\377\377\377\0""333\377\377\377"
- "\377\377\377\377\377\377\0\0\0\377\377\377\377\377\0\0\0\377\377\377"
- "\377\377\377\377\377\377333\377\377\377\377\0\377\377\377\0\377\377\377"
- "\0""333\377\377\377\377\377\377\377\377\377\377\377\377\377\0\0\0\377"
- "\377\377\377\377\377\377\377\377\377\377\377\377333\377\377\377\377\0"
- "\377\377\377\0\377\377\377\0\377\377\377\0""333\377\377\377\377\377\377"
- "\377\377\377\0\0\0\377\377\377\377\377\377\377\377\377333\377\377\377"
- "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0""333\377"
- "\377\377\377\377\377\377\377\377\0\0\0\377\377\377\377\377\377\377\377"
- "\377333\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
- "\377\377\0\377\377\377\0""333\377\377\377\377\377\377\377\377\377\377"
- "\377\377\377333\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
- "\377\0\377\377\377\0\377\377\377\0\377\377\377\0LLL\377\0\0\0\377\0\0"
- "\0\377\0\0\0\377LLL\377\377\377\377\0\377\377\377\0\377\377\377\0\377"
- "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0LLL\377\0\0\0\377"
- "\0\0\0\377\0\0\0\377LLL\377\377\377\377\0\377\377\377\0\377\377\377\0"
- "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
- "\0\0\0\0\377\0\0\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377\377"
- "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
- "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
- "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"};
-
-
-static const guint8 icon_xa[] =
-{ ""
- /* Pixbuf magic (0x47646b50) */
- "GdkP"
- /* length: header (24) + pixel_data (672) */
- "\0\0\2\270"
- /* pixdata_type (0x1010002) */
- "\1\1\0\2"
- /* rowstride (48) */
- "\0\0\0""0"
- /* width (12) */
- "\0\0\0\14"
- /* height (14) */
- "\0\0\0\16"
- /* pixel_data: */
- "\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\377333\377333\377"
- "333\377\377\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
- "\377\0\377\377\377\0\377\377\377\0\377\0\0\377333\377\377\377\0\377\377"
- "\377\0\377\377\377\0\377333\377\377\0\0\377\377\377\377\0\377\377\377"
- "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\377\377\377\0\377"
- "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\0\0\377"
- "\177\0\0\377\177\0\0\377\377\377\377\0\377\377\377\0""333\377\377\0\0"
- "\377\377\377\0\377fff\377\377\377\0\377\177\0\0\377\177\0\0\377\377\0"
- "\0\377\377\377\377\377\177\0\0\377\377\377\377\0\377\377\377\0""333\377"
- "\377\0\0\377\177\0\0\377\177\0\0\377\177\0\0\377\377\377\377\377\377"
- "\377\377\377\377\377\377\377\0\0\0\377\0\0\0\377\177\0\0\377\177\0\0"
- "\377\177\0\0\377\377\0\0\377\377\377\377\377\377\377\377\377\377\377"
- "\377\377\262\262\262\377\377\377\377\377\0\0\0\377\0\0\0\377\377\377"
- "\377\377\177\0\0\377\177\0\0\377\377\377\377\377\262\262\262\377\0\0"
- "\0\377\262\262\262\377\0\0\0\377\377\377\377\377\0\0\0\377\377\377\377"
- "\377\262\262\262\377\0\0\0\377\177\0\0\377\177\0\0\377\377\377\377\377"
- "\0\0\0\377\377\377\377\377\0\0\0\377\0\0\0\377\377\377\377\377\0\0\0"
- "\377\0\0\0\377\377\377\377\377\0\0\0\377\177\0\0\377\177\0\0\377\377"
- "\377\377\377\0\0\0\377\377\377\377\377\0\0\0\377\377\377\377\377\0\0"
- "\0\377\0\0\0\377\377\377\377\377\377\377\377\377\377\377\377\377\177"
- "\0\0\377\377\377\377\0\177\0\0\377\262\262\262\377\0\0\0\377\262\262"
- "\262\377\377\377\377\377\377\377\377\377\377\377\377\377\177\0\0\377"
- "\177\0\0\377\177\0\0\377\377\377\377\0\377\377\377\0\177\0\0\377\377"
- "\377\377\377\377\377\377\377\177\0\0\377\177\0\0\377\177\0\0\377\177"
- "\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
- "\377\377\0\177\0\0\377\177\0\0\377\177\0\0\377333\377\0\0\0\377\0\0\0"
- "\377LLL\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
- "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0""333\377333\377"
- "333\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
- "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
- "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
- "\377\0\377\377\377\0\377\377\377\0"};
-
-
-//#########################################################################
-//# R O S T E R
-//#########################################################################
-
-
-void Roster::doubleClickCallback(const Gtk::TreeModel::Path &path,
- Gtk::TreeViewColumn *col)
-{
- Glib::RefPtr<Gtk::TreeModel> model = rosterView.get_model();
- Glib::RefPtr<Gtk::TreeSelection> sel = rosterView.get_selection();
- Gtk::TreeModel::iterator iter = sel->get_selected();
- DOMString nick = iter->get_value(rosterColumns.userColumn);
- //printf("Double clicked:%s\n", nick.c_str());
- if (parent)
- parent->doChat(nick);
-
-}
-
-void Roster::chatCallback()
-{
- Glib::RefPtr<Gtk::TreeModel> model = rosterView.get_model();
- Glib::RefPtr<Gtk::TreeSelection> sel = rosterView.get_selection();
- Gtk::TreeModel::iterator iter = sel->get_selected();
- DOMString nick = iter->get_value(rosterColumns.userColumn);
- //printf("Chat with:%s\n", nick.c_str());
- if (parent)
- parent->doChat(nick);
-}
-
-void Roster::sendFileCallback()
-{
- Glib::RefPtr<Gtk::TreeModel> model = rosterView.get_model();
- Glib::RefPtr<Gtk::TreeSelection> sel = rosterView.get_selection();
- Gtk::TreeModel::iterator iter = sel->get_selected();
- DOMString nick = iter->get_value(rosterColumns.userColumn);
- //printf("Send file to:%s\n", nick.c_str());
- if (parent)
- parent->doSendFile(nick);
-}
-
-bool Roster::buttonPressCallback(GdkEventButton* event)
-{
- if( (event->type == GDK_BUTTON_PRESS) && (event->button == 3) )
- {
- Gtk::Widget *wid = uiManager->get_widget("/PopupMenu");
- Gtk::Menu *popupMenu = dynamic_cast<Gtk::Menu*>(wid);
- popupMenu->popup(event->button, event->time);
- return true;
- }
- else
- return false;
-}
-
-bool Roster::doSetup()
-{
- set_size_request(200,200);
-
- pixbuf_available = Gdk::Pixbuf::create_from_inline(
- sizeof(icon_available), icon_available, false);
- pixbuf_away = Gdk::Pixbuf::create_from_inline(
- sizeof(icon_away), icon_away, false);
- pixbuf_chat = Gdk::Pixbuf::create_from_inline(
- sizeof(icon_chat), icon_chat, false);
- pixbuf_dnd = Gdk::Pixbuf::create_from_inline(
- sizeof(icon_dnd), icon_dnd, false);
- pixbuf_error = Gdk::Pixbuf::create_from_inline(
- sizeof(icon_error), icon_error, false);
- pixbuf_offline = Gdk::Pixbuf::create_from_inline(
- sizeof(icon_offline), icon_offline, false);
- pixbuf_xa = Gdk::Pixbuf::create_from_inline(
- sizeof(icon_xa), icon_xa, false);
-
- rosterView.setParent(this);
- treeStore = Gtk::TreeStore::create(rosterColumns);
- rosterView.set_model(treeStore);
-
- Gtk::CellRendererText *rend0 = new Gtk::CellRendererText();
- //rend0->property_background() = "gray";
- //rend0->property_foreground() = "black";
- rosterView.append_column("Group", *rend0);
- Gtk::TreeViewColumn *col0 = rosterView.get_column(0);
- col0->add_attribute(*rend0, "text", 0);
-
- Gtk::CellRendererPixbuf *rend1 = new Gtk::CellRendererPixbuf();
- rosterView.append_column("Status", *rend1);
- Gtk::TreeViewColumn *col1 = rosterView.get_column(1);
- col1->add_attribute(*rend1, "pixbuf", 1);
-
- Gtk::CellRendererText *rend2 = new Gtk::CellRendererText();
- rosterView.append_column("Item", *rend2);
- Gtk::TreeViewColumn *col2 = rosterView.get_column(2);
- col2->add_attribute(*rend2, "text", 2);
-
- Gtk::CellRendererText *rend3 = new Gtk::CellRendererText();
- rosterView.append_column("Name", *rend3);
- Gtk::TreeViewColumn *col3 = rosterView.get_column(3);
- col3->add_attribute(*rend3, "text", 3);
-
- Gtk::CellRendererText *rend4 = new Gtk::CellRendererText();
- rosterView.append_column("Subscription", *rend4);
- Gtk::TreeViewColumn *col4 = rosterView.get_column(4);
- col4->add_attribute(*rend4, "text", 4);
-
- rosterView.signal_row_activated().connect(
- sigc::mem_fun(*this, &Roster::doubleClickCallback) );
-
- add(rosterView);
- set_policy(Gtk::POLICY_ALWAYS, Gtk::POLICY_ALWAYS);
-
- //##### POPUP MENU
- Glib::RefPtr<Gtk::ActionGroup> actionGroup = Gtk::ActionGroup::create();
-
- actionGroup->add( Gtk::Action::create("UserMenu", "_User Menu") );
-
- actionGroup->add( Gtk::Action::create("Chat",
- Gtk::Stock::CONNECT, "Chat"),
- sigc::mem_fun(*this, &Roster::chatCallback) );
- actionGroup->add( Gtk::Action::create("SendFile",
- Gtk::Stock::CONNECT, "Send file"),
- sigc::mem_fun(*this, &Roster::sendFileCallback) );
-
-
- uiManager = Gtk::UIManager::create();
-
- uiManager->insert_action_group(actionGroup, 0);
-
- Glib::ustring ui_info =
- "<ui>"
- " <popup name='PopupMenu'>"
- " <menuitem action='Chat'/>"
- " <menuitem action='SendFile'/>"
- " </popup>"
- "</ui>";
-
- uiManager->add_ui_from_string(ui_info);
-
-
- show_all_children();
-
- return true;
-}
-
-
-/**
- * Clear the roster
- */
-void Roster::clear()
-{
- treeStore->clear();
-}
-
-/**
- * Regenerate the roster
- */
-void Roster::refresh()
-{
- if (!parent)
- return;
- treeStore->clear();
- std::vector<XmppUser> items = parent->client.getRoster();
-
- //## Add in tree fashion
- DOMString lastGroup = "";
- Gtk::TreeModel::Row row = *(treeStore->append());
- row[rosterColumns.groupColumn] = "";
- for (unsigned int i=0 ; i<items.size() ; i++)
- {
- XmppUser user = items[i];
- if (user.group != lastGroup)
- {
- if (lastGroup.size()>0)
- row = *(treeStore->append());
- row[rosterColumns.groupColumn] = user.group;
- lastGroup = user.group;
- }
- Glib::RefPtr<Gdk::Pixbuf> pb = pixbuf_offline;
- if (user.show == "available")
- pb = pixbuf_available;
- else if (user.show == "away")
- pb = pixbuf_away;
- else if (user.show == "chat")
- pb = pixbuf_chat;
- else if (user.show == "dnd")
- pb = pixbuf_dnd;
- else if (user.show == "xa")
- pb = pixbuf_xa;
- else
- {
- //printf("Unknown show for %s:'%s'\n", user.c_str(), show.c_str());
- }
- Gtk::TreeModel::Row childRow = *(treeStore->append(row.children()));
- childRow[rosterColumns.statusColumn] = pb;
- childRow[rosterColumns.userColumn] = user.jid;
- childRow[rosterColumns.nameColumn] = user.nick;
- childRow[rosterColumns.subColumn] = user.subscription;
- }
- rosterView.expand_all();
-}
-
-//#########################################################################
-//# M E S S A G E L I S T
-//#########################################################################
-
-bool MessageList::doSetup()
-{
- set_size_request(400,200);
-
- messageListBuffer = Gtk::TextBuffer::create();
- messageList.set_buffer(messageListBuffer);
- messageList.set_editable(false);
- messageList.set_wrap_mode(Gtk::WRAP_WORD_CHAR);
-
- Glib::RefPtr<Gtk::TextBuffer::TagTable> table =
- messageListBuffer->get_tag_table();
- Glib::RefPtr<Gtk::TextBuffer::Tag> color0 =
- Gtk::TextBuffer::Tag::create("color0");
- color0->property_foreground() = "DarkGreen";
- color0->property_weight() = Pango::WEIGHT_BOLD;
- table->add(color0);
- Glib::RefPtr<Gtk::TextBuffer::Tag> color1 =
- Gtk::TextBuffer::Tag::create("color1");
- color1->property_foreground() = "chocolate4";
- color1->property_weight() = Pango::WEIGHT_BOLD;
- table->add(color1);
- Glib::RefPtr<Gtk::TextBuffer::Tag> color2 =
- Gtk::TextBuffer::Tag::create("color2");
- color2->property_foreground() = "red4";
- color2->property_weight() = Pango::WEIGHT_BOLD;
- table->add(color2);
- Glib::RefPtr<Gtk::TextBuffer::Tag> color3 =
- Gtk::TextBuffer::Tag::create("color3");
- color3->property_foreground() = "MidnightBlue";
- color3->property_weight() = Pango::WEIGHT_BOLD;
- table->add(color3);
- Glib::RefPtr<Gtk::TextBuffer::Tag> color4 =
- Gtk::TextBuffer::Tag::create("color4");
- color4->property_foreground() = "turquoise4";
- color4->property_weight() = Pango::WEIGHT_BOLD;
- table->add(color4);
- Glib::RefPtr<Gtk::TextBuffer::Tag> color5 =
- Gtk::TextBuffer::Tag::create("color5");
- color5->property_foreground() = "OliveDrab";
- color5->property_weight() = Pango::WEIGHT_BOLD;
- table->add(color5);
- Glib::RefPtr<Gtk::TextBuffer::Tag> color6 =
- Gtk::TextBuffer::Tag::create("color6");
- color6->property_foreground() = "purple4";
- color6->property_weight() = Pango::WEIGHT_BOLD;
- table->add(color6);
- Glib::RefPtr<Gtk::TextBuffer::Tag> color7 =
- Gtk::TextBuffer::Tag::create("color7");
- color7->property_foreground() = "VioletRed4";
- color7->property_weight() = Pango::WEIGHT_BOLD;
- table->add(color7);
-
- add(messageList);
- set_policy(Gtk::POLICY_ALWAYS, Gtk::POLICY_ALWAYS);
-
-
- show_all_children();
-
- return true;
-}
-
-/**
- * Clear all messages from the list
- */
-void MessageList::clear()
-{
- messageListBuffer->erase(messageListBuffer->begin(),
- messageListBuffer->end());
-}
-
-
-/**
- * Post a message to the list
- */
-void MessageList::postMessage(const DOMString &from, const DOMString &msg)
-{
- DOMString out = "<";
- out.append(from);
- out.append("> ");
-
- int val = 0;
- for (unsigned int i=0 ; i<from.size() ; i++)
- val += from[i];
- val = val % 8;
-
- char buf[16];
- sprintf(buf, "color%d", val);
- DOMString tagName = buf;
-
- messageListBuffer->insert_with_tag(
- messageListBuffer->end(), out, tagName);
- messageListBuffer->insert(messageListBuffer->end(), msg);
- messageListBuffer->insert(messageListBuffer->end(), "\n");
- //Gtk::Adjustment *adj = get_vadjustment();
- //adj->set_value(adj->get_upper()-adj->get_page_size());
- Glib::RefPtr<Gtk::TextBuffer::Mark> mark =
- messageListBuffer->create_mark("temp", messageListBuffer->end());
- messageList.scroll_mark_onscreen(mark);
- messageListBuffer->delete_mark(mark);
-}
-
-
-
-//#########################################################################
-//# U S E R L I S T
-//#########################################################################
-void UserList::doubleClickCallback(const Gtk::TreeModel::Path &path,
- Gtk::TreeViewColumn *col)
-{
- Glib::RefPtr<Gtk::TreeModel> model = userList.get_model();
- Glib::RefPtr<Gtk::TreeSelection> sel = userList.get_selection();
- Gtk::TreeModel::iterator iter = sel->get_selected();
- DOMString nick = iter->get_value(userListColumns.userColumn);
- //printf("Double clicked:%s\n", nick.c_str());
- if (parent)
- parent->doChat(nick);
-
-}
-
-void UserList::chatCallback()
-{
- Glib::RefPtr<Gtk::TreeModel> model = userList.get_model();
- Glib::RefPtr<Gtk::TreeSelection> sel = userList.get_selection();
- Gtk::TreeModel::iterator iter = sel->get_selected();
- DOMString nick = iter->get_value(userListColumns.userColumn);
- //printf("Chat with:%s\n", nick.c_str());
- if (parent)
- parent->doChat(nick);
-}
-
-void UserList::sendFileCallback()
-{
- Glib::RefPtr<Gtk::TreeModel> model = userList.get_model();
- Glib::RefPtr<Gtk::TreeSelection> sel = userList.get_selection();
- Gtk::TreeModel::iterator iter = sel->get_selected();
- DOMString nick = iter->get_value(userListColumns.userColumn);
- //printf("Send file to:%s\n", nick.c_str());
- if (parent)
- parent->doSendFile(nick);
-}
-
-bool UserList::buttonPressCallback(GdkEventButton* event)
-{
- if( (event->type == GDK_BUTTON_PRESS) && (event->button == 3) )
- {
- Gtk::Widget *wid = uiManager->get_widget("/PopupMenu");
- Gtk::Menu *popupMenu = dynamic_cast<Gtk::Menu*>(wid);
- popupMenu->popup(event->button, event->time);
- return true;
- }
- else
- return false;
-}
-
-bool UserList::doSetup()
-{
- set_size_request(200,200);
-
- setParent(NULL);
-
- pixbuf_available = Gdk::Pixbuf::create_from_inline(
- sizeof(icon_available), icon_available, false);
- pixbuf_away = Gdk::Pixbuf::create_from_inline(
- sizeof(icon_away), icon_away, false);
- pixbuf_chat = Gdk::Pixbuf::create_from_inline(
- sizeof(icon_chat), icon_chat, false);
- pixbuf_dnd = Gdk::Pixbuf::create_from_inline(
- sizeof(icon_dnd), icon_dnd, false);
- pixbuf_error = Gdk::Pixbuf::create_from_inline(
- sizeof(icon_error), icon_error, false);
- pixbuf_offline = Gdk::Pixbuf::create_from_inline(
- sizeof(icon_offline), icon_offline, false);
- pixbuf_xa = Gdk::Pixbuf::create_from_inline(
- sizeof(icon_xa), icon_xa, false);
-
- userList.setParent(this);
- userListStore = Gtk::ListStore::create(userListColumns);
- userList.set_model(userListStore);
-
- Gtk::CellRendererPixbuf *rend0 = new Gtk::CellRendererPixbuf();
- userList.append_column("Status", *rend0);
- Gtk::TreeViewColumn *col0 = userList.get_column(0);
- col0->add_attribute(*rend0, "pixbuf", 0);
-
- Gtk::CellRendererText *rend1 = new Gtk::CellRendererText();
- //rend1->property_background() = "gray";
- //rend1->property_foreground() = "black";
- userList.append_column("User", *rend1);
- Gtk::TreeViewColumn *col1 = userList.get_column(1);
- col1->add_attribute(*rend1, "text", 1);
-
- userList.set_headers_visible(false);
-
- userList.signal_row_activated().connect(
- sigc::mem_fun(*this, &UserList::doubleClickCallback) );
-
- add(userList);
- set_policy(Gtk::POLICY_ALWAYS, Gtk::POLICY_ALWAYS);
-
- //##### POPUP MENU
- Glib::RefPtr<Gtk::ActionGroup> actionGroup = Gtk::ActionGroup::create();
-
- actionGroup->add( Gtk::Action::create("UserMenu", "_User Menu") );
-
- actionGroup->add( Gtk::Action::create("Chat",
- Gtk::Stock::CONNECT, "Chat"),
- sigc::mem_fun(*this, &UserList::chatCallback) );
- actionGroup->add( Gtk::Action::create("SendFile",
- Gtk::Stock::CONNECT, "Send file"),
- sigc::mem_fun(*this, &UserList::sendFileCallback) );
-
-
- uiManager = Gtk::UIManager::create();
-
- uiManager->insert_action_group(actionGroup, 0);
-
- Glib::ustring ui_info =
- "<ui>"
- " <popup name='PopupMenu'>"
- " <menuitem action='Chat'/>"
- " <menuitem action='SendFile'/>"
- " </popup>"
- "</ui>";
-
- uiManager->add_ui_from_string(ui_info);
-
- show_all_children();
-
- return true;
-}
-
-/**
- * Clear all messages from the list
- */
-void UserList::clear()
-{
- userListStore->clear();
-}
-
-
-/**
- * Add a user to the list
- */
-void UserList::addUser(const DOMString &user, const DOMString &show)
-{
- Glib::RefPtr<Gdk::Pixbuf> pb = pixbuf_offline;
- if (show == "available")
- pb = pixbuf_available;
- else if (show == "away")
- pb = pixbuf_away;
- else if (show == "chat")
- pb = pixbuf_chat;
- else if (show == "dnd")
- pb = pixbuf_dnd;
- else if (show == "xa")
- pb = pixbuf_xa;
- else
- {
- //printf("Unknown show for %s:'%s'\n", user.c_str(), show.c_str());
- }
- Gtk::TreeModel::Row row = *(userListStore->append());
- row[userListColumns.userColumn] = user;
- row[userListColumns.statusColumn] = pb;
-}
-
-
-
-
-//#########################################################################
-//# C H A T W I N D O W
-//#########################################################################
-ChatWindow::ChatWindow(PedroGui &par, const DOMString jidArg)
- : parent(par)
-{
- jid = jidArg;
- doSetup();
-}
-
-ChatWindow::~ChatWindow()
-{
-}
-
-void ChatWindow::leaveCallback()
-{
- hide();
- parent.chatDelete(jid);
-}
-
-
-void ChatWindow::hideCallback()
-{
- hide();
- parent.chatDelete(jid);
-}
-
-
-void ChatWindow::textEnterCallback()
-{
- DOMString str = inputTxt.get_text();
- if (str.size() > 0)
- parent.client.message(jid, str);
- inputTxt.set_text("");
- messageList.postMessage(parent.client.getJid(), str);
-}
-
-bool ChatWindow::doSetup()
-{
- DOMString title = "Private Chat - ";
- title.append(jid);
- set_title(title);
-
- set_size_request(500,300);
-
- signal_hide().connect(
- sigc::mem_fun(*this, &ChatWindow::hideCallback) );
-
- Glib::RefPtr<Gtk::ActionGroup> actionGroup = Gtk::ActionGroup::create();
- actionGroup->add( Gtk::Action::create("MenuFile", "_File") );
- actionGroup->add( Gtk::Action::create("Leave", Gtk::Stock::CANCEL),
- sigc::mem_fun(*this, &ChatWindow::leaveCallback) );
-
-
- Glib::RefPtr<Gtk::UIManager> uiManager = Gtk::UIManager::create();
-
- uiManager->insert_action_group(actionGroup, 0);
- add_accel_group(uiManager->get_accel_group());
-
- Glib::ustring ui_info =
- "<ui>"
- " <menubar name='MenuBar'>"
- " <menu action='MenuFile'>"
- " <menuitem action='Leave'/>"
- " </menu>"
- " </menubar>"
- "</ui>";
-
- add(vbox);
-
- uiManager->add_ui_from_string(ui_info);
- Gtk::Widget* pMenuBar = uiManager->get_widget("/MenuBar");
- vbox.pack_start(*pMenuBar, Gtk::PACK_SHRINK);
-
- vbox.pack_end(vPaned);
-
- vPaned.add1(messageList);
- vPaned.add2(inputTxt);
-
- inputTxt.signal_activate().connect(
- sigc::mem_fun(*this, &ChatWindow::textEnterCallback) );
-
- show_all_children();
-
- return true;
-}
-
-bool ChatWindow::postMessage(const DOMString &data)
-{
- messageList.postMessage(jid, data);
- return true;
-}
-
-//#########################################################################
-//# G R O U P C H A T W I N D O W
-//#########################################################################
-
-GroupChatWindow::GroupChatWindow(PedroGui &par,
- const DOMString &groupJidArg,
- const DOMString &nickArg)
- : parent(par)
-{
- groupJid = groupJidArg;
- nick = nickArg;
- doSetup();
-}
-
-GroupChatWindow::~GroupChatWindow()
-{
-}
-
-
-void GroupChatWindow::leaveCallback()
-{
- parent.client.groupChatLeave(groupJid, nick);
- hide();
- parent.groupChatDelete(groupJid, nick);
-}
-
-void GroupChatWindow::hideCallback()
-{
- parent.client.groupChatLeave(groupJid, nick);
- hide();
- parent.groupChatDelete(groupJid, nick);
-}
-
-void GroupChatWindow::textEnterCallback()
-{
- DOMString str = inputTxt.get_text();
- if (str.size() > 0)
- parent.client.groupChatMessage(groupJid, str);
- inputTxt.set_text("");
-}
-
-bool GroupChatWindow::doSetup()
-{
- DOMString title = "Group Chat - ";
- title.append(groupJid);
- set_title(title);
-
- userList.setParent(this);
-
- set_size_request(500,300);
-
- signal_hide().connect(
- sigc::mem_fun(*this, &GroupChatWindow::hideCallback) );
-
- Glib::RefPtr<Gtk::ActionGroup> actionGroup = Gtk::ActionGroup::create();
- actionGroup->add( Gtk::Action::create("MenuFile", "_File") );
- actionGroup->add( Gtk::Action::create("Leave", Gtk::Stock::CANCEL),
- sigc::mem_fun(*this, &GroupChatWindow::leaveCallback) );
-
-
- Glib::RefPtr<Gtk::UIManager> uiManager = Gtk::UIManager::create();
-
- uiManager->insert_action_group(actionGroup, 0);
- add_accel_group(uiManager->get_accel_group());
-
- Glib::ustring ui_info =
- "<ui>"
- " <menubar name='MenuBar'>"
- " <menu action='MenuFile'>"
- " <menuitem action='Leave'/>"
- " </menu>"
- " </menubar>"
- "</ui>";
-
- add(vbox);
- uiManager->add_ui_from_string(ui_info);
- Gtk::Widget* pMenuBar = uiManager->get_widget("/MenuBar");
- vbox.pack_start(*pMenuBar, Gtk::PACK_SHRINK);
-
- vbox.pack_end(vPaned);
-
- vPaned.add1(hPaned);
- vPaned.add2(inputTxt);
- inputTxt.signal_activate().connect(
- sigc::mem_fun(*this, &GroupChatWindow::textEnterCallback) );
-
-
- hPaned.add1(messageList);
- hPaned.add2(userList);
-
-
- show_all_children();
-
-
- return true;
-}
-
-bool GroupChatWindow::receiveMessage(const DOMString &from,
- const DOMString &data)
-{
- messageList.postMessage(from, data);
- return true;
-}
-
-bool GroupChatWindow::receivePresence(const DOMString &fromNick,
- bool presence,
- const DOMString &show,
- const DOMString &status)
-{
-
- DOMString presStr = "";
- presStr.append(fromNick);
- if (!presence)
- presStr.append(" left the group");
- else
- {
- if (show.size()<1)
- presStr.append(" joined the group");
- else
- {
- presStr.append(" : ");
- presStr.append(show);
- }
- }
-
- if (presStr != "xa")
- messageList.postMessage("*", presStr);
-
- userList.clear();
- std::vector<XmppUser> memberList =
- parent.client.groupChatGetUserList(groupJid);
- for (unsigned int i=0 ; i<memberList.size() ; i++)
- {
- XmppUser user = memberList[i];
- userList.addUser(user.nick, user.show);
- }
- return true;
-}
-
-
-void GroupChatWindow::doChat(const DOMString &nick)
-{
- printf("##Chat with %s\n", nick.c_str());
- DOMString fullJid = groupJid;
- fullJid.append("/");
- fullJid.append(nick);
- parent.doChat(fullJid);
-}
-
-void GroupChatWindow::doSendFile(const DOMString &nick)
-{
- printf("##Send file to %s\n", nick.c_str());
- DOMString fullJid = groupJid;
- fullJid.append("/");
- fullJid.append(nick);
- parent.doSendFile(fullJid);
-
-}
-
-
-
-
-//#########################################################################
-//# C O N F I G D I A L O G
-//#########################################################################
-
-
-void ConfigDialog::okCallback()
-{
- Glib::ustring pass = passField.get_text();
- Glib::ustring newpass = newField.get_text();
- Glib::ustring confpass = confField.get_text();
- if ((pass.size() < 5 || pass.size() > 12 ) ||
- (newpass.size() < 5 || newpass.size() > 12 ) ||
- (confpass.size() < 5 || confpass.size()> 12 ))
- {
- Gtk::MessageDialog dlg(*this, "Password must be 5 to 12 characters",
- false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true);
- dlg.run();
- }
- else if (newpass != confpass)
- {
- Gtk::MessageDialog dlg(*this, "New password and confirmation do not match",
- false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true);
- dlg.run();
- }
- else
- {
- //response(Gtk::RESPONSE_OK);
- hide();
- }
-}
-
-void ConfigDialog::cancelCallback()
-{
- //response(Gtk::RESPONSE_CANCEL);
- hide();
-}
-
-void ConfigDialog::on_response(int response_id)
-{
- if (response_id == Gtk::RESPONSE_OK)
- okCallback();
- else
- cancelCallback();
-}
-
-bool ConfigDialog::doSetup()
-{
- set_title("Change Password");
- set_size_request(300,200);
-
- Glib::RefPtr<Gtk::ActionGroup> actionGroup = Gtk::ActionGroup::create();
- actionGroup->add( Gtk::Action::create("MenuFile", "_File") );
- actionGroup->add( Gtk::Action::create("Change", Gtk::Stock::OK, "Change Password"),
- sigc::mem_fun(*this, &ConfigDialog::okCallback) );
- actionGroup->add( Gtk::Action::create("Cancel", Gtk::Stock::CANCEL, "Cancel"),
- sigc::mem_fun(*this, &ConfigDialog::cancelCallback) );
-
-
- Glib::RefPtr<Gtk::UIManager> uiManager = Gtk::UIManager::create();
-
- uiManager->insert_action_group(actionGroup, 0);
- add_accel_group(uiManager->get_accel_group());
-
- Glib::ustring ui_info =
- "<ui>"
- " <menubar name='MenuBar'>"
- " <menu action='MenuFile'>"
- " <menuitem action='Change'/>"
- " <separator/>"
- " <menuitem action='Cancel'/>"
- " </menu>"
- " </menubar>"
- "</ui>";
-
- uiManager->add_ui_from_string(ui_info);
- Gtk::Widget* pMenuBar = uiManager->get_widget("/MenuBar");
- get_vbox()->pack_start(*pMenuBar, Gtk::PACK_SHRINK);
-
- table.resize(3, 2);
- get_vbox()->pack_start(table);
-
- passLabel.set_text("Current Password");
- table.attach(passLabel, 0, 1, 0, 1);
- passField.set_visibility(false);
- passField.set_text(parent.client.getPassword());
- table.attach(passField, 1, 2, 0, 1);
-
- newLabel.set_text("New Password");
- table.attach(newLabel, 0, 1, 1, 2);
- newField.set_visibility(false);
- table.attach(newField, 1, 2, 1, 2);
-
- confLabel.set_text("Confirm New Password");
- table.attach(confLabel, 0, 1, 2, 3);
- confField.set_visibility(false);
- confField.signal_activate().connect(
- sigc::mem_fun(*this, &ConfigDialog::okCallback) );
- table.attach(confField, 1, 2, 2, 3);
-
- add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
- add_button(Gtk::Stock::OK, Gtk::RESPONSE_OK);
-
- show_all_children();
-
- return true;
-}
-
-//#########################################################################
-//# P A S S W O R D D I A L O G
-//#########################################################################
-
-
-void PasswordDialog::okCallback()
-{
- Glib::ustring pass = passField.get_text();
- Glib::ustring newpass = newField.get_text();
- Glib::ustring confpass = confField.get_text();
- if ((pass.size() < 5 || pass.size() > 12 ) ||
- (newpass.size() < 5 || newpass.size() > 12 ) ||
- (confpass.size() < 5 || confpass.size()> 12 ))
- {
- Gtk::MessageDialog dlg(*this, "Password must be 5 to 12 characters",
- false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true);
- dlg.run();
- }
- else if (newpass != confpass)
- {
- Gtk::MessageDialog dlg(*this, "New password and confirmation do not match",
- false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true);
- dlg.run();
- }
- else
- {
- //response(Gtk::RESPONSE_OK);
- hide();
- }
-}
-
-void PasswordDialog::cancelCallback()
-{
- //response(Gtk::RESPONSE_CANCEL);
- hide();
-}
-
-void PasswordDialog::on_response(int response_id)
-{
- if (response_id == Gtk::RESPONSE_OK)
- okCallback();
- else
- cancelCallback();
-}
-
-bool PasswordDialog::doSetup()
-{
- set_title("Change Password");
- set_size_request(300,200);
-
- Glib::RefPtr<Gtk::ActionGroup> actionGroup = Gtk::ActionGroup::create();
- actionGroup->add( Gtk::Action::create("MenuFile", "_File") );
- actionGroup->add( Gtk::Action::create("Change", Gtk::Stock::OK, "Change Password"),
- sigc::mem_fun(*this, &PasswordDialog::okCallback) );
- actionGroup->add( Gtk::Action::create("Cancel", Gtk::Stock::CANCEL, "Cancel"),
- sigc::mem_fun(*this, &PasswordDialog::cancelCallback) );
-
-
- Glib::RefPtr<Gtk::UIManager> uiManager = Gtk::UIManager::create();
-
- uiManager->insert_action_group(actionGroup, 0);
- add_accel_group(uiManager->get_accel_group());
-
- Glib::ustring ui_info =
- "<ui>"
- " <menubar name='MenuBar'>"
- " <menu action='MenuFile'>"
- " <menuitem action='Change'/>"
- " <separator/>"
- " <menuitem action='Cancel'/>"
- " </menu>"
- " </menubar>"
- "</ui>";
-
- uiManager->add_ui_from_string(ui_info);
- Gtk::Widget* pMenuBar = uiManager->get_widget("/MenuBar");
- get_vbox()->pack_start(*pMenuBar, Gtk::PACK_SHRINK);
-
- table.resize(3, 2);
- get_vbox()->pack_start(table);
-
- passLabel.set_text("Current Password");
- table.attach(passLabel, 0, 1, 0, 1);
- passField.set_visibility(false);
- passField.set_text(parent.client.getPassword());
- table.attach(passField, 1, 2, 0, 1);
-
- newLabel.set_text("New Password");
- table.attach(newLabel, 0, 1, 1, 2);
- newField.set_visibility(false);
- table.attach(newField, 1, 2, 1, 2);
-
- confLabel.set_text("Confirm New Password");
- table.attach(confLabel, 0, 1, 2, 3);
- confField.set_visibility(false);
- confField.signal_activate().connect(
- sigc::mem_fun(*this, &PasswordDialog::okCallback) );
- table.attach(confField, 1, 2, 2, 3);
-
- add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
- add_button(Gtk::Stock::OK, Gtk::RESPONSE_OK);
-
- show_all_children();
-
- return true;
-}
-
-//#########################################################################
-//# C H A T D I A L O G
-//#########################################################################
-
-
-void ChatDialog::okCallback()
-{
- response(Gtk::RESPONSE_OK);
- hide();
-}
-
-void ChatDialog::cancelCallback()
-{
- response(Gtk::RESPONSE_CANCEL);
- hide();
-}
-
-
-bool ChatDialog::doSetup()
-{
- set_title("Chat with User");
- set_size_request(300,200);
-
- Glib::RefPtr<Gtk::ActionGroup> actionGroup = Gtk::ActionGroup::create();
- actionGroup->add( Gtk::Action::create("MenuFile", "_File") );
- actionGroup->add( Gtk::Action::create("Chat", Gtk::Stock::CONNECT, "Chat"),
- sigc::mem_fun(*this, &ChatDialog::okCallback) );
- actionGroup->add( Gtk::Action::create("Cancel", Gtk::Stock::CANCEL, "Cancel"),
- sigc::mem_fun(*this, &ChatDialog::cancelCallback) );
-
-
- Glib::RefPtr<Gtk::UIManager> uiManager = Gtk::UIManager::create();
-
- uiManager->insert_action_group(actionGroup, 0);
- add_accel_group(uiManager->get_accel_group());
-
- Glib::ustring ui_info =
- "<ui>"
- " <menubar name='MenuBar'>"
- " <menu action='MenuFile'>"
- " <menuitem action='Chat'/>"
- " <separator/>"
- " <menuitem action='Cancel'/>"
- " </menu>"
- " </menubar>"
- "</ui>";
-
- uiManager->add_ui_from_string(ui_info);
- Gtk::Widget* pMenuBar = uiManager->get_widget("/MenuBar");
- get_vbox()->pack_start(*pMenuBar, Gtk::PACK_SHRINK);
-
- table.resize(2, 2);
- get_vbox()->pack_start(table);
-
- userLabel.set_text("User");
- table.attach(userLabel, 0, 1, 0, 1);
- //userField.set_text("");
- table.attach(userField, 1, 2, 0, 1);
-
- //userField.set_text("");
- table.attach(textField, 0, 2, 1, 2);
-
- add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
- add_button(Gtk::Stock::OPEN, Gtk::RESPONSE_OK);
-
- show_all_children();
-
- return true;
-}
-
-//#########################################################################
-//# G R O U P C H A T D I A L O G
-//#########################################################################
-
-
-void GroupChatDialog::okCallback()
-{
- response(Gtk::RESPONSE_OK);
- hide();
-}
-
-void GroupChatDialog::cancelCallback()
-{
- response(Gtk::RESPONSE_CANCEL);
- hide();
-}
-
-
-bool GroupChatDialog::doSetup()
-{
- set_title("Join Group Chat");
- set_size_request(300,200);
-
- Glib::RefPtr<Gtk::ActionGroup> actionGroup = Gtk::ActionGroup::create();
- actionGroup->add( Gtk::Action::create("MenuFile", "_File") );
- actionGroup->add( Gtk::Action::create("Join", Gtk::Stock::CONNECT, "Join Group"),
- sigc::mem_fun(*this, &GroupChatDialog::okCallback) );
- actionGroup->add( Gtk::Action::create("Cancel", Gtk::Stock::CANCEL, "Cancel"),
- sigc::mem_fun(*this, &GroupChatDialog::cancelCallback) );
-
-
- Glib::RefPtr<Gtk::UIManager> uiManager = Gtk::UIManager::create();
-
- uiManager->insert_action_group(actionGroup, 0);
- add_accel_group(uiManager->get_accel_group());
-
- Glib::ustring ui_info =
- "<ui>"
- " <menubar name='MenuBar'>"
- " <menu action='MenuFile'>"
- " <menuitem action='Join'/>"
- " <separator/>"
- " <menuitem action='Cancel'/>"
- " </menu>"
- " </menubar>"
- "</ui>";
-
- uiManager->add_ui_from_string(ui_info);
- Gtk::Widget* pMenuBar = uiManager->get_widget("/MenuBar");
- get_vbox()->pack_start(*pMenuBar, Gtk::PACK_SHRINK);
-
- table.resize(4, 2);
- get_vbox()->pack_start(table);
-
- groupLabel.set_text("Group");
- table.attach(groupLabel, 0, 1, 0, 1);
- groupField.set_text(parent.config.getMucGroup());
- table.attach(groupField, 1, 2, 0, 1);
-
- hostLabel.set_text("Host");
- table.attach(hostLabel, 0, 1, 1, 2);
- hostField.set_text(parent.config.getMucHost());
- table.attach(hostField, 1, 2, 1, 2);
-
- nickLabel.set_text("Alt Name");
- table.attach(nickLabel, 0, 1, 2, 3);
- nickField.set_text(parent.config.getMucNick());
- table.attach(nickField, 1, 2, 2, 3);
-
- passLabel.set_text("Password");
- table.attach(passLabel, 0, 1, 3, 4);
- passField.set_visibility(false);
- passField.set_text(parent.config.getMucPassword());
- table.attach(passField, 1, 2, 3, 4);
-
-
- add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
- add_button(Gtk::Stock::OPEN, Gtk::RESPONSE_OK);
-
- show_all_children();
-
- return true;
-}
-
-
-
-
-//#########################################################################
-//# C O N N E C T D I A L O G
-//#########################################################################
-
-
-void ConnectDialog::okCallback()
-{
- response(Gtk::RESPONSE_OK);
- hide();
-}
-
-void ConnectDialog::saveCallback()
-{
- Gtk::Entry txtField;
- Gtk::Dialog dlg("Account name", *this, true, true);
- dlg.get_vbox()->pack_start(txtField);
- txtField.signal_activate().connect(
- sigc::bind(sigc::mem_fun(dlg, &Gtk::Dialog::response),
- Gtk::RESPONSE_OK ));
- dlg.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
- dlg.add_button(Gtk::Stock::OK, Gtk::RESPONSE_OK);
- dlg.show_all_children();
- int ret = dlg.run();
- if (ret != Gtk::RESPONSE_OK)
- return;
-
- Glib::ustring name = txtField.get_text();
- if (name.size() < 1)
- {
- parent.error("Account name too short");
- return;
- }
-
- if (parent.config.accountExists(name))
- {
- parent.config.accountRemove(name);
- }
-
- XmppAccount account;
- account.setName(name);
- account.setHost(getHost());
- account.setPort(getPort());
- account.setUsername(getUser());
- account.setPassword(getPass());
- parent.config.accountAdd(account);
-
- refresh();
-
- parent.configSave();
-}
-
-void ConnectDialog::cancelCallback()
-{
- response(Gtk::RESPONSE_CANCEL);
- hide();
-}
-
-
-void ConnectDialog::doubleClickCallback(
- const Gtk::TreeModel::Path &path,
- Gtk::TreeViewColumn *col)
-{
- Glib::RefPtr<Gtk::TreeModel> model = accountView.get_model();
- Glib::RefPtr<Gtk::TreeSelection> sel = accountView.get_selection();
- Gtk::TreeModel::iterator iter = sel->get_selected();
- DOMString name = iter->get_value(accountColumns.nameColumn);
- //printf("Double clicked:%s\n", name.c_str());
- XmppAccount account;
- if (!parent.config.accountFind(name, account))
- return;
- setHost(account.getHost());
- setPort(account.getPort());
- setUser(account.getUsername());
- setPass(account.getPassword());
-
- response(Gtk::RESPONSE_OK);
- hide();
-}
-
-void ConnectDialog::selectedCallback()
-{
- Glib::RefPtr<Gtk::TreeModel> model = accountView.get_model();
- Glib::RefPtr<Gtk::TreeSelection> sel = accountView.get_selection();
- Gtk::TreeModel::iterator iter = sel->get_selected();
- DOMString name = iter->get_value(accountColumns.nameColumn);
- //printf("Single clicked:%s\n", name.c_str());
- XmppAccount account;
- if (!parent.config.accountFind(name, account))
- return;
- setHost(account.getHost());
- setPort(account.getPort());
- setUser(account.getUsername());
- setPass(account.getPassword());
-}
-
-void ConnectDialog::deleteCallback()
-{
- Glib::RefPtr<Gtk::TreeModel> model = accountView.get_model();
- Glib::RefPtr<Gtk::TreeSelection> sel = accountView.get_selection();
- Gtk::TreeModel::iterator iter = sel->get_selected();
- DOMString name = iter->get_value(accountColumns.nameColumn);
-
- parent.config.accountRemove(name);
- refresh();
- parent.configSave();
-
-}
-
-
-
-void ConnectDialog::buttonPressCallback(GdkEventButton* event)
-{
- if( (event->type == GDK_BUTTON_PRESS) && (event->button == 3) )
- {
- Gtk::Widget *wid = accountUiManager->get_widget("/PopupMenu");
- Gtk::Menu *popupMenu = dynamic_cast<Gtk::Menu*>(wid);
- popupMenu->popup(event->button, event->time);
- }
-}
-
-
-bool ConnectDialog::doSetup()
-{
- set_title("Connect");
- set_size_request(300,400);
-
- Glib::RefPtr<Gtk::ActionGroup> actionGroup = Gtk::ActionGroup::create();
- actionGroup->add( Gtk::Action::create("MenuFile", "_File") );
- actionGroup->add( Gtk::Action::create("Connect",
- Gtk::Stock::CONNECT, "Connect"),
- sigc::mem_fun(*this, &ConnectDialog::okCallback) );
- actionGroup->add( Gtk::Action::create("Save",
- Gtk::Stock::CONNECT, "Save as account"),
- sigc::mem_fun(*this, &ConnectDialog::saveCallback) );
- actionGroup->add( Gtk::Action::create("Cancel",
- Gtk::Stock::CANCEL, "Cancel"),
- sigc::mem_fun(*this, &ConnectDialog::cancelCallback) );
-
-
- Glib::RefPtr<Gtk::UIManager> uiManager = Gtk::UIManager::create();
-
- uiManager->insert_action_group(actionGroup, 0);
- add_accel_group(uiManager->get_accel_group());
-
- Glib::ustring ui_info =
- "<ui>"
- " <menubar name='MenuBar'>"
- " <menu action='MenuFile'>"
- " <menuitem action='Connect'/>"
- " <separator/>"
- " <menuitem action='Save'/>"
- " <separator/>"
- " <menuitem action='Cancel'/>"
- " </menu>"
- " </menubar>"
- "</ui>";
-
- uiManager->add_ui_from_string(ui_info);
- Gtk::Widget* pMenuBar = uiManager->get_widget("/MenuBar");
- get_vbox()->pack_start(*pMenuBar, Gtk::PACK_SHRINK);
-
- table.resize(6, 2);
- get_vbox()->pack_start(table);
-
- parent.client.setHost("broadway.dynalias.com");
- parent.client.setPort(5222);
- parent.client.setUsername("");
- parent.client.setPassword("");
- parent.client.setResource("pedroXmpp");
-
- hostLabel.set_text("Host");
- table.attach(hostLabel, 0, 1, 0, 1);
- hostField.set_text(parent.client.getHost());
- table.attach(hostField, 1, 2, 0, 1);
-
- portLabel.set_text("Port");
- table.attach(portLabel, 0, 1, 1, 2);
- portSpinner.set_digits(0);
- portSpinner.set_range(1, 65000);
- portSpinner.set_value(parent.client.getPort());
- table.attach(portSpinner, 1, 2, 1, 2);
-
- userLabel.set_text("Username");
- table.attach(userLabel, 0, 1, 2, 3);
- userField.set_text(parent.client.getUsername());
- table.attach(userField, 1, 2, 2, 3);
-
- passLabel.set_text("Password");
- table.attach(passLabel, 0, 1, 3, 4);
- passField.set_visibility(false);
- passField.set_text(parent.client.getPassword());
- passField.signal_activate().connect(
- sigc::mem_fun(*this, &ConnectDialog::okCallback) );
- table.attach(passField, 1, 2, 3, 4);
-
- resourceLabel.set_text("Resource");
- table.attach(resourceLabel, 0, 1, 4, 5);
- resourceField.set_text(parent.client.getResource());
- table.attach(resourceField, 1, 2, 4, 5);
-
- registerLabel.set_text("Register");
- table.attach(registerLabel, 0, 1, 5, 6);
- registerButton.set_active(false);
- table.attach(registerButton, 1, 2, 5, 6);
-
- add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
- add_button(Gtk::Stock::OPEN, Gtk::RESPONSE_OK);
-
-
- //######################
- //# ACCOUNT LIST
- //######################
-
-
- accountListStore = Gtk::ListStore::create(accountColumns);
- accountView.set_model(accountListStore);
-
- accountView.signal_row_activated().connect(
- sigc::mem_fun(*this, &ConnectDialog::doubleClickCallback) );
-
- accountView.get_selection()->signal_changed().connect(
- sigc::mem_fun(*this, &ConnectDialog::selectedCallback) );
-
- accountView.append_column("Account", accountColumns.nameColumn);
- accountView.append_column("Host", accountColumns.hostColumn);
-
- //accountView.signal_row_activated().connect(
- // sigc::mem_fun(*this, &AccountDialog::connectCallback) );
-
- accountScroll.add(accountView);
- accountScroll.set_policy(Gtk::POLICY_ALWAYS, Gtk::POLICY_ALWAYS);
-
- get_vbox()->pack_start(accountScroll);
-
- //##### POPUP MENU
- accountView.signal_button_press_event().connect_notify(
- sigc::mem_fun(*this, &ConnectDialog::buttonPressCallback) );
-
- Glib::RefPtr<Gtk::ActionGroup> accountActionGroup =
- Gtk::ActionGroup::create();
-
- accountActionGroup->add( Gtk::Action::create("PopupMenu", "_Account") );
-
- accountActionGroup->add( Gtk::Action::create("Delete",
- Gtk::Stock::DELETE, "Delete"),
- sigc::mem_fun(*this, &ConnectDialog::deleteCallback) );
-
-
- accountUiManager = Gtk::UIManager::create();
-
- accountUiManager->insert_action_group(accountActionGroup, 0);
-
- Glib::ustring account_ui_info =
- "<ui>"
- " <popup name='PopupMenu'>"
- " <menuitem action='Delete'/>"
- " </popup>"
- "</ui>";
-
- accountUiManager->add_ui_from_string(account_ui_info);
- //Gtk::Widget* accountMenuBar = uiManager->get_widget("/PopupMenu");
- //get_vbox()->pack_start(*accountMenuBar, Gtk::PACK_SHRINK);
-
- refresh();
-
- show_all_children();
-
- return true;
-}
-
-
-/**
- * Regenerate the account list
- */
-void ConnectDialog::refresh()
-{
- accountListStore->clear();
-
- std::vector<XmppAccount> accounts = parent.config.getAccounts();
- for (unsigned int i=0 ; i<accounts.size() ; i++)
- {
- XmppAccount account = accounts[i];
- Gtk::TreeModel::Row row = *(accountListStore->append());
- row[accountColumns.nameColumn] = account.getName();
- row[accountColumns.hostColumn] = account.getHost();
- }
- accountView.expand_all();
-}
-
-
-
-//#########################################################################
-//# F I L E S E N D D I A L O G
-//#########################################################################
-
-
-void FileSendDialog::okCallback()
-{
- response(Gtk::RESPONSE_OK);
- hide();
-}
-
-void FileSendDialog::cancelCallback()
-{
- response(Gtk::RESPONSE_CANCEL);
- hide();
-}
-
-
-void FileSendDialog::buttonCallback()
-{
- Gtk::FileChooserDialog dlg("Select a file to send",
- Gtk::FILE_CHOOSER_ACTION_OPEN);
- dlg.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
- dlg.add_button(Gtk::Stock::OPEN, Gtk::RESPONSE_OK);
- int ret = dlg.run();
- if (ret == Gtk::RESPONSE_OK || ret == Gtk::RESPONSE_ACCEPT)
- {
- fileName = dlg.get_filename();
- fileNameField.set_text(fileName);
- }
-}
-
-bool FileSendDialog::doSetup()
-{
- set_title("Send file to user");
- set_size_request(400,150);
-
- Glib::RefPtr<Gtk::ActionGroup> actionGroup = Gtk::ActionGroup::create();
- actionGroup->add( Gtk::Action::create("MenuFile", "_File") );
- actionGroup->add( Gtk::Action::create("Send", Gtk::Stock::NETWORK, "Send File"),
- sigc::mem_fun(*this, &FileSendDialog::okCallback) );
- actionGroup->add( Gtk::Action::create("Cancel", Gtk::Stock::CANCEL, "Cancel"),
- sigc::mem_fun(*this, &FileSendDialog::cancelCallback) );
-
-
- Glib::RefPtr<Gtk::UIManager> uiManager = Gtk::UIManager::create();
-
- uiManager->insert_action_group(actionGroup, 0);
- add_accel_group(uiManager->get_accel_group());
-
- Glib::ustring ui_info =
- "<ui>"
- " <menubar name='MenuBar'>"
- " <menu action='MenuFile'>"
- " <menuitem action='Send'/>"
- " <separator/>"
- " <menuitem action='Cancel'/>"
- " </menu>"
- " </menubar>"
- "</ui>";
-
- uiManager->add_ui_from_string(ui_info);
- Gtk::Widget* pMenuBar = uiManager->get_widget("/MenuBar");
- get_vbox()->pack_start(*pMenuBar, Gtk::PACK_SHRINK);
-
- table.resize(2, 2);
- get_vbox()->pack_start(table);
-
- jidLabel.set_text("User ID");
- table.attach(jidLabel, 0, 1, 0, 1);
- jidField.set_text("inkscape");
- table.attach(jidField, 1, 2, 0, 1);
-
- selectFileButton.set_label("Select");
- selectFileButton.signal_clicked().connect(
- sigc::mem_fun(*this, &FileSendDialog::buttonCallback) );
- table.attach(selectFileButton, 0, 1, 1, 2);
-
- fileName = "";
- fileNameField.set_text("No file selected");
- fileNameField.set_editable(false);
- table.attach(fileNameField, 1, 2, 1, 2);
-
- add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
- add_button(Gtk::Stock::OPEN, Gtk::RESPONSE_OK);
-
- show_all_children();
-
- return true;
-}
-
-
-//#########################################################################
-//# F I L E R E C E I V E D I A L O G
-//#########################################################################
-
-
-void FileReceiveDialog::okCallback()
-{
- response(Gtk::RESPONSE_OK);
- hide();
-}
-
-void FileReceiveDialog::cancelCallback()
-{
- response(Gtk::RESPONSE_CANCEL);
- hide();
-}
-
-void FileReceiveDialog::buttonCallback()
-{
- Gtk::FileChooserDialog dlg("Select a file to save",
- Gtk::FILE_CHOOSER_ACTION_SAVE);
- dlg.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
- dlg.add_button(Gtk::Stock::OPEN, Gtk::RESPONSE_OK);
- int ret = dlg.run();
- if (ret == Gtk::RESPONSE_OK || ret == Gtk::RESPONSE_ACCEPT)
- {
- fileName = dlg.get_filename();
- fileNameField.set_text(fileName);
- }
-}
-
-
-bool FileReceiveDialog::doSetup()
-{
- set_title("File being sent by user");
- set_size_request(450,250);
-
- Glib::RefPtr<Gtk::ActionGroup> actionGroup = Gtk::ActionGroup::create();
- actionGroup->add( Gtk::Action::create("MenuFile", "_File") );
- actionGroup->add( Gtk::Action::create("Send", Gtk::Stock::NETWORK, "Send File"),
- sigc::mem_fun(*this, &FileReceiveDialog::okCallback) );
- actionGroup->add( Gtk::Action::create("Cancel", Gtk::Stock::CANCEL, "Cancel"),
- sigc::mem_fun(*this, &FileReceiveDialog::cancelCallback) );
-
-
- Glib::RefPtr<Gtk::UIManager> uiManager = Gtk::UIManager::create();
-
- uiManager->insert_action_group(actionGroup, 0);
- add_accel_group(uiManager->get_accel_group());
-
- Glib::ustring ui_info =
- "<ui>"
- " <menubar name='MenuBar'>"
- " <menu action='MenuFile'>"
- " <menuitem action='Send'/>"
- " <separator/>"
- " <menuitem action='Cancel'/>"
- " </menu>"
- " </menubar>"
- "</ui>";
-
- uiManager->add_ui_from_string(ui_info);
- Gtk::Widget* pMenuBar = uiManager->get_widget("/MenuBar");
- get_vbox()->pack_start(*pMenuBar, Gtk::PACK_SHRINK);
-
- table.resize(6, 2);
- get_vbox()->pack_start(table);
-
- jidLabel.set_text("User ID");
- table.attach(jidLabel, 0, 1, 0, 1);
- jidField.set_text(jid);
- jidField.set_editable(false);
- table.attach(jidField, 1, 2, 0, 1);
-
- offeredLabel.set_text("File Offered");
- table.attach(offeredLabel, 0, 1, 1, 2);
- offeredField.set_text(offeredName);
- offeredField.set_editable(false);
- table.attach(offeredField, 1, 2, 1, 2);
-
- descLabel.set_text("Description");
- table.attach(descLabel, 0, 1, 2, 3);
- descField.set_text(desc);
- descField.set_editable(false);
- table.attach(descField, 1, 2, 2, 3);
-
- char buf[32];
- snprintf(buf, 31, "%ld", fileSize);
- sizeLabel.set_text("Size");
- table.attach(sizeLabel, 0, 1, 3, 4);
- sizeField.set_text(buf);
- sizeField.set_editable(false);
- table.attach(sizeField, 1, 2, 3, 4);
-
- hashLabel.set_text("MD5 Hash");
- table.attach(hashLabel, 0, 1, 4, 5);
- hashField.set_text(hash);
- hashField.set_editable(false);
- table.attach(hashField, 1, 2, 4, 5);
-
- selectFileButton.set_label("Select");
- selectFileButton.signal_clicked().connect(
- sigc::mem_fun(*this, &FileReceiveDialog::buttonCallback) );
- table.attach(selectFileButton, 0, 1, 5, 6);
-
- fileName = "";
- fileNameField.set_text("No file selected");
- fileNameField.set_editable(false);
- table.attach(fileNameField, 1, 2, 5, 6);
-
-
- add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
- add_button(Gtk::Stock::OPEN, Gtk::RESPONSE_OK);
-
- show_all_children();
-
- return true;
-}
-
-
-//#########################################################################
-//# M A I N W I N D O W
-//#########################################################################
-
-PedroGui::PedroGui()
-{
- doSetup();
-}
-
-PedroGui::~PedroGui()
-{
- chatDeleteAll();
- groupChatDeleteAll();
-}
-
-
-void PedroGui::error(const char *fmt, ...)
-{
- va_list args;
- va_start(args, fmt);
- vsnprintf(writeBuf, writeBufLen, fmt, args);
- va_end(args) ;
-
- Gtk::MessageDialog dlg(writeBuf,
- false,
- Gtk::MESSAGE_ERROR,
- Gtk::BUTTONS_OK,
- true);
- dlg.run();
-}
-
-void PedroGui::status(const char *fmt, ...)
-{
- va_list args;
- va_start(args, fmt);
- vsnprintf(writeBuf, writeBufLen, fmt, args);
- va_end(args) ;
- messageList.postMessage("STATUS", writeBuf);
-}
-
-//################################
-//# CHAT WINDOW MANAGEMENT
-//################################
-bool PedroGui::chatCreate(const DOMString &userJid)
-{
- std::vector<ChatWindow *>::iterator iter;
- for (iter=chats.begin() ; iter != chats.end() ; iter++)
- {
- if (userJid == (*iter)->getJid())
- return false;
- }
- ChatWindow *chat = new ChatWindow(*this, userJid);
- chat->show();
- chats.push_back(chat);
- return true;
-}
-
-bool PedroGui::chatDelete(const DOMString &userJid)
-{
- std::vector<ChatWindow *>::iterator iter;
- for (iter=chats.begin() ; iter != chats.end() ; )
- {
- if (userJid == (*iter)->getJid())
- {
- delete(*iter);
- iter = chats.erase(iter);
- }
- else
- iter++;
- }
- return true;
-}
-
-bool PedroGui::chatDeleteAll()
-{
- std::vector<ChatWindow *>::iterator iter;
- for (iter=chats.begin() ; iter != chats.end() ; )
- {
- delete(*iter);
- iter = chats.erase(iter);
- }
- return true;
-}
-
-bool PedroGui::chatMessage(const DOMString &from, const DOMString &data)
-{
- std::vector<ChatWindow *>::iterator iter;
- for (iter=chats.begin() ; iter != chats.end() ; iter++)
- {
- if (from == (*iter)->getJid())
- {
- (*iter)->postMessage(data);
- return true;
- }
- }
- ChatWindow *chat = new ChatWindow(*this, from);
- chat->show();
- chats.push_back(chat);
- chat->postMessage(data);
- return true;
-}
-
-
-//################################
-//# GROUP CHAT WINDOW MANAGEMENT
-//################################
-
-bool PedroGui::groupChatCreate(const DOMString &groupJid, const DOMString &nick)
-{
- std::vector<GroupChatWindow *>::iterator iter;
- for (iter=groupChats.begin() ; iter != groupChats.end() ; iter++)
- {
- if (groupJid == (*iter)->getGroupJid())
- return false;
- }
- GroupChatWindow *chat = new GroupChatWindow(*this, groupJid, nick);
- chat->show();
- groupChats.push_back(chat);
- return true;
-}
-
-
-bool PedroGui::groupChatDelete(const DOMString &groupJid, const DOMString &nick)
-{
- std::vector<GroupChatWindow *>::iterator iter;
- for (iter=groupChats.begin() ; iter != groupChats.end() ;)
- {
- if (groupJid == (*iter)->getGroupJid() &&
- nick == (*iter)->getNick())
- {
- delete(*iter);
- iter = groupChats.erase(iter);
- }
- else
- iter++;
- }
- return true;
-}
-
-
-bool PedroGui::groupChatDeleteAll()
-{
- std::vector<GroupChatWindow *>::iterator iter;
- for (iter=groupChats.begin() ; iter != groupChats.end() ; )
- {
- delete(*iter);
- iter = groupChats.erase(iter);
- }
- return true;
-}
-
-
-bool PedroGui::groupChatMessage(const DOMString &groupJid,
- const DOMString &from, const DOMString &data)
-{
- std::vector<GroupChatWindow *>::iterator iter;
- for (iter=groupChats.begin() ; iter != groupChats.end() ; iter++)
- {
- if (groupJid == (*iter)->getGroupJid())
- {
- (*iter)->receiveMessage(from, data);
- }
- }
- return true;
-}
-
-bool PedroGui::groupChatPresence(const DOMString &groupJid,
- const DOMString &nick, bool presence,
- const DOMString &show,
- const DOMString &status)
-{
- std::vector<GroupChatWindow *>::iterator iter;
- for (iter=groupChats.begin() ; iter != groupChats.end() ; iter++)
- {
- if (groupJid == (*iter)->getGroupJid())
- {
- (*iter)->receivePresence(nick, presence, show, status);
- }
- }
- return true;
-}
-
-//################################
-//# EVENTS
-//################################
-
-/**
- *
- */
-void PedroGui::padlockEnable()
-{
- padlockIcon.set(Gtk::Stock::DIALOG_AUTHENTICATION,
- Gtk::ICON_SIZE_MENU);
-}
-
-/**
- *
- */
-void PedroGui::padlockDisable()
-{
- padlockIcon.clear();
-}
-
-
-/**
- *
- */
-void PedroGui::handleConnectEvent()
-{
- status("##### CONNECTED");
- actionEnable("Connect", false);
- actionEnable("Chat", true);
- actionEnable("GroupChat", true);
- actionEnable("Disconnect", true);
- actionEnable("RegPass", true);
- actionEnable("RegCancel", true);
- DOMString title = "Pedro - ";
- title.append(client.getJid());
- set_title(title);
-}
-
-
-/**
- *
- */
-void PedroGui::handleDisconnectEvent()
-{
- status("##### DISCONNECTED");
- actionEnable("Connect", true);
- actionEnable("Chat", false);
- actionEnable("GroupChat", false);
- actionEnable("Disconnect", false);
- actionEnable("RegPass", false);
- actionEnable("RegCancel", false);
- padlockDisable();
- DOMString title = "Pedro";
- set_title(title);
- chatDeleteAll();
- groupChatDeleteAll();
- roster.clear();
-}
-
-
-/**
- *
- */
-void PedroGui::doEvent(const XmppEvent &event)
-{
-
- int typ = event.getType();
- switch (typ)
- {
- case XmppEvent::EVENT_STATUS:
- {
- //printf("##### STATUS: %s\n", event.getData().c_str());
- status(event.getData().c_str());
- break;
- }
- case XmppEvent::EVENT_ERROR:
- {
- //printf("##### ERROR: %s\n", event.getData().c_str());
- error(event.getData().c_str());
- padlockDisable();
- break;
- }
- case XmppEvent::EVENT_SSL_STARTED:
- {
- padlockEnable();
- break;
- }
- case XmppEvent::EVENT_CONNECTED:
- {
- handleConnectEvent();
- break;
- }
- case XmppEvent::EVENT_DISCONNECTED:
- {
- handleDisconnectEvent();
- break;
- }
- case XmppEvent::EVENT_MESSAGE:
- {
- status("##### MESSAGE: %s\n", event.getFrom().c_str());
- chatMessage(event.getFrom(), event.getData());
- break;
- }
- case XmppEvent::EVENT_PRESENCE:
- {
- status("##### PRESENCE: %s\n", event.getFrom().c_str());
- roster.refresh();
- break;
- }
- case XmppEvent::EVENT_ROSTER:
- {
- status("##### ROSTER\n");
- roster.refresh();
- break;
- }
- case XmppEvent::EVENT_MUC_JOIN:
- {
- status("##### GROUP JOINED: %s\n", event.getGroup().c_str());
- break;
- }
- case XmppEvent::EVENT_MUC_MESSAGE:
- {
- //printf("##### MUC_MESSAGE: %s\n", event.getGroup().c_str());
- groupChatMessage(event.getGroup(),
- event.getFrom(), event.getData());
- break;
- }
- case XmppEvent::EVENT_MUC_PRESENCE:
- {
- //printf("##### MUC_USER LIST: %s\n", event.getFrom().c_str());
- groupChatPresence(event.getGroup(),
- event.getFrom(),
- event.getPresence(),
- event.getShow(),
- event.getStatus());
- break;
- }
- case XmppEvent::EVENT_MUC_LEAVE:
- {
- status("##### GROUP LEFT: %s\n", event.getGroup().c_str());
- groupChatDelete(event.getGroup(), event.getFrom());
- break;
- }
- case XmppEvent::EVENT_FILE_RECEIVE:
- {
- status("##### FILE RECEIVE: %s\n", event.getFileName().c_str());
- doReceiveFile(event.getFrom(), event.getIqId(), event.getStreamId(),
- event.getFileName(), event.getFileDesc(),
- event.getFileSize(), event.getFileHash());
- break;
- }
- case XmppEvent::EVENT_REGISTRATION_NEW:
- {
- status("##### REGISTERED: %s at %s\n",
- event.getTo().c_str(), event.getFrom().c_str());
- break;
- }
- case XmppEvent::EVENT_REGISTRATION_CHANGE_PASS:
- {
- status("##### PASSWORD CHANGED: %s at %s\n",
- event.getTo().c_str(), event.getFrom().c_str());
- break;
- }
- case XmppEvent::EVENT_REGISTRATION_CANCEL:
- {
- //client.disconnect();
- status("##### REGISTERATION CANCELLED: %s at %s\n",
- event.getTo().c_str(), event.getFrom().c_str());
- break;
- }
- default:
- {
- printf("unknown event type: %d\n", typ);
- break;
- }
- }
-
-}
-
-/**
- *
- */
-bool PedroGui::checkEventQueue()
-{
- while (client.eventQueueAvailable() > 0)
- {
- XmppEvent evt = client.eventQueuePop();
- doEvent(evt);
- }
-
- while( Gtk::Main::events_pending() )
- Gtk::Main::iteration();
-
- return true;
-}
-
-
-//##################
-//# COMMANDS
-//##################
-void PedroGui::doChat(const DOMString &jid)
-{
- if (jid.size()>0)
- {
- chatCreate(jid);
- return;
- }
-
- FileSendDialog dlg(*this);
- int ret = dlg.run();
- if (ret == Gtk::RESPONSE_OK)
- {
- chatCreate(dlg.getJid());
- }
-
-}
-
-void PedroGui::doSendFile(const DOMString &jid)
-{
- FileSendDialog dlg(*this);
- if (jid.size()>0)
- dlg.setJid(jid);
- int ret = dlg.run();
- if (ret == Gtk::RESPONSE_OK)
- {
- DOMString fileName = dlg.getFileName();
- printf("fileName:%s\n", fileName.c_str());
- DOMString offeredName = "";
- DOMString desc = "";
- client.fileSendBackground(jid, offeredName, fileName, desc);
- }
-
-}
-
-void PedroGui::doReceiveFile(
- const DOMString &jid,
- const DOMString &iqId,
- const DOMString &streamId,
- const DOMString &offeredName,
- const DOMString &desc,
- long size,
- const DOMString &hash
- )
-
-{
- FileReceiveDialog dlg(*this, jid, iqId, streamId,
- offeredName, desc, size, hash);
- int ret = dlg.run();
- if (ret == Gtk::RESPONSE_OK)
- {
- DOMString fileName = dlg.getFileName();
- printf("fileName:%s\n", fileName.c_str());
- client.fileReceiveBackground(jid, iqId, streamId, fileName, size, hash);
- }
-
-}
-
-
-//##################
-//# CALLBACKS
-//##################
-void PedroGui::connectCallback()
-{
- ConnectDialog dialog(*this);
- int result = dialog.run();
- dialog.hide();
- if (result == Gtk::RESPONSE_OK)
- {
- client.setHost(dialog.getHost());
- client.setPort(dialog.getPort());
- client.setUsername(dialog.getUser());
- client.setPassword(dialog.getPass());
- client.setResource(dialog.getResource());
- client.setDoRegister(dialog.getRegister());
- client.connect();
- }
-}
-
-
-
-void PedroGui::chatCallback()
-{
- ChatDialog dialog(*this);
- int result = dialog.run();
- dialog.hide();
- if (result == Gtk::RESPONSE_OK)
- {
- client.message(dialog.getUser(), dialog.getText());
- }
-}
-
-
-
-void PedroGui::groupChatCallback()
-{
- GroupChatDialog dialog(*this);
- int result = dialog.run();
- dialog.hide();
- if (result != Gtk::RESPONSE_OK)
- return;
- DOMString groupJid = dialog.getGroup();
- groupJid.append("@");
- groupJid.append(dialog.getHost());
- if (client.groupChatExists(groupJid))
- {
- error("Group chat %s already exists", groupJid.c_str());
- return;
- }
- groupChatCreate(groupJid, dialog.getNick());
- client.groupChatJoin(groupJid, dialog.getNick(), dialog.getPass() );
- config.setMucGroup(dialog.getGroup());
- config.setMucHost(dialog.getHost());
- config.setMucNick(dialog.getNick());
- config.setMucPassword(dialog.getPass());
-
- configSave();
-}
-
-
-void PedroGui::disconnectCallback()
-{
- client.disconnect();
-}
-
-
-void PedroGui::quitCallback()
-{
- client.disconnect();
- //hide();
- //Severe overkill! :-)
- Gtk::Main::quit();
-}
-
-
-void PedroGui::fontCallback()
-{
- Gtk::FontSelectionDialog dlg;
- int ret = dlg.run();
- if (ret == Gtk::RESPONSE_OK)
- {
- Glib::ustring fontName = dlg.get_font_name();
- Pango::FontDescription fontDesc(fontName);
- modify_font(fontDesc);
- }
-}
-
-void PedroGui::colorCallback()
-{
- Gtk::ColorSelectionDialog dlg;
- int ret = dlg.run();
- if (ret == Gtk::RESPONSE_OK)
- {
- Gdk::Color col = dlg.get_colorsel()->get_current_color();
- modify_bg(Gtk::STATE_NORMAL, col);
- }
-}
-
-void PedroGui::regPassCallback()
-{
- PasswordDialog dlg(*this);
- int ret = dlg.run();
- if (ret == Gtk::RESPONSE_OK)
- {
- DOMString newpass = dlg.getNewPass();
- client.inBandRegistrationChangePassword(newpass);
- }
-}
-
-
-void PedroGui::regCancelCallback()
-{
- Gtk::MessageDialog dlg(*this, "Do you want to cancel your registration on the server?",
- false, Gtk::MESSAGE_QUESTION, Gtk::BUTTONS_YES_NO, true);
- int ret = dlg.run();
- if (ret == Gtk::RESPONSE_YES)
- {
- client.inBandRegistrationCancel();
- }
-}
-
-
-
-void PedroGui::sendFileCallback()
-{
- doSendFile("");
-}
-
-
-
-void PedroGui::aboutCallback()
-{
- Gtk::AboutDialog dlg;
- std::vector<Glib::ustring>authors;
- authors.push_back("Bob Jamison");
- dlg.set_authors(authors);
- DOMString comments = "A simple XMPP gui client ";
- comments.append("Based on the Pedro XMPP client");
- dlg.set_comments(comments);
- dlg.set_version("1.0");
- dlg.run();
-}
-
-
-
-void PedroGui::actionEnable(const DOMString &name, bool val)
-{
- DOMString path = "/ui/MenuBar/";
- path.append(name);
- Glib::RefPtr<Gtk::Action> action = uiManager->get_action(path);
- if (!action)
- {
- path = "/ui/MenuBar/MenuFile/";
- path.append(name);
- action = uiManager->get_action(path);
- }
- if (!action)
- {
- path = "/ui/MenuBar/MenuEdit/";
- path.append(name);
- action = uiManager->get_action(path);
- }
- if (!action)
- {
- path = "/ui/MenuBar/MenuRegister/";
- path.append(name);
- action = uiManager->get_action(path);
- }
- if (!action)
- {
- path = "/ui/MenuBar/MenuTransfer/";
- path.append(name);
- action = uiManager->get_action(path);
- }
- if (!action)
- {
- path = "/ui/MenuBar/MenuHelp/";
- path.append(name);
- action = uiManager->get_action(path);
- }
- if (!action)
- return;
- action->set_sensitive(val);
-}
-
-
-bool PedroGui::configLoad()
-{
- if (!config.readFile("pedro.ini"))
- return false;
- return true;
-}
-
-
-bool PedroGui::configSave()
-{
- if (!config.writeFile("pedro.ini"))
- return false;
- return true;
-}
-
-
-
-
-bool PedroGui::doSetup()
-{
- configLoad();
-
- set_title("Pedro XMPP Client");
- set_size_request(500, 300);
- add(mainBox);
-
- Glib::RefPtr<Gtk::ActionGroup> actionGroup = Gtk::ActionGroup::create();
-
- //### FILE MENU
- actionGroup->add( Gtk::Action::create("MenuFile", "_File") );
-
- actionGroup->add( Gtk::Action::create("Connect",
- Gtk::Stock::CONNECT, "Connect"),
- sigc::mem_fun(*this, &PedroGui::connectCallback) );
-
- actionGroup->add( Gtk::Action::create("Chat",
- Gtk::Stock::CONNECT, "Chat"),
- sigc::mem_fun(*this, &PedroGui::chatCallback) );
-
- actionGroup->add( Gtk::Action::create("GroupChat",
- Gtk::Stock::CONNECT, "Group Chat"),
- sigc::mem_fun(*this, &PedroGui::groupChatCallback) );
-
- actionGroup->add( Gtk::Action::create("Disconnect",
- Gtk::Stock::DISCONNECT, "Disconnect"),
- sigc::mem_fun(*this, &PedroGui::disconnectCallback) );
-
- actionGroup->add( Gtk::Action::create("Quit", Gtk::Stock::QUIT),
- sigc::mem_fun(*this, &PedroGui::quitCallback) );
-
- //### EDIT MENU
- actionGroup->add( Gtk::Action::create("MenuEdit", "_Edit") );
- actionGroup->add( Gtk::Action::create("SelectFont",
- Gtk::Stock::SELECT_FONT, "Select Font"),
- sigc::mem_fun(*this, &PedroGui::fontCallback) );
- actionGroup->add( Gtk::Action::create("SelectColor",
- Gtk::Stock::SELECT_COLOR, "Select Color"),
- sigc::mem_fun(*this, &PedroGui::colorCallback) );
-
- //### REGISTER MENU
- actionGroup->add( Gtk::Action::create("MenuRegister", "_Registration") );
- actionGroup->add( Gtk::Action::create("RegPass",
- Gtk::Stock::DIALOG_AUTHENTICATION, "Change Password"),
- sigc::mem_fun(*this, &PedroGui::regPassCallback) );
- actionGroup->add( Gtk::Action::create("RegCancel",
- Gtk::Stock::CANCEL, "Cancel Registration"),
- sigc::mem_fun(*this, &PedroGui::regCancelCallback) );
-
- //### TRANSFER MENU
- actionGroup->add( Gtk::Action::create("MenuTransfer", "_Transfer") );
- actionGroup->add( Gtk::Action::create("SendFile",
- Gtk::Stock::NETWORK, "Send File"),
- sigc::mem_fun(*this, &PedroGui::sendFileCallback) );
-
- //### HELP MENU
- actionGroup->add( Gtk::Action::create("MenuHelp", "_Help") );
- actionGroup->add( Gtk::Action::create("About",
- Gtk::Stock::ABOUT, "About Pedro"),
- sigc::mem_fun(*this, &PedroGui::aboutCallback) );
-
- uiManager = Gtk::UIManager::create();
-
- uiManager->insert_action_group(actionGroup, 0);
- add_accel_group(uiManager->get_accel_group());
-
- Glib::ustring ui_info =
- "<ui>"
- " <menubar name='MenuBar'>"
- " <menu action='MenuFile'>"
- " <menuitem action='Connect'/>"
- " <separator/>"
- " <menuitem action='Chat'/>"
- " <menuitem action='GroupChat'/>"
- " <separator/>"
- " <menuitem action='Disconnect'/>"
- " <menuitem action='Quit'/>"
- " </menu>"
- " <menu action='MenuEdit'>"
- " <menuitem action='SelectFont'/>"
- " <menuitem action='SelectColor'/>"
- " </menu>"
- " <menu action='MenuRegister'>"
- " <menuitem action='RegPass'/>"
- " <menuitem action='RegCancel'/>"
- " </menu>"
- " <menu action='MenuTransfer'>"
- " <menuitem action='SendFile'/>"
- " </menu>"
- " <menu action='MenuHelp'>"
- " <menuitem action='About'/>"
- " </menu>"
- " </menubar>"
- "</ui>";
-
- uiManager->add_ui_from_string(ui_info);
- Gtk::Widget* pMenuBar = uiManager->get_widget("/MenuBar");
- menuBarBox.pack_start(*pMenuBar, Gtk::PACK_SHRINK);
-
- padlockDisable();
- menuBarBox.pack_end(padlockIcon, Gtk::PACK_SHRINK);
-
- mainBox.pack_start(menuBarBox, Gtk::PACK_SHRINK);
-
- actionEnable("Connect", true);
- actionEnable("Chat", false);
- actionEnable("GroupChat", false);
- actionEnable("Disconnect", false);
- actionEnable("RegPass", false);
- actionEnable("RegCancel", false);
-
- mainBox.pack_start(vPaned);
- vPaned.add1(roster);
- vPaned.add2(messageList);
- roster.setParent(this);
-
- show_all_children();
-
- //# Start a timer to check the queue every nn milliseconds
- Glib::signal_timeout().connect(
- sigc::mem_fun(*this, &PedroGui::checkEventQueue), 20 );
-
- //client.addXmppEventListener(*this);
- client.eventQueueEnable(true);
-
- return true;
-}
-
-
-} // namespace Pedro
-
-
-
-//########################################################################
-//# E N D O F F I L E
-//########################################################################
-
diff --git a/src/pedro/pedrogui.h b/src/pedro/pedrogui.h
--- a/src/pedro/pedrogui.h
+++ /dev/null
@@ -1,910 +0,0 @@
-#ifndef __PEDROGUI_H__
-#define __PEDROGUI_H__
-/*
- * Simple demo GUI for the Pedro mini-XMPP client.
- *
- * Authors:
- * Bob Jamison
- *
- * Copyright (C) 2005 Bob Jamison
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-
-
-#include <gtkmm.h>
-
-#include "pedroxmpp.h"
-#include "pedroconfig.h"
-
-
-namespace Pedro
-{
-
-
-class PedroGui;
-class GroupChatWindow;
-
-//#########################################################################
-//# R O S T E R
-//#########################################################################
-class Roster : public Gtk::ScrolledWindow
-{
-public:
-
- Roster()
- { doSetup(); }
-
- virtual ~Roster()
- {}
-
- /**
- * Clear all roster items from the list
- */
- virtual void clear();
-
- /**
- * Regenerate the roster
- */
- virtual void refresh();
-
-
- void setParent(PedroGui *val)
- { parent = val; }
-
-private:
-
- class CustomTreeView : public Gtk::TreeView
- {
- public:
- CustomTreeView()
- { parent = NULL; }
- virtual ~CustomTreeView()
- {}
-
- bool on_button_press_event(GdkEventButton* event)
- {
- Gtk::TreeView::on_button_press_event(event);
- if (parent)
- parent->buttonPressCallback(event);
- return true;
- }
- void setParent(Roster *val)
- { parent = val; }
-
- private:
- Roster *parent;
- };
-
- void doubleClickCallback(const Gtk::TreeModel::Path &path,
- Gtk::TreeViewColumn *col);
-
- void sendFileCallback();
- void chatCallback();
- bool buttonPressCallback(GdkEventButton* event);
-
- bool doSetup();
-
- Glib::RefPtr<Gdk::Pixbuf> pixbuf_available;
- Glib::RefPtr<Gdk::Pixbuf> pixbuf_away;
- Glib::RefPtr<Gdk::Pixbuf> pixbuf_chat;
- Glib::RefPtr<Gdk::Pixbuf> pixbuf_dnd;
- Glib::RefPtr<Gdk::Pixbuf> pixbuf_error;
- Glib::RefPtr<Gdk::Pixbuf> pixbuf_offline;
- Glib::RefPtr<Gdk::Pixbuf> pixbuf_xa;
-
- class RosterColumns : public Gtk::TreeModel::ColumnRecord
- {
- public:
- RosterColumns()
- {
- add(groupColumn);
- add(statusColumn); add(userColumn);
- add(nameColumn); add(subColumn);
- }
-
- Gtk::TreeModelColumn<Glib::ustring> groupColumn;
- Gtk::TreeModelColumn<Glib::RefPtr<Gdk::Pixbuf> > statusColumn;
- Gtk::TreeModelColumn<Glib::ustring> userColumn;
- Gtk::TreeModelColumn<Glib::ustring> nameColumn;
- Gtk::TreeModelColumn<Glib::ustring> subColumn;
- };
-
- RosterColumns rosterColumns;
-
- Glib::RefPtr<Gtk::UIManager> uiManager;
-
- Glib::RefPtr<Gtk::TreeStore> treeStore;
- CustomTreeView rosterView;
-
- PedroGui *parent;
-};
-
-//#########################################################################
-//# M E S S A G E L I S T
-//#########################################################################
-class MessageList : public Gtk::ScrolledWindow
-{
-public:
-
- MessageList()
- { doSetup(); }
-
- virtual ~MessageList()
- {}
-
- /**
- * Clear all messages from the list
- */
- virtual void clear();
-
- /**
- * Post a message to the list
- */
- virtual void postMessage(const DOMString &from, const DOMString &msg);
-
-private:
-
- bool doSetup();
-
- Gtk::TextView messageList;
- Glib::RefPtr<Gtk::TextBuffer> messageListBuffer;
-
-};
-
-//#########################################################################
-//# U S E R L I S T
-//#########################################################################
-class UserList : public Gtk::ScrolledWindow
-{
-public:
-
- UserList()
- { doSetup(); }
-
- virtual ~UserList()
- {}
-
- /**
- * Clear all messages from the list
- */
- virtual void clear();
-
- /**
- * Post a message to the list
- */
- virtual void addUser(const DOMString &user, const DOMString &show);
-
-
- void setParent(GroupChatWindow *val)
- { parent = val; }
-
-private:
-
- class CustomTreeView : public Gtk::TreeView
- {
- public:
- CustomTreeView()
- { parent = NULL; }
- virtual ~CustomTreeView()
- {}
-
- bool on_button_press_event(GdkEventButton* event)
- {
- Gtk::TreeView::on_button_press_event(event);
- if (parent)
- parent->buttonPressCallback(event);
- return true;
- }
- void setParent(UserList *val)
- { parent = val; }
-
- private:
- UserList *parent;
- };
-
- void doubleClickCallback(const Gtk::TreeModel::Path &path,
- Gtk::TreeViewColumn *col);
-
- void sendFileCallback();
- void chatCallback();
- bool buttonPressCallback(GdkEventButton* event);
-
- bool doSetup();
-
- Glib::RefPtr<Gdk::Pixbuf> pixbuf_available;
- Glib::RefPtr<Gdk::Pixbuf> pixbuf_away;
- Glib::RefPtr<Gdk::Pixbuf> pixbuf_chat;
- Glib::RefPtr<Gdk::Pixbuf> pixbuf_dnd;
- Glib::RefPtr<Gdk::Pixbuf> pixbuf_error;
- Glib::RefPtr<Gdk::Pixbuf> pixbuf_offline;
- Glib::RefPtr<Gdk::Pixbuf> pixbuf_xa;
-
- class UserListColumns : public Gtk::TreeModel::ColumnRecord
- {
- public:
- UserListColumns()
- { add(statusColumn); add(userColumn); }
-
- Gtk::TreeModelColumn<Glib::ustring> userColumn;
- Gtk::TreeModelColumn<Glib::RefPtr<Gdk::Pixbuf> > statusColumn;
- };
-
- UserListColumns userListColumns;
-
- Glib::RefPtr<Gtk::UIManager> uiManager;
-
- Glib::RefPtr<Gtk::ListStore> userListStore;
- CustomTreeView userList;
-
- GroupChatWindow *parent;
-};
-
-
-//#########################################################################
-//# C H A T W I N D O W
-//#########################################################################
-class ChatWindow : public Gtk::Window
-{
-public:
-
- ChatWindow(PedroGui &par, const DOMString jid);
-
- virtual ~ChatWindow();
-
- virtual DOMString getJid()
- { return jid; }
-
- virtual void setJid(const DOMString &val)
- { jid = val; }
-
- virtual bool postMessage(const DOMString &data);
-
-private:
-
- DOMString jid;
-
- void leaveCallback();
- void hideCallback();
- void textEnterCallback();
-
- bool doSetup();
-
- Gtk::VBox vbox;
- Gtk::VPaned vPaned;
-
- MessageList messageList;
-
- Gtk::Entry inputTxt;
-
- PedroGui &parent;
-};
-
-
-//#########################################################################
-//# G R O U P C H A T W I N D O W
-//#########################################################################
-class GroupChatWindow : public Gtk::Window
-{
-public:
-
- GroupChatWindow(PedroGui &par, const DOMString &groupJid,
- const DOMString &nick);
-
- virtual ~GroupChatWindow();
-
-
- virtual DOMString getGroupJid()
- { return groupJid; }
-
- virtual void setGroupJid(const DOMString &val)
- { groupJid = val; }
-
- virtual DOMString getNick()
- { return nick; }
-
- virtual void setNick(const DOMString &val)
- { nick = val; }
-
- virtual bool receiveMessage(const DOMString &from,
- const DOMString &data);
-
- virtual bool receivePresence(const DOMString &nick,
- bool presence,
- const DOMString &show,
- const DOMString &status);
-
- virtual void doSendFile(const DOMString &nick);
-
- virtual void doChat(const DOMString &nick);
-
-
-private:
-
- void textEnterCallback();
- void leaveCallback();
- void hideCallback();
-
- bool doSetup();
-
- Gtk::VBox vbox;
- Gtk::VPaned vPaned;
- Gtk::HPaned hPaned;
-
- MessageList messageList;
-
- UserList userList;
-
- Gtk::Entry inputTxt;
-
- DOMString groupJid;
- DOMString nick;
-
- PedroGui &parent;
- };
-
-
-
-//#########################################################################
-//# C O N F I G D I A L O G
-//#########################################################################
-
-class ConfigDialog : public Gtk::Dialog
-{
-public:
-
- ConfigDialog (PedroGui &par) : parent(par)
- { doSetup(); }
-
- virtual ~ConfigDialog ()
- {}
-
- DOMString getPass()
- { return passField.get_text(); }
- DOMString getNewPass()
- { return newField.get_text(); }
- DOMString getConfirm()
- { return confField.get_text(); }
-
-protected:
-
- //Overloaded from Gtk::Dialog
- virtual void on_response(int response_id);
-
-private:
-
- void okCallback();
- void cancelCallback();
-
- bool doSetup();
-
- Gtk::Table table;
-
- Gtk::Label passLabel;
- Gtk::Entry passField;
- Gtk::Label newLabel;
- Gtk::Entry newField;
- Gtk::Label confLabel;
- Gtk::Entry confField;
-
- PedroGui &parent;
-};
-
-
-//#########################################################################
-//# P A S S W O R D D I A L O G
-//#########################################################################
-class PasswordDialog : public Gtk::Dialog
-{
-public:
-
- PasswordDialog (PedroGui &par) : parent(par)
- { doSetup(); }
-
- virtual ~PasswordDialog ()
- {}
-
- DOMString getPass()
- { return passField.get_text(); }
- DOMString getNewPass()
- { return newField.get_text(); }
- DOMString getConfirm()
- { return confField.get_text(); }
-
-protected:
-
- //Overloaded from Gtk::Dialog
- virtual void on_response(int response_id);
-
-private:
-
- void okCallback();
- void cancelCallback();
-
- bool doSetup();
-
- Gtk::Table table;
-
- Gtk::Label passLabel;
- Gtk::Entry passField;
- Gtk::Label newLabel;
- Gtk::Entry newField;
- Gtk::Label confLabel;
- Gtk::Entry confField;
-
- PedroGui &parent;
-};
-
-
-
-//#########################################################################
-//# C H A T D I A L O G
-//#########################################################################
-class ChatDialog : public Gtk::Dialog
-{
-public:
-
- ChatDialog(PedroGui &par) : parent(par)
- { doSetup(); }
-
- virtual ~ChatDialog()
- {}
-
- DOMString getUser()
- { return userField.get_text(); }
-
- DOMString getText()
- { return textField.get_text(); }
-
-private:
-
- void okCallback();
- void cancelCallback();
-
- bool doSetup();
-
- Gtk::Table table;
-
- Gtk::Label userLabel;
- Gtk::Entry userField;
- Gtk::Entry textField;
-
- PedroGui &parent;
-};
-
-
-
-//#########################################################################
-//# G R O U P C H A T D I A L O G
-//#########################################################################
-
-class GroupChatDialog : public Gtk::Dialog
-{
-public:
-
- GroupChatDialog(PedroGui &par) : parent(par)
- { doSetup(); }
-
- virtual ~GroupChatDialog()
- {}
-
- DOMString getGroup()
- { return groupField.get_text(); }
- DOMString getHost()
- { return hostField.get_text(); }
- DOMString getPass()
- { return passField.get_text(); }
- DOMString getNick()
- { return nickField.get_text(); }
-
-private:
-
- void okCallback();
- void cancelCallback();
-
- bool doSetup();
-
- Gtk::Table table;
-
- Gtk::Label groupLabel;
- Gtk::Entry groupField;
- Gtk::Label hostLabel;
- Gtk::Entry hostField;
- Gtk::Label passLabel;
- Gtk::Entry passField;
- Gtk::Label nickLabel;
- Gtk::Entry nickField;
-
- PedroGui &parent;
-};
-
-
-//#########################################################################
-//# C O N N E C T D I A L O G
-//#########################################################################
-class ConnectDialog : public Gtk::Dialog
-{
-public:
-
- ConnectDialog (PedroGui &par) : parent(par)
- { doSetup(); }
-
- virtual ~ConnectDialog ()
- {}
-
- DOMString getHost()
- { return hostField.get_text(); }
- void setHost(const DOMString &val)
- { hostField.set_text(val); }
- int getPort()
- { return (int)portSpinner.get_value(); }
- void setPort(int val)
- { portSpinner.set_value(val); }
- DOMString getUser()
- { return userField.get_text(); }
- void setUser(const DOMString &val)
- { userField.set_text(val); }
- DOMString getPass()
- { return passField.get_text(); }
- void setPass(const DOMString &val)
- { passField.set_text(val); }
- DOMString getResource()
- { return resourceField.get_text(); }
- void setResource(const DOMString &val)
- { resourceField.set_text(val); }
- bool getRegister()
- { return registerButton.get_active(); }
-
- /**
- * Regenerate the account list
- */
- virtual void refresh();
-
-private:
-
- void okCallback();
- void saveCallback();
- void cancelCallback();
- void doubleClickCallback(
- const Gtk::TreeModel::Path &path,
- Gtk::TreeViewColumn *col);
- void selectedCallback();
-
- bool doSetup();
-
- Gtk::Table table;
-
- Gtk::Label hostLabel;
- Gtk::Entry hostField;
- Gtk::Label portLabel;
- Gtk::SpinButton portSpinner;
- Gtk::Label userLabel;
- Gtk::Entry userField;
- Gtk::Label passLabel;
- Gtk::Entry passField;
- Gtk::Label resourceLabel;
- Gtk::Entry resourceField;
- Gtk::Label registerLabel;
- Gtk::CheckButton registerButton;
-
- Glib::RefPtr<Gtk::UIManager> uiManager;
-
-
- //## Account list
-
- void buttonPressCallback(GdkEventButton* event);
-
- Gtk::ScrolledWindow accountScroll;
-
- void connectCallback();
-
- void modifyCallback();
-
- void deleteCallback();
-
-
- class AccountColumns : public Gtk::TreeModel::ColumnRecord
- {
- public:
- AccountColumns()
- {
- add(nameColumn);
- add(hostColumn);
- }
-
- Gtk::TreeModelColumn<Glib::ustring> nameColumn;
- Gtk::TreeModelColumn<Glib::ustring> hostColumn;
- };
-
- AccountColumns accountColumns;
-
- Glib::RefPtr<Gtk::UIManager> accountUiManager;
-
- Glib::RefPtr<Gtk::ListStore> accountListStore;
- Gtk::TreeView accountView;
-
-
- PedroGui &parent;
-};
-
-
-
-
-//#########################################################################
-//# F I L E S E N D D I A L O G
-//#########################################################################
-
-class FileSendDialog : public Gtk::Dialog
-{
-public:
-
- FileSendDialog(PedroGui &par) : parent(par)
- { doSetup(); }
-
- virtual ~FileSendDialog()
- {}
-
- DOMString getFileName()
- { return fileName; }
- DOMString getJid()
- { return jidField.get_text(); }
- void setJid(const DOMString &val)
- { return jidField.set_text(val); }
-
-private:
-
- void okCallback();
- void cancelCallback();
- void buttonCallback();
-
- bool doSetup();
-
- Gtk::Table table;
-
- Gtk::Label jidLabel;
- Gtk::Entry jidField;
-
- DOMString fileName;
- Gtk::Entry fileNameField;
-
- Gtk::Button selectFileButton;
-
- PedroGui &parent;
-};
-
-//#########################################################################
-//# F I L E R E C E I V E D I A L O G
-//#########################################################################
-
-class FileReceiveDialog : public Gtk::Dialog
-{
-public:
-
- FileReceiveDialog(PedroGui &par,
- const DOMString &jidArg,
- const DOMString &iqIdArg,
- const DOMString &streamIdArg,
- const DOMString &offeredNameArg,
- const DOMString &descArg,
- long sizeArg,
- const DOMString &hashArg
- ) : parent(par)
- {
- jid = jidArg;
- iqId = iqIdArg;
- streamId = streamIdArg;
- offeredName = offeredNameArg;
- desc = descArg;
- fileSize = sizeArg;
- hash = hashArg;
- doSetup();
- }
-
- virtual ~FileReceiveDialog()
- {}
-
- DOMString getJid()
- { return jid; }
- DOMString getIq()
- { return iqId; }
- DOMString getStreamId()
- { return streamId; }
- DOMString getOfferedName()
- { return offeredName; }
- DOMString getFileName()
- { return fileName; }
- DOMString getDescription()
- { return desc; }
- long getSize()
- { return fileSize; }
- DOMString getHash()
- { return hash; }
-
-private:
-
- void okCallback();
- void cancelCallback();
- void buttonCallback();
-
- bool doSetup();
-
- Gtk::Table table;
-
- Gtk::Label jidLabel;
- Gtk::Entry jidField;
- Gtk::Label offeredLabel;
- Gtk::Entry offeredField;
- Gtk::Label descLabel;
- Gtk::Entry descField;
- Gtk::Label sizeLabel;
- Gtk::Entry sizeField;
- Gtk::Label hashLabel;
- Gtk::Entry hashField;
-
- Gtk::Entry fileNameField;
-
- Gtk::Button selectFileButton;
-
- DOMString jid;
- DOMString iqId;
- DOMString streamId;
- DOMString offeredName;
- DOMString desc;
- long fileSize;
- DOMString hash;
-
- DOMString fileName;
-
- PedroGui &parent;
-};
-
-
-
-//#########################################################################
-//# M A I N W I N D O W
-//#########################################################################
-
-class PedroGui : public Gtk::Window
-{
-public:
-
- PedroGui();
-
- virtual ~PedroGui();
-
- //Let everyone share these
- XmppClient client;
- XmppConfig config;
-
-
- virtual void error(const char *fmt, ...);
-
- virtual void status(const char *fmt, ...);
-
-
-
- void handleConnectEvent();
-
- void handleDisconnectEvent();
-
- /**
- *
- */
- virtual void doEvent(const XmppEvent &event);
-
- /**
- *
- */
- bool checkEventQueue();
-
-
- bool chatCreate(const DOMString &userJid);
- bool chatDelete(const DOMString &userJid);
- bool chatDeleteAll();
- bool chatMessage(const DOMString &jid, const DOMString &data);
-
- bool groupChatCreate(const DOMString &groupJid,
- const DOMString &nick);
- bool groupChatDelete(const DOMString &groupJid,
- const DOMString &nick);
- bool groupChatDeleteAll();
- bool groupChatMessage(const DOMString &groupJid,
- const DOMString &from, const DOMString &data);
- bool groupChatPresence(const DOMString &groupJid,
- const DOMString &nick,
- bool presence,
- const DOMString &show,
- const DOMString &status);
-
- void doChat(const DOMString &jid);
- void doSendFile(const DOMString &jid);
- void doReceiveFile(const DOMString &jid,
- const DOMString &iqId,
- const DOMString &streamId,
- const DOMString &offeredName,
- const DOMString &desc,
- long size,
- const DOMString &hash);
-
-
- //# File menu
- void connectCallback();
- void chatCallback();
- void groupChatCallback();
- void disconnectCallback();
- void quitCallback();
-
- //# Edit menu
- void fontCallback();
- void colorCallback();
-
- //# Transfer menu
- void sendFileCallback();
-
- //# Registration menu
- void regPassCallback();
- void regCancelCallback();
-
- //# Help menu
- void aboutCallback();
-
- //# Configuration file
- bool configLoad();
- bool configSave();
-
-
-private:
-
- bool doSetup();
-
- Gtk::VBox mainBox;
-
- Gtk::HBox menuBarBox;
-
- Gtk::Image padlockIcon;
- void padlockEnable();
- void padlockDisable();
-
-
- Pango::FontDescription fontDesc;
- Gdk::Color foregroundColor;
- Gdk::Color backgroundColor;
-
- Gtk::VPaned vPaned;
- MessageList messageList;
- Roster roster;
-
- Glib::RefPtr<Gtk::UIManager> uiManager;
- void actionEnable(const DOMString &name, bool val);
-
- std::vector<ChatWindow *>chats;
-
- std::vector<GroupChatWindow *>groupChats;
-
- static const int writeBufLen = 2048;
-
- char writeBuf[writeBufLen];
-};
-
-
-} //namespace Pedro
-
-#endif /* __PEDROGUI_H__ */
-//#########################################################################
-//# E N D O F F I L E
-//#########################################################################
-
-