pedrogui.cpp revision 9edfc75079a4cdb2b79ee0626b18a2757ab7987e
/*
* Simple demo GUI for the Pedro mini-XMPP client.
*
* Authors:
* Bob Jamison
*
* Copyright (C) 2005-2007 Bob Jamison
*
* 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"};
{ ""
/* 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"};
{ ""
/* 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"};
{ ""
/* 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"};
{ ""
/* 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
//#########################################################################
{
//printf("Double clicked:%s\n", nick.c_str());
if (parent)
}
void Roster::chatCallback()
{
//printf("Chat with:%s\n", nick.c_str());
if (parent)
}
void Roster::sendFileCallback()
{
//printf("Send file to:%s\n", nick.c_str());
if (parent)
}
{
{
return true;
}
else
return false;
}
{
sizeof(icon_available), icon_available, false);
sizeof(icon_error), icon_error, false);
sizeof(icon_offline), icon_offline, false);
rosterView.setParent(this);
//rend0->property_background() = "gray";
//rend0->property_foreground() = "black";
//##### POPUP MENU
"<ui>"
" <popup name='PopupMenu'>"
" <menuitem action='Chat'/>"
" <menuitem action='SendFile'/>"
" </popup>"
"</ui>";
return true;
}
/**
* Clear the roster
*/
{
}
/**
* Regenerate the roster
*/
{
if (!parent)
return;
//## Add in tree fashion
{
{
}
pb = pixbuf_away;
pb = pixbuf_chat;
pb = pixbuf_dnd;
else
{
}
}
}
//#########################################################################
//# M E S S A G E L I S T
//#########################################################################
bool MessageList::doSetup()
{
messageList.set_editable(false);
return true;
}
/**
* Clear all messages from the list
*/
void MessageList::clear()
{
messageListBuffer->end());
}
/**
* Post a message to the list
*/
{
int val = 0;
char buf[16];
//Gtk::Adjustment *adj = get_vadjustment();
//adj->set_value(adj->get_upper()-adj->get_page_size());
}
//#########################################################################
//# U S E R L I S T
//#########################################################################
{
//printf("Double clicked:%s\n", nick.c_str());
if (parent)
}
void UserList::chatCallback()
{
//printf("Chat with:%s\n", nick.c_str());
if (parent)
}
void UserList::sendFileCallback()
{
//printf("Send file to:%s\n", nick.c_str());
if (parent)
}
{
{
return true;
}
else
return false;
}
{
sizeof(icon_available), icon_available, false);
sizeof(icon_error), icon_error, false);
sizeof(icon_offline), icon_offline, false);
//rend1->property_background() = "gray";
//rend1->property_foreground() = "black";
userList.set_headers_visible(false);
//##### POPUP MENU
"<ui>"
" <popup name='PopupMenu'>"
" <menuitem action='Chat'/>"
" <menuitem action='SendFile'/>"
" </popup>"
"</ui>";
return true;
}
/**
* Clear all messages from the list
*/
{
userListStore->clear();
}
/**
* Add a user to the list
*/
{
if (show == "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")
else
{
}
}
//#########################################################################
//# C H A T W I N D O W
//#########################################################################
{
doSetup();
}
ChatWindow::~ChatWindow()
{
}
void ChatWindow::leaveCallback()
{
hide();
}
void ChatWindow::hideCallback()
{
hide();
}
void ChatWindow::textEnterCallback()
{
}
bool ChatWindow::doSetup()
{
"<ui>"
" <menubar name='MenuBar'>"
" <menu action='MenuFile'>"
" <menuitem action='Leave'/>"
" </menu>"
" </menubar>"
"</ui>";
return true;
}
{
return true;
}
//#########################################################################
//# G R O U P C H A T W I N D O W
//#########################################################################
const DOMString &groupJidArg,
{
doSetup();
}
{
}
void GroupChatWindow::leaveCallback()
{
hide();
}
void GroupChatWindow::hideCallback()
{
hide();
}
void GroupChatWindow::textEnterCallback()
{
}
bool GroupChatWindow::doSetup()
{
"<ui>"
" <menubar name='MenuBar'>"
" <menu action='MenuFile'>"
" <menuitem action='Leave'/>"
" </menu>"
" </menubar>"
"</ui>";
return true;
}
{
return true;
}
bool presence,
{
if (!presence)
else
{
else
{
}
}
if (presStr != "xa")
for (unsigned int i=0 ; i<memberList.size() ; i++)
{
}
return true;
}
{
}
{
}
//#########################################################################
//# C O N F I G D I A L O G
//#########################################################################
void ConfigDialog::okCallback()
{
{
}
{
}
else
{
//response(Gtk::RESPONSE_OK);
hide();
}
}
void ConfigDialog::cancelCallback()
{
//response(Gtk::RESPONSE_CANCEL);
hide();
}
{
okCallback();
else
}
bool ConfigDialog::doSetup()
{
set_title("Change Password");
"<ui>"
" <menubar name='MenuBar'>"
" <menu action='MenuFile'>"
" <menuitem action='Change'/>"
" <separator/>"
" <menuitem action='Cancel'/>"
" </menu>"
" </menubar>"
"</ui>";
passField.set_visibility(false);
newField.set_visibility(false);
confField.set_visibility(false);
return true;
}
//#########################################################################
//# P A S S W O R D D I A L O G
//#########################################################################
void PasswordDialog::okCallback()
{
{
}
{
}
else
{
//response(Gtk::RESPONSE_OK);
hide();
}
}
void PasswordDialog::cancelCallback()
{
//response(Gtk::RESPONSE_CANCEL);
hide();
}
{
okCallback();
else
}
bool PasswordDialog::doSetup()
{
set_title("Change Password");
"<ui>"
" <menubar name='MenuBar'>"
" <menu action='MenuFile'>"
" <menuitem action='Change'/>"
" <separator/>"
" <menuitem action='Cancel'/>"
" </menu>"
" </menubar>"
"</ui>";
passField.set_visibility(false);
newField.set_visibility(false);
confField.set_visibility(false);
return true;
}
//#########################################################################
//# C H A T D I A L O G
//#########################################################################
void ChatDialog::okCallback()
{
hide();
}
void ChatDialog::cancelCallback()
{
hide();
}
bool ChatDialog::doSetup()
{
set_title("Chat with User");
"<ui>"
" <menubar name='MenuBar'>"
" <menu action='MenuFile'>"
" <menuitem action='Chat'/>"
" <separator/>"
" <menuitem action='Cancel'/>"
" </menu>"
" </menubar>"
"</ui>";
//userField.set_text("");
//userField.set_text("");
return true;
}
//#########################################################################
//# G R O U P C H A T D I A L O G
//#########################################################################
void GroupChatDialog::okCallback()
{
hide();
}
void GroupChatDialog::cancelCallback()
{
hide();
}
bool GroupChatDialog::doSetup()
{
set_title("Join Group Chat");
"<ui>"
" <menubar name='MenuBar'>"
" <menu action='MenuFile'>"
" <menuitem action='Join'/>"
" <separator/>"
" <menuitem action='Cancel'/>"
" </menu>"
" </menubar>"
"</ui>";
passField.set_visibility(false);
return true;
}
//#########################################################################
//# C O N N E C T D I A L O G
//#########################################################################
void ConnectDialog::okCallback()
{
hide();
}
void ConnectDialog::saveCallback()
{
Gtk::RESPONSE_OK ));
return;
{
return;
}
{
}
refresh();
parent.configSave();
}
void ConnectDialog::cancelCallback()
{
hide();
}
void ConnectDialog::doubleClickCallback(
{
//printf("Double clicked:%s\n", name.c_str());
return;
hide();
}
void ConnectDialog::selectedCallback()
{
//printf("Single clicked:%s\n", name.c_str());
return;
}
void ConnectDialog::deleteCallback()
{
refresh();
parent.configSave();
}
{
{
}
}
bool ConnectDialog::doSetup()
{
set_title("Connect");
"<ui>"
" <menubar name='MenuBar'>"
" <menu action='MenuFile'>"
" <menuitem action='Connect'/>"
" <separator/>"
" <menuitem action='Save'/>"
" <separator/>"
" <menuitem action='Cancel'/>"
" </menu>"
" </menubar>"
"</ui>";
passField.set_visibility(false);
registerButton.set_active(false);
//######################
//# ACCOUNT LIST
//######################
//accountView.signal_row_activated().connect(
// sigc::mem_fun(*this, &AccountDialog::connectCallback) );
//##### POPUP MENU
"<ui>"
" <popup name='PopupMenu'>"
" <menuitem action='Delete'/>"
" </popup>"
"</ui>";
//Gtk::Widget* accountMenuBar = uiManager->get_widget("/PopupMenu");
//get_vbox()->pack_start(*accountMenuBar, Gtk::PACK_SHRINK);
refresh();
return true;
}
/**
* Regenerate the account list
*/
void ConnectDialog::refresh()
{
{
}
}
//#########################################################################
//# F I L E S E N D D I A L O G
//#########################################################################
void FileSendDialog::okCallback()
{
hide();
}
void FileSendDialog::cancelCallback()
{
hide();
}
void FileSendDialog::buttonCallback()
{
{
}
}
bool FileSendDialog::doSetup()
{
set_title("Send file to user");
"<ui>"
" <menubar name='MenuBar'>"
" <menu action='MenuFile'>"
" <menuitem action='Send'/>"
" <separator/>"
" <menuitem action='Cancel'/>"
" </menu>"
" </menubar>"
"</ui>";
fileName = "";
fileNameField.set_editable(false);
return true;
}
//#########################################################################
//# F I L E R E C E I V E D I A L O G
//#########################################################################
void FileReceiveDialog::okCallback()
{
hide();
}
void FileReceiveDialog::cancelCallback()
{
hide();
}
void FileReceiveDialog::buttonCallback()
{
{
}
}
bool FileReceiveDialog::doSetup()
{
set_title("File being sent by user");
"<ui>"
" <menubar name='MenuBar'>"
" <menu action='MenuFile'>"
" <menuitem action='Send'/>"
" <separator/>"
" <menuitem action='Cancel'/>"
" </menu>"
" </menubar>"
"</ui>";
jidField.set_editable(false);
offeredField.set_editable(false);
descField.set_editable(false);
char buf[32];
sizeField.set_editable(false);
hashField.set_editable(false);
fileName = "";
fileNameField.set_editable(false);
return true;
}
//#########################################################################
//# M A I N W I N D O W
//#########################################################################
{
doSetup();
}
{
}
{
false,
true);
}
{
}
//################################
//# CHAT WINDOW MANAGEMENT
//################################
{
{
return false;
}
return true;
}
{
{
{
delete(*iter);
}
else
iter++;
}
return true;
}
bool PedroGui::chatDeleteAll()
{
{
delete(*iter);
}
return true;
}
{
{
{
return true;
}
}
return true;
}
//################################
//# GROUP CHAT WINDOW MANAGEMENT
//################################
{
{
return false;
}
return true;
}
{
{
{
delete(*iter);
}
else
iter++;
}
return true;
}
bool PedroGui::groupChatDeleteAll()
{
{
delete(*iter);
}
return true;
}
{
{
{
}
}
return true;
}
{
{
{
}
}
return true;
}
//################################
//# EVENTS
//################################
/**
*
*/
void PedroGui::padlockEnable()
{
}
/**
*
*/
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);
}
/**
*
*/
void PedroGui::handleDisconnectEvent()
{
status("##### DISCONNECTED");
actionEnable("Connect", true);
actionEnable("Chat", false);
actionEnable("GroupChat", false);
actionEnable("Disconnect", false);
actionEnable("RegPass", false);
actionEnable("RegCancel", false);
}
/**
*
*/
{
switch (typ)
{
case XmppEvent::EVENT_STATUS:
{
//printf("##### STATUS: %s\n", event.getData().c_str());
break;
}
case XmppEvent::EVENT_ERROR:
{
//printf("##### ERROR: %s\n", event.getData().c_str());
break;
}
case XmppEvent::EVENT_SSL_STARTED:
{
break;
}
case XmppEvent::EVENT_CONNECTED:
{
break;
}
case XmppEvent::EVENT_DISCONNECTED:
{
break;
}
case XmppEvent::EVENT_MESSAGE:
{
break;
}
case XmppEvent::EVENT_PRESENCE:
{
break;
}
case XmppEvent::EVENT_ROSTER:
{
status("##### ROSTER\n");
break;
}
case XmppEvent::EVENT_MUC_JOIN:
{
break;
}
case XmppEvent::EVENT_MUC_MESSAGE:
{
//printf("##### MUC_MESSAGE: %s\n", event.getGroup().c_str());
break;
}
case XmppEvent::EVENT_MUC_PRESENCE:
{
//printf("##### MUC_USER LIST: %s\n", event.getFrom().c_str());
event.getPresence(),
break;
}
case XmppEvent::EVENT_MUC_LEAVE:
{
break;
}
case XmppEvent::EVENT_FILE_RECEIVE:
{
break;
}
case XmppEvent::EVENT_REGISTRATION_NEW:
{
status("##### REGISTERED: %s at %s\n",
break;
}
{
status("##### PASSWORD CHANGED: %s at %s\n",
break;
}
{
//client.disconnect();
status("##### REGISTERATION CANCELLED: %s at %s\n",
break;
}
default:
{
break;
}
}
}
/**
*
*/
bool PedroGui::checkEventQueue()
{
while (client.eventQueueAvailable() > 0)
{
}
return true;
}
//##################
//# COMMANDS
//##################
{
{
return;
}
FileSendDialog dlg(*this);
{
}
}
{
FileSendDialog dlg(*this);
{
}
}
void PedroGui::doReceiveFile(
const DOMString &offeredName,
long size,
)
{
{
}
}
//##################
//# CALLBACKS
//##################
void PedroGui::connectCallback()
{
ConnectDialog dialog(*this);
{
}
}
void PedroGui::chatCallback()
{
ChatDialog dialog(*this);
{
}
}
void PedroGui::groupChatCallback()
{
GroupChatDialog dialog(*this);
return;
{
return;
}
configSave();
}
void PedroGui::disconnectCallback()
{
client.disconnect();
}
void PedroGui::quitCallback()
{
}
void PedroGui::fontCallback()
{
{
}
}
void PedroGui::colorCallback()
{
{
}
}
void PedroGui::regPassCallback()
{
PasswordDialog dlg(*this);
{
}
}
void PedroGui::regCancelCallback()
{
{
}
}
void PedroGui::sendFileCallback()
{
doSendFile("");
}
void PedroGui::aboutCallback()
{
}
{
if (!action)
{
}
if (!action)
{
}
if (!action)
{
path = "/ui/MenuBar/MenuRegister/";
}
if (!action)
{
path = "/ui/MenuBar/MenuTransfer/";
}
if (!action)
{
}
if (!action)
return;
}
bool PedroGui::configLoad()
{
return false;
return true;
}
bool PedroGui::configSave()
{
return false;
return true;
}
{
configLoad();
set_title("Pedro XMPP Client");
//### FILE MENU
//### EDIT MENU
//### REGISTER MENU
//### TRANSFER MENU
//### HELP MENU
"<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>";
actionEnable("Connect", true);
actionEnable("Chat", false);
actionEnable("GroupChat", false);
actionEnable("Disconnect", false);
actionEnable("RegPass", false);
actionEnable("RegCancel", false);
//# Start a timer to check the queue every nn milliseconds
//client.addXmppEventListener(*this);
client.eventQueueEnable(true);
return true;
}
} // namespace Pedro
//########################################################################
//# E N D O F F I L E
//########################################################################