summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSadrul Habib Chowdhury <sadrul@pidgin.im>2008-05-13 02:26:34 +0000
committerSadrul Habib Chowdhury <sadrul@pidgin.im>2008-05-13 02:26:34 +0000
commit524938a705d9046e7c8c77ce637d7bcd49883a6d (patch)
treed6764b478ce8b35c5f838999fc29f0178b478d54
parent690d74c65c7cf4923224df66542c84cf535c6c64 (diff)
parentc4a400d6c4fdc49fd010a40a8b10c5ec8fc73b38 (diff)
downloadpidgin-524938a705d9046e7c8c77ce637d7bcd49883a6d.tar.gz
propagate from branch 'im.pidgin.pidgin.custom_smiley' (head 6aeeb203770946ba542bb0f8e218776ae3261029)
to branch 'im.pidgin.pidgin.next.minor' (head 91b0e34f4a889c3b0d76b02b7354f3f73aa77715)
-rw-r--r--libpurple/Makefile.am2
-rw-r--r--libpurple/dbus-analyze-functions.py3
-rw-r--r--libpurple/dbus-server.c1
-rw-r--r--libpurple/plugins/perl/Makefile.am1
-rw-r--r--libpurple/plugins/perl/common/MANIFEST1
-rw-r--r--libpurple/plugins/perl/common/Makefile.mingw3
-rw-r--r--libpurple/plugins/perl/common/Purple.xs2
-rw-r--r--libpurple/plugins/perl/common/Smiley.xs81
-rw-r--r--libpurple/plugins/perl/common/module.h4
-rw-r--r--libpurple/plugins/perl/common/typemap1
-rw-r--r--libpurple/smiley.c7
11 files changed, 102 insertions, 4 deletions
diff --git a/libpurple/Makefile.am b/libpurple/Makefile.am
index 5f27dceae5..cd38d6f2f6 100644
--- a/libpurple/Makefile.am
+++ b/libpurple/Makefile.am
@@ -156,7 +156,7 @@ dbus_headers = dbus-bindings.h dbus-purple.h dbus-server.h dbus-useful.h dbus-d
dbus_exported = dbus-useful.h dbus-define-api.h account.h blist.h buddyicon.h \
connection.h conversation.h core.h ft.h log.h notify.h prefs.h roomlist.h \
- savedstatuses.h status.h server.h util.h xmlnode.h prpl.h
+ savedstatuses.h smiley.h status.h server.h util.h xmlnode.h prpl.h
purple_build_coreheaders = $(addprefix $(srcdir)/, $(purple_coreheaders)) \
$(purple_builtheaders)
diff --git a/libpurple/dbus-analyze-functions.py b/libpurple/dbus-analyze-functions.py
index b68ba45713..4a51c15f58 100644
--- a/libpurple/dbus-analyze-functions.py
+++ b/libpurple/dbus-analyze-functions.py
@@ -483,6 +483,7 @@ class BindingSet:
self.inputiter = iter(inputfile)
self.functionregexp = \
re.compile("^%s(\w[^()]*)\(([^()]*)\)\s*;\s*$" % fprefix)
+ self.typeregexp = re.compile("^\w+\s*\*?\s*$")
@@ -501,7 +502,7 @@ class BindingSet:
# accumulate lines until the parentheses are balance or an
# empty line has been encountered
myline = line.strip()
- while myline.count("(") > myline.count(")"):
+ while (myline.count("(") > myline.count(")")) or self.typeregexp.match(myline):
newline = self.inputiter.next().strip()
if len(newline) == 0:
break
diff --git a/libpurple/dbus-server.c b/libpurple/dbus-server.c
index e405f0ff1e..df2a058879 100644
--- a/libpurple/dbus-server.c
+++ b/libpurple/dbus-server.c
@@ -40,6 +40,7 @@
#include "core.h"
#include "internal.h"
#include "savedstatuses.h"
+#include "smiley.h"
#include "util.h"
#include "value.h"
#include "xmlnode.h"
diff --git a/libpurple/plugins/perl/Makefile.am b/libpurple/plugins/perl/Makefile.am
index 73388ffb87..e17292380d 100644
--- a/libpurple/plugins/perl/Makefile.am
+++ b/libpurple/plugins/perl/Makefile.am
@@ -67,6 +67,7 @@ common_sources = \
common/SavedStatuses.xs \
common/Server.xs \
common/Signal.xs \
+ common/Smiley.xs \
common/Sound.xs \
common/Status.xs \
common/Stringref.xs \
diff --git a/libpurple/plugins/perl/common/MANIFEST b/libpurple/plugins/perl/common/MANIFEST
index 7c310c092c..75e701224a 100644
--- a/libpurple/plugins/perl/common/MANIFEST
+++ b/libpurple/plugins/perl/common/MANIFEST
@@ -28,6 +28,7 @@ SSLConn.xs
SavedStatuses.xs
Server.xs
Signal.xs
+Smiley.xs
Sound.xs
Status.xs
Stringref.xs
diff --git a/libpurple/plugins/perl/common/Makefile.mingw b/libpurple/plugins/perl/common/Makefile.mingw
index f85e89ba1f..1a4b8150e7 100644
--- a/libpurple/plugins/perl/common/Makefile.mingw
+++ b/libpurple/plugins/perl/common/Makefile.mingw
@@ -61,8 +61,9 @@ XS_FILES = Account.xs \
Roomlist.xs \
SSLConn.xs \
SavedStatuses.xs \
- Signal.xs \
Server.xs \
+ Signal.xs \
+ Smiley.xs \
Sound.xs \
Status.xs \
Stringref.xs \
diff --git a/libpurple/plugins/perl/common/Purple.xs b/libpurple/plugins/perl/common/Purple.xs
index 58d00958ba..6e39ec300f 100644
--- a/libpurple/plugins/perl/common/Purple.xs
+++ b/libpurple/plugins/perl/common/Purple.xs
@@ -30,6 +30,7 @@ PURPLE_PERL_BOOT_PROTO(SSL);
PURPLE_PERL_BOOT_PROTO(SavedStatus);
PURPLE_PERL_BOOT_PROTO(Serv);
PURPLE_PERL_BOOT_PROTO(Signal);
+PURPLE_PERL_BOOT_PROTO(Smiley);
PURPLE_PERL_BOOT_PROTO(Sound);
PURPLE_PERL_BOOT_PROTO(Status);
PURPLE_PERL_BOOT_PROTO(Stringref);
@@ -68,6 +69,7 @@ BOOT:
PURPLE_PERL_BOOT(SavedStatus);
PURPLE_PERL_BOOT(Serv);
PURPLE_PERL_BOOT(Signal);
+ PURPLE_PERL_BOOT(Smiley);
PURPLE_PERL_BOOT(Sound);
PURPLE_PERL_BOOT(Status);
PURPLE_PERL_BOOT(Stringref);
diff --git a/libpurple/plugins/perl/common/Smiley.xs b/libpurple/plugins/perl/common/Smiley.xs
new file mode 100644
index 0000000000..560fd2d29d
--- /dev/null
+++ b/libpurple/plugins/perl/common/Smiley.xs
@@ -0,0 +1,81 @@
+#include "module.h"
+
+MODULE = Purple::Smiley PACKAGE = Purple::Smiley PREFIX = purple_smiley_
+PROTOTYPES: ENABLE
+
+Purple::Smiley
+purple_smiley_new(img, shortcut)
+ Purple::StoredImage img
+ const char * shortcut
+
+Purple::Smiley
+purple_smiley_new_from_file(shortcut, filepath)
+ const char * shortcut
+ const char * filepath
+
+void
+purple_smiley_delete(smiley)
+ Purple::Smiley smiley
+
+gboolean
+purple_smiley_set_shortcut(smiley, shortcut)
+ Purple::Smiley smiley
+ const char * shortcut
+
+void
+purple_smiley_set_data(smiley, data, data_len, keepfilename)
+ Purple::Smiley smiley
+ guchar * data
+ size_t data_len
+ gboolean keepfilename
+
+const char *
+purple_smiley_get_shortcut(smiley)
+ Purple::Smiley smiley
+
+const char *
+purple_smiley_get_checksum(smiley)
+ Purple::Smiley smiley
+
+Purple::StoredImage
+purple_smiley_get_stored_image(smiley)
+ Purple::Smiley smiley
+
+gconstpointer
+purple_smiley_get_data(smiley, len)
+ Purple::Smiley smiley
+ size_t * len
+
+const char *
+purple_smiley_get_extension(smiley)
+ Purple::Smiley smiley
+
+
+gchar_own *
+purple_smiley_get_full_path(smiley)
+ Purple::Smiley smiley
+
+
+MODULE = Purple::Smiley PACKAGE = Purple::Smileys PREFIX = purple_smileys_
+PROTOTYPES: ENABLE
+
+void
+purple_smileys_get_all()
+PREINIT:
+ GList *l;
+PPCODE:
+ for (l = purple_smileys_get_all(); l != NULL; l = g_list_delete_link(l, l)) {
+ XPUSHs(sv_2mortal(purple_perl_bless_object(l->data, "Purple::Smiley")));
+ }
+
+Purple::Smiley
+purple_smileys_find_by_shortcut(shortcut)
+ const char * shortcut
+
+Purple::Smiley
+purple_smileys_find_by_checksum(checksum)
+ const char * checksum
+
+const char *
+purple_smileys_get_storing_dir()
+
diff --git a/libpurple/plugins/perl/common/module.h b/libpurple/plugins/perl/common/module.h
index a05c59e2c7..b7b2c5568a 100644
--- a/libpurple/plugins/perl/common/module.h
+++ b/libpurple/plugins/perl/common/module.h
@@ -51,6 +51,7 @@ typedef struct group *Purple__Group;
#include "savedstatuses.h"
#include "server.h"
#include "signals.h"
+#include "smiley.h"
#include "sound.h"
#include "sslconn.h"
#include "status.h"
@@ -240,6 +241,9 @@ typedef PurpleRoomlistUiOps * Purple__Roomlist__UiOps;
typedef PurpleSavedStatus * Purple__SavedStatus;
typedef PurpleSavedStatusSub * Purple__SavedStatus__Sub;
+/* smiley.h */
+typedef PurpleSmiley * Purple__Smiley;
+
/* sound.h */
typedef PurpleSoundEventID Purple__SoundEventID;
typedef PurpleSoundUiOps * Purple__Sound__UiOps;
diff --git a/libpurple/plugins/perl/common/typemap b/libpurple/plugins/perl/common/typemap
index 83af8f0551..5e9ebfb306 100644
--- a/libpurple/plugins/perl/common/typemap
+++ b/libpurple/plugins/perl/common/typemap
@@ -151,6 +151,7 @@ Purple::Ssl::Ops T_PurpleObj
Purple::Presence T_PurpleObj
Purple::PresenceContext T_IV
+Purple::Smiley T_PurpleObj
Purple::Status T_PurpleObj
Purple::StatusAttr T_PurpleObj
Purple::StatusPrimitive T_IV
diff --git a/libpurple/smiley.c b/libpurple/smiley.c
index 93df8e3e40..b7a1ab8093 100644
--- a/libpurple/smiley.c
+++ b/libpurple/smiley.c
@@ -25,11 +25,12 @@
*/
#include "internal.h"
-#include "xmlnode.h"
+#include "dbus-maybe.h"
#include "debug.h"
#include "imgstore.h"
#include "smiley.h"
#include "util.h"
+#include "xmlnode.h"
/**************************************************************************/
/* Main structures, members and constants */
@@ -305,6 +306,8 @@ static GObjectClass *parent_class;
static void
purple_smiley_init(GTypeInstance *instance, gpointer klass)
{
+ PurpleSmiley *smiley = PURPLE_SMILEY(instance);
+ PURPLE_DBUS_REGISTER_POINTER(smiley, PurpleSmiley);
}
static void
@@ -379,6 +382,8 @@ purple_smiley_finalize(GObject *obj)
purple_smiley_data_unstore(purple_imgstore_get_filename(smiley->img));
purple_imgstore_unref(smiley->img);
+ PURPLE_DBUS_UNREGISTER_POINTER(smiley);
+
purple_smileys_save();
}