You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(106) |
Oct
(334) |
Nov
(246) |
Dec
(145) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(42) |
Feb
(53) |
Mar
(232) |
Apr
(109) |
May
(137) |
Jun
(63) |
Jul
(26) |
Aug
(263) |
Sep
(193) |
Oct
(507) |
Nov
(440) |
Dec
(241) |
2003 |
Jan
(567) |
Feb
(195) |
Mar
(504) |
Apr
(481) |
May
(524) |
Jun
(522) |
Jul
(594) |
Aug
(502) |
Sep
(643) |
Oct
(508) |
Nov
(430) |
Dec
(377) |
2004 |
Jan
(361) |
Feb
(251) |
Mar
(219) |
Apr
(499) |
May
(461) |
Jun
(419) |
Jul
(314) |
Aug
(519) |
Sep
(416) |
Oct
(247) |
Nov
(305) |
Dec
(382) |
2005 |
Jan
(267) |
Feb
(282) |
Mar
(327) |
Apr
(338) |
May
(189) |
Jun
(400) |
Jul
(462) |
Aug
(530) |
Sep
(316) |
Oct
(523) |
Nov
(481) |
Dec
(650) |
2006 |
Jan
(536) |
Feb
(361) |
Mar
(287) |
Apr
(146) |
May
(101) |
Jun
(169) |
Jul
(221) |
Aug
(498) |
Sep
(300) |
Oct
(236) |
Nov
(209) |
Dec
(205) |
2007 |
Jan
(30) |
Feb
(23) |
Mar
(26) |
Apr
(15) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <the...@us...> - 2006-11-30 16:50:41
|
Revision: 17858 http://svn.sourceforge.net/gaim/?rev=17858&view=rev Author: thekingant Date: 2006-11-30 08:50:14 -0800 (Thu, 30 Nov 2006) Log Message: ----------- Artanicus suggested that we list ourselves in the InstantMessaging category. And Application isn't even listed at http://standards.freedesktop.org/menu-spec/menu-spec-latest.html, so I removed it Modified Paths: -------------- trunk/gaim.desktop.in Modified: trunk/gaim.desktop.in =================================================================== --- trunk/gaim.desktop.in 2006-11-30 11:12:13 UTC (rev 17857) +++ trunk/gaim.desktop.in 2006-11-30 16:50:14 UTC (rev 17858) @@ -8,4 +8,4 @@ StartupNotify=true Terminal=false Type=Application -Categories=Application;Network; +Categories=Network;InstantMessaging; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2006-11-30 11:12:14
|
Revision: 17857 http://svn.sourceforge.net/gaim/?rev=17857&view=rev Author: markhuetsch Date: 2006-11-30 03:12:13 -0800 (Thu, 30 Nov 2006) Log Message: ----------- Tweaks. Modified Paths: -------------- trunk/gtk/gtkaccount.c trunk/libgaim/buddyicon.c Modified: trunk/gtk/gtkaccount.c =================================================================== --- trunk/gtk/gtkaccount.c 2006-11-30 10:56:56 UTC (rev 17856) +++ trunk/gtk/gtkaccount.c 2006-11-30 11:12:13 UTC (rev 17857) @@ -118,11 +118,11 @@ GtkWidget *icon_hbox; GtkWidget *icon_check; GtkWidget *icon_entry; - char *cached_icon_path; - char *icon_path; GtkWidget *icon_filesel; GtkWidget *icon_preview; GtkWidget *icon_text; + char *cached_icon_path; + char *icon_path; /* Protocol Options */ GtkWidget *protocol_frame; @@ -1083,8 +1083,7 @@ g_free(dialog->cached_icon_path); } - if (dialog->cached_icon_path != NULL) - g_free(dialog->icon_path); + g_free(dialog->icon_path); if (dialog->icon_filesel) gtk_widget_destroy(dialog->icon_filesel); Modified: trunk/libgaim/buddyicon.c =================================================================== --- trunk/libgaim/buddyicon.c 2006-11-30 10:56:56 UTC (rev 17856) +++ trunk/libgaim/buddyicon.c 2006-11-30 11:12:13 UTC (rev 17857) @@ -347,7 +347,7 @@ g_return_if_fail(icon != NULL); g_free(icon->path); - icon->path = (path != NULL ? g_strdup(path) : NULL); + icon->path = g_strdup(path); } GaimAccount * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2006-11-30 10:56:56
|
Revision: 17856 http://svn.sourceforge.net/gaim/?rev=17856&view=rev Author: markhuetsch Date: 2006-11-30 02:56:56 -0800 (Thu, 30 Nov 2006) Log Message: ----------- These icons are neither useful nor existent right now. Modified Paths: -------------- trunk/libgaim/protocols/qq/qq.c Modified: trunk/libgaim/protocols/qq/qq.c =================================================================== --- trunk/libgaim/protocols/qq/qq.c 2006-11-30 10:30:13 UTC (rev 17855) +++ trunk/libgaim/protocols/qq/qq.c 2006-11-30 10:56:56 UTC (rev 17856) @@ -245,15 +245,18 @@ if (q_bud == NULL) { emblems[0] = "offline"; } else { - /* TODO the wireless icon is a bit too big to look good with QQ faces */ if (q_bud->status == QQ_BUDDY_ONLINE_AWAY) emblems[i++] = "away"; + /* if (q_bud->comm_flag & QQ_COMM_FLAG_QQ_MEMBER) emblems[i++] = "qq_member"; + */ if (q_bud->comm_flag & QQ_COMM_FLAG_BIND_MOBILE) emblems[i++] = "wireless"; + /* if (q_bud->comm_flag & QQ_COMM_FLAG_VIDEO) emblems[i%4] = "video"; + */ } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2006-11-30 10:30:18
|
Revision: 17855 http://svn.sourceforge.net/gaim/?rev=17855&view=rev Author: markhuetsch Date: 2006-11-30 02:30:13 -0800 (Thu, 30 Nov 2006) Log Message: ----------- Use the QQ faces as buddy icons instead of status icons. Also, a few minor cleanups and a bug fix for faces > 33. Modified Paths: -------------- trunk/configure.ac trunk/gtk/pixmaps/Makefile.am trunk/gtk/pixmaps/status/default/Makefile.am trunk/libgaim/protocols/qq/Makefile.am trunk/libgaim/protocols/qq/buddy_info.c trunk/libgaim/protocols/qq/buddy_info.h trunk/libgaim/protocols/qq/buddy_list.c trunk/libgaim/protocols/qq/group_info.c trunk/libgaim/protocols/qq/keep_alive.c trunk/libgaim/protocols/qq/qq.c trunk/libgaim/protocols/qq/qq.h trunk/libgaim/protocols/qq/utils.c trunk/libgaim/protocols/qq/utils.h Added Paths: ----------- trunk/gtk/pixmaps/buddy_icons/ trunk/gtk/pixmaps/buddy_icons/Makefile.am trunk/gtk/pixmaps/buddy_icons/Makefile.mingw trunk/gtk/pixmaps/buddy_icons/qq/ trunk/gtk/pixmaps/buddy_icons/qq/Makefile.am trunk/gtk/pixmaps/buddy_icons/qq/Makefile.mingw trunk/gtk/pixmaps/buddy_icons/qq/qq_1.png trunk/gtk/pixmaps/buddy_icons/qq/qq_10.png trunk/gtk/pixmaps/buddy_icons/qq/qq_100.png trunk/gtk/pixmaps/buddy_icons/qq/qq_11.png trunk/gtk/pixmaps/buddy_icons/qq/qq_12.png trunk/gtk/pixmaps/buddy_icons/qq/qq_13.png trunk/gtk/pixmaps/buddy_icons/qq/qq_14.png trunk/gtk/pixmaps/buddy_icons/qq/qq_15.png trunk/gtk/pixmaps/buddy_icons/qq/qq_16.png trunk/gtk/pixmaps/buddy_icons/qq/qq_17.png trunk/gtk/pixmaps/buddy_icons/qq/qq_18.png trunk/gtk/pixmaps/buddy_icons/qq/qq_19.png trunk/gtk/pixmaps/buddy_icons/qq/qq_2.png trunk/gtk/pixmaps/buddy_icons/qq/qq_20.png trunk/gtk/pixmaps/buddy_icons/qq/qq_21.png trunk/gtk/pixmaps/buddy_icons/qq/qq_22.png trunk/gtk/pixmaps/buddy_icons/qq/qq_23.png trunk/gtk/pixmaps/buddy_icons/qq/qq_24.png trunk/gtk/pixmaps/buddy_icons/qq/qq_25.png trunk/gtk/pixmaps/buddy_icons/qq/qq_26.png trunk/gtk/pixmaps/buddy_icons/qq/qq_27.png trunk/gtk/pixmaps/buddy_icons/qq/qq_28.png trunk/gtk/pixmaps/buddy_icons/qq/qq_29.png trunk/gtk/pixmaps/buddy_icons/qq/qq_3.png trunk/gtk/pixmaps/buddy_icons/qq/qq_30.png trunk/gtk/pixmaps/buddy_icons/qq/qq_31.png trunk/gtk/pixmaps/buddy_icons/qq/qq_32.png trunk/gtk/pixmaps/buddy_icons/qq/qq_33.png trunk/gtk/pixmaps/buddy_icons/qq/qq_34.png trunk/gtk/pixmaps/buddy_icons/qq/qq_35.png trunk/gtk/pixmaps/buddy_icons/qq/qq_36.png trunk/gtk/pixmaps/buddy_icons/qq/qq_37.png trunk/gtk/pixmaps/buddy_icons/qq/qq_38.png trunk/gtk/pixmaps/buddy_icons/qq/qq_39.png trunk/gtk/pixmaps/buddy_icons/qq/qq_4.png trunk/gtk/pixmaps/buddy_icons/qq/qq_40.png trunk/gtk/pixmaps/buddy_icons/qq/qq_41.png trunk/gtk/pixmaps/buddy_icons/qq/qq_42.png trunk/gtk/pixmaps/buddy_icons/qq/qq_43.png trunk/gtk/pixmaps/buddy_icons/qq/qq_44.png trunk/gtk/pixmaps/buddy_icons/qq/qq_45.png trunk/gtk/pixmaps/buddy_icons/qq/qq_46.png trunk/gtk/pixmaps/buddy_icons/qq/qq_47.png trunk/gtk/pixmaps/buddy_icons/qq/qq_48.png trunk/gtk/pixmaps/buddy_icons/qq/qq_49.png trunk/gtk/pixmaps/buddy_icons/qq/qq_5.png trunk/gtk/pixmaps/buddy_icons/qq/qq_50.png trunk/gtk/pixmaps/buddy_icons/qq/qq_51.png trunk/gtk/pixmaps/buddy_icons/qq/qq_52.png trunk/gtk/pixmaps/buddy_icons/qq/qq_53.png trunk/gtk/pixmaps/buddy_icons/qq/qq_54.png trunk/gtk/pixmaps/buddy_icons/qq/qq_55.png trunk/gtk/pixmaps/buddy_icons/qq/qq_56.png trunk/gtk/pixmaps/buddy_icons/qq/qq_57.png trunk/gtk/pixmaps/buddy_icons/qq/qq_58.png trunk/gtk/pixmaps/buddy_icons/qq/qq_59.png trunk/gtk/pixmaps/buddy_icons/qq/qq_6.png trunk/gtk/pixmaps/buddy_icons/qq/qq_60.png trunk/gtk/pixmaps/buddy_icons/qq/qq_61.png trunk/gtk/pixmaps/buddy_icons/qq/qq_62.png trunk/gtk/pixmaps/buddy_icons/qq/qq_63.png trunk/gtk/pixmaps/buddy_icons/qq/qq_64.png trunk/gtk/pixmaps/buddy_icons/qq/qq_65.png trunk/gtk/pixmaps/buddy_icons/qq/qq_66.png trunk/gtk/pixmaps/buddy_icons/qq/qq_67.png trunk/gtk/pixmaps/buddy_icons/qq/qq_68.png trunk/gtk/pixmaps/buddy_icons/qq/qq_69.png trunk/gtk/pixmaps/buddy_icons/qq/qq_7.png trunk/gtk/pixmaps/buddy_icons/qq/qq_70.png trunk/gtk/pixmaps/buddy_icons/qq/qq_71.png trunk/gtk/pixmaps/buddy_icons/qq/qq_72.png trunk/gtk/pixmaps/buddy_icons/qq/qq_73.png trunk/gtk/pixmaps/buddy_icons/qq/qq_74.png trunk/gtk/pixmaps/buddy_icons/qq/qq_75.png trunk/gtk/pixmaps/buddy_icons/qq/qq_76.png trunk/gtk/pixmaps/buddy_icons/qq/qq_77.png trunk/gtk/pixmaps/buddy_icons/qq/qq_78.png trunk/gtk/pixmaps/buddy_icons/qq/qq_79.png trunk/gtk/pixmaps/buddy_icons/qq/qq_8.png trunk/gtk/pixmaps/buddy_icons/qq/qq_80.png trunk/gtk/pixmaps/buddy_icons/qq/qq_81.png trunk/gtk/pixmaps/buddy_icons/qq/qq_82.png trunk/gtk/pixmaps/buddy_icons/qq/qq_83.png trunk/gtk/pixmaps/buddy_icons/qq/qq_84.png trunk/gtk/pixmaps/buddy_icons/qq/qq_85.png trunk/gtk/pixmaps/buddy_icons/qq/qq_86.png trunk/gtk/pixmaps/buddy_icons/qq/qq_87.png trunk/gtk/pixmaps/buddy_icons/qq/qq_88.png trunk/gtk/pixmaps/buddy_icons/qq/qq_89.png trunk/gtk/pixmaps/buddy_icons/qq/qq_9.png trunk/gtk/pixmaps/buddy_icons/qq/qq_90.png trunk/gtk/pixmaps/buddy_icons/qq/qq_91.png trunk/gtk/pixmaps/buddy_icons/qq/qq_92.png trunk/gtk/pixmaps/buddy_icons/qq/qq_93.png trunk/gtk/pixmaps/buddy_icons/qq/qq_94.png trunk/gtk/pixmaps/buddy_icons/qq/qq_95.png trunk/gtk/pixmaps/buddy_icons/qq/qq_96.png trunk/gtk/pixmaps/buddy_icons/qq/qq_97.png trunk/gtk/pixmaps/buddy_icons/qq/qq_98.png trunk/gtk/pixmaps/buddy_icons/qq/qq_99.png Removed Paths: ------------- trunk/gtk/pixmaps/status/default/qq_1.png trunk/gtk/pixmaps/status/default/qq_10.png trunk/gtk/pixmaps/status/default/qq_100.png trunk/gtk/pixmaps/status/default/qq_11.png trunk/gtk/pixmaps/status/default/qq_12.png trunk/gtk/pixmaps/status/default/qq_13.png trunk/gtk/pixmaps/status/default/qq_14.png trunk/gtk/pixmaps/status/default/qq_15.png trunk/gtk/pixmaps/status/default/qq_16.png trunk/gtk/pixmaps/status/default/qq_17.png trunk/gtk/pixmaps/status/default/qq_18.png trunk/gtk/pixmaps/status/default/qq_19.png trunk/gtk/pixmaps/status/default/qq_2.png trunk/gtk/pixmaps/status/default/qq_20.png trunk/gtk/pixmaps/status/default/qq_21.png trunk/gtk/pixmaps/status/default/qq_22.png trunk/gtk/pixmaps/status/default/qq_23.png trunk/gtk/pixmaps/status/default/qq_24.png trunk/gtk/pixmaps/status/default/qq_25.png trunk/gtk/pixmaps/status/default/qq_26.png trunk/gtk/pixmaps/status/default/qq_27.png trunk/gtk/pixmaps/status/default/qq_28.png trunk/gtk/pixmaps/status/default/qq_29.png trunk/gtk/pixmaps/status/default/qq_3.png trunk/gtk/pixmaps/status/default/qq_30.png trunk/gtk/pixmaps/status/default/qq_31.png trunk/gtk/pixmaps/status/default/qq_32.png trunk/gtk/pixmaps/status/default/qq_33.png trunk/gtk/pixmaps/status/default/qq_34.png trunk/gtk/pixmaps/status/default/qq_35.png trunk/gtk/pixmaps/status/default/qq_36.png trunk/gtk/pixmaps/status/default/qq_37.png trunk/gtk/pixmaps/status/default/qq_38.png trunk/gtk/pixmaps/status/default/qq_39.png trunk/gtk/pixmaps/status/default/qq_4.png trunk/gtk/pixmaps/status/default/qq_40.png trunk/gtk/pixmaps/status/default/qq_41.png trunk/gtk/pixmaps/status/default/qq_42.png trunk/gtk/pixmaps/status/default/qq_43.png trunk/gtk/pixmaps/status/default/qq_44.png trunk/gtk/pixmaps/status/default/qq_45.png trunk/gtk/pixmaps/status/default/qq_46.png trunk/gtk/pixmaps/status/default/qq_47.png trunk/gtk/pixmaps/status/default/qq_48.png trunk/gtk/pixmaps/status/default/qq_49.png trunk/gtk/pixmaps/status/default/qq_5.png trunk/gtk/pixmaps/status/default/qq_50.png trunk/gtk/pixmaps/status/default/qq_51.png trunk/gtk/pixmaps/status/default/qq_52.png trunk/gtk/pixmaps/status/default/qq_53.png trunk/gtk/pixmaps/status/default/qq_54.png trunk/gtk/pixmaps/status/default/qq_55.png trunk/gtk/pixmaps/status/default/qq_56.png trunk/gtk/pixmaps/status/default/qq_57.png trunk/gtk/pixmaps/status/default/qq_58.png trunk/gtk/pixmaps/status/default/qq_59.png trunk/gtk/pixmaps/status/default/qq_6.png trunk/gtk/pixmaps/status/default/qq_60.png trunk/gtk/pixmaps/status/default/qq_61.png trunk/gtk/pixmaps/status/default/qq_62.png trunk/gtk/pixmaps/status/default/qq_63.png trunk/gtk/pixmaps/status/default/qq_64.png trunk/gtk/pixmaps/status/default/qq_65.png trunk/gtk/pixmaps/status/default/qq_66.png trunk/gtk/pixmaps/status/default/qq_67.png trunk/gtk/pixmaps/status/default/qq_68.png trunk/gtk/pixmaps/status/default/qq_69.png trunk/gtk/pixmaps/status/default/qq_7.png trunk/gtk/pixmaps/status/default/qq_70.png trunk/gtk/pixmaps/status/default/qq_71.png trunk/gtk/pixmaps/status/default/qq_72.png trunk/gtk/pixmaps/status/default/qq_73.png trunk/gtk/pixmaps/status/default/qq_74.png trunk/gtk/pixmaps/status/default/qq_75.png trunk/gtk/pixmaps/status/default/qq_76.png trunk/gtk/pixmaps/status/default/qq_77.png trunk/gtk/pixmaps/status/default/qq_78.png trunk/gtk/pixmaps/status/default/qq_79.png trunk/gtk/pixmaps/status/default/qq_8.png trunk/gtk/pixmaps/status/default/qq_80.png trunk/gtk/pixmaps/status/default/qq_81.png trunk/gtk/pixmaps/status/default/qq_82.png trunk/gtk/pixmaps/status/default/qq_83.png trunk/gtk/pixmaps/status/default/qq_84.png trunk/gtk/pixmaps/status/default/qq_85.png trunk/gtk/pixmaps/status/default/qq_86.png trunk/gtk/pixmaps/status/default/qq_87.png trunk/gtk/pixmaps/status/default/qq_88.png trunk/gtk/pixmaps/status/default/qq_89.png trunk/gtk/pixmaps/status/default/qq_9.png trunk/gtk/pixmaps/status/default/qq_90.png trunk/gtk/pixmaps/status/default/qq_91.png trunk/gtk/pixmaps/status/default/qq_92.png trunk/gtk/pixmaps/status/default/qq_93.png trunk/gtk/pixmaps/status/default/qq_94.png trunk/gtk/pixmaps/status/default/qq_95.png trunk/gtk/pixmaps/status/default/qq_96.png trunk/gtk/pixmaps/status/default/qq_97.png trunk/gtk/pixmaps/status/default/qq_98.png trunk/gtk/pixmaps/status/default/qq_99.png Modified: trunk/configure.ac =================================================================== --- trunk/configure.ac 2006-11-30 10:19:09 UTC (rev 17854) +++ trunk/configure.ac 2006-11-30 10:30:13 UTC (rev 17855) @@ -1875,6 +1875,8 @@ m4macros/Makefile gtk/Makefile gtk/pixmaps/Makefile + gtk/pixmaps/buddy_icons/Makefile + gtk/pixmaps/buddy_icons/qq/Makefile gtk/pixmaps/smileys/Makefile gtk/pixmaps/smileys/default/Makefile gtk/pixmaps/smileys/none/Makefile Modified: trunk/gtk/pixmaps/Makefile.am =================================================================== --- trunk/gtk/pixmaps/Makefile.am 2006-11-30 10:19:09 UTC (rev 17854) +++ trunk/gtk/pixmaps/Makefile.am 2006-11-30 10:30:13 UTC (rev 17855) @@ -1,4 +1,4 @@ -SUBDIRS = smileys status +SUBDIRS = buddy_icons smileys status EXTRA_DIST = \ about_menu.png \ Added: trunk/gtk/pixmaps/buddy_icons/Makefile.am =================================================================== --- trunk/gtk/pixmaps/buddy_icons/Makefile.am (rev 0) +++ trunk/gtk/pixmaps/buddy_icons/Makefile.am 2006-11-30 10:30:13 UTC (rev 17855) @@ -0,0 +1 @@ +SUBDIRS = qq Property changes on: trunk/gtk/pixmaps/buddy_icons/Makefile.am ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Added: trunk/gtk/pixmaps/buddy_icons/Makefile.mingw =================================================================== --- trunk/gtk/pixmaps/buddy_icons/Makefile.mingw (rev 0) +++ trunk/gtk/pixmaps/buddy_icons/Makefile.mingw 2006-11-30 10:30:13 UTC (rev 17855) @@ -0,0 +1,16 @@ +# +# Makefile.mingw +# +# Description: Makefile for win32 (mingw) version of Gaim pixmaps +# + +include ./Makefile.am + +.PHONY: install + +install: + if test '$(SUBDIRS)'; then \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + $(MAKE) -C $$subdir -f Makefile.mingw install; \ + done; \ + fi; Property changes on: trunk/gtk/pixmaps/buddy_icons/Makefile.mingw ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Added: trunk/gtk/pixmaps/buddy_icons/qq/Makefile.am =================================================================== --- trunk/gtk/pixmaps/buddy_icons/qq/Makefile.am (rev 0) +++ trunk/gtk/pixmaps/buddy_icons/qq/Makefile.am 2006-11-30 10:30:13 UTC (rev 17855) @@ -0,0 +1,105 @@ +EXTRA_DIST = \ + qq_1.png \ + qq_2.png \ + qq_3.png \ + qq_4.png \ + qq_5.png \ + qq_6.png \ + qq_7.png \ + qq_8.png \ + qq_9.png \ + qq_10.png \ + qq_11.png \ + qq_12.png \ + qq_13.png \ + qq_14.png \ + qq_15.png \ + qq_16.png \ + qq_17.png \ + qq_18.png \ + qq_19.png \ + qq_20.png \ + qq_21.png \ + qq_22.png \ + qq_23.png \ + qq_24.png \ + qq_25.png \ + qq_26.png \ + qq_27.png \ + qq_28.png \ + qq_29.png \ + qq_30.png \ + qq_31.png \ + qq_32.png \ + qq_33.png \ + qq_34.png \ + qq_35.png \ + qq_36.png \ + qq_37.png \ + qq_38.png \ + qq_39.png \ + qq_40.png \ + qq_41.png \ + qq_42.png \ + qq_43.png \ + qq_44.png \ + qq_45.png \ + qq_46.png \ + qq_47.png \ + qq_48.png \ + qq_49.png \ + qq_50.png \ + qq_51.png \ + qq_52.png \ + qq_53.png \ + qq_54.png \ + qq_55.png \ + qq_56.png \ + qq_57.png \ + qq_58.png \ + qq_59.png \ + qq_60.png \ + qq_61.png \ + qq_62.png \ + qq_63.png \ + qq_64.png \ + qq_65.png \ + qq_66.png \ + qq_67.png \ + qq_68.png \ + qq_69.png \ + qq_70.png \ + qq_71.png \ + qq_72.png \ + qq_73.png \ + qq_74.png \ + qq_75.png \ + qq_76.png \ + qq_77.png \ + qq_78.png \ + qq_79.png \ + qq_80.png \ + qq_81.png \ + qq_82.png \ + qq_83.png \ + qq_84.png \ + qq_85.png \ + qq_86.png \ + qq_87.png \ + qq_88.png \ + qq_89.png \ + qq_90.png \ + qq_91.png \ + qq_92.png \ + qq_93.png \ + qq_94.png \ + qq_95.png \ + qq_96.png \ + qq_97.png \ + qq_98.png \ + qq_99.png \ + qq_100.png + +qqbuddyiconspixdir = $(datadir)/pixmaps/gaim/buddy_icons/qq + +qqbuddyiconspix_DATA = $(EXTRA_DIST) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/Makefile.am ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Added: trunk/gtk/pixmaps/buddy_icons/qq/Makefile.mingw =================================================================== --- trunk/gtk/pixmaps/buddy_icons/qq/Makefile.mingw (rev 0) +++ trunk/gtk/pixmaps/buddy_icons/qq/Makefile.mingw 2006-11-30 10:30:13 UTC (rev 17855) @@ -0,0 +1,18 @@ +# +## Makefile.mingw +# +## Description: Makefile for win32 (mingw) version of Gaim QQ buddy icons +# +# + +GAIM_TOP = ../../../.. +include $(GAIM_TOP)/libgaim/win32/global.mak + +datadir = $(GAIM_INSTALL_DIR) +include ./Makefile.am + +install: + if test '$(qqbuddyiconspix_DATA)'; then \ + mkdir -p $(qqbuddyiconspixdir); \ + cp $(qqbuddyiconspix_DATA) $(qqbuddyiconspixdir); \ + fi; Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/Makefile.mingw ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_1.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_1.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_10.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_10.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_100.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_100.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_11.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_11.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_12.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_12.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_13.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_13.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_14.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_14.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_15.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_15.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_16.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_16.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_17.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_17.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_18.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_18.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_19.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_19.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_2.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_2.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_20.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_20.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_21.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_21.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_22.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_22.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_23.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_23.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_24.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_24.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_25.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_25.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_26.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_26.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_27.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_27.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_28.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_28.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_29.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_29.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_3.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_3.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_30.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_30.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_31.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_31.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_32.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_32.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_33.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_33.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_34.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_34.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_35.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_35.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_36.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_36.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_37.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_37.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_38.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_38.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_39.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_39.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_4.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_4.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_40.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_40.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_41.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_41.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_42.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_42.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_43.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_43.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_44.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_44.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_45.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_45.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_46.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_46.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_47.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_47.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_48.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_48.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_49.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_49.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_5.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_5.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_50.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_50.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_51.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_51.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_52.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_52.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_53.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_53.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_54.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_54.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_55.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_55.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_56.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_56.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_57.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_57.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_58.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_58.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_59.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_59.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_6.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_6.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_60.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_60.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_61.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_61.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_62.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_62.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_63.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_63.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_64.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_64.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_65.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_65.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_66.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_66.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_67.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_67.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_68.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_68.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_69.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_69.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_7.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_7.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_70.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_70.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_71.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_71.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_72.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_72.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_73.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_73.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_74.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_74.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_75.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_75.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_76.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_76.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_77.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_77.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_78.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_78.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_79.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_79.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_8.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_8.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_80.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_80.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_81.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_81.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_82.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_82.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_83.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_83.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_84.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_84.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_85.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_85.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_86.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_86.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_87.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_87.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_88.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_88.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_89.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_89.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_9.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_9.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_90.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_90.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_91.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_91.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_92.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_92.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_93.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_93.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_94.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_94.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_95.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_95.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_96.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_96.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_97.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_97.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_98.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_98.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/gtk/pixmaps/buddy_icons/qq/qq_99.png =================================================================== (Binary files differ) Property changes on: trunk/gtk/pixmaps/buddy_icons/qq/qq_99.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/gtk/pixmaps/status/default/Makefile.am =================================================================== --- trunk/gtk/pixmaps/status/default/Makefile.am 2006-11-30 10:19:09 UTC (rev 17854) +++ trunk/gtk/pixmaps/status/default/Makefile.am 2006-11-30 10:30:13 UTC (rev 17855) @@ -33,106 +33,6 @@ op.png \ pending.png \ qq.png \ - qq_1.png \ - qq_2.png \ - qq_3.png \ - qq_4.png \ - qq_5.png \ - qq_6.png \ - qq_7.png \ - qq_8.png \ - qq_9.png \ - qq_10.png \ - qq_11.png \ - qq_12.png \ - qq_13.png \ - qq_14.png \ - qq_15.png \ - qq_16.png \ - qq_17.png \ - qq_18.png \ - qq_19.png \ - qq_20.png \ - qq_21.png \ - qq_22.png \ - qq_23.png \ - qq_24.png \ - qq_25.png \ - qq_26.png \ - qq_27.png \ - qq_28.png \ - qq_29.png \ - qq_30.png \ - qq_31.png \ - qq_32.png \ - qq_33.png \ - qq_34.png \ - qq_35.png \ - qq_36.png \ - qq_37.png \ - qq_38.png \ - qq_39.png \ - qq_40.png \ - qq_41.png \ - qq_42.png \ - qq_43.png \ - qq_44.png \ - qq_45.png \ - qq_46.png \ - qq_47.png \ - qq_48.png \ - qq_49.png \ - qq_50.png \ - qq_51.png \ - qq_52.png \ - qq_53.png \ - qq_54.png \ - qq_55.png \ - qq_56.png \ - qq_57.png \ - qq_58.png \ - qq_59.png \ - qq_60.png \ - qq_61.png \ - qq_62.png \ - qq_63.png \ - qq_64.png \ - qq_65.png \ - qq_66.png \ - qq_67.png \ - qq_68.png \ - qq_69.png \ - qq_70.png \ - qq_71.png \ - qq_72.png \ - qq_73.png \ - qq_74.png \ - qq_75.png \ - qq_76.png \ - qq_77.png \ - qq_78.png \ - qq_79.png \ - qq_80.png \ - qq_81.png \ - qq_82.png \ - qq_83.png \ - qq_84.png \ - qq_85.png \ - qq_86.png \ - qq_87.png \ - qq_88.png \ - qq_89.png \ - qq_90.png \ - qq_91.png \ - qq_92.png \ - qq_93.png \ - qq_94.png \ - qq_95.png \ - qq_96.png \ - qq_97.png \ - qq_98.png \ - qq_99.png \ - qq_100.png \ secure.png \ silc.png \ simple.png \ Deleted: trunk/gtk/pixmaps/status/default/qq_1.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_10.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_100.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_11.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_12.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_13.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_14.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_15.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_16.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_17.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_18.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_19.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_2.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_20.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_21.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_22.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_23.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_24.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_25.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_26.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_27.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_28.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_29.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_3.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_30.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_31.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_32.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_33.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_34.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_35.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_36.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_37.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_38.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_39.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_4.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_40.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_41.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_42.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_43.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_44.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_45.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_46.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_47.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_48.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_49.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_5.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_50.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_51.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_52.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_53.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_54.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_55.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_56.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_57.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_58.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_59.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_6.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_60.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_61.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_62.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_63.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_64.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_65.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_66.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_67.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_68.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_69.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_7.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_70.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_71.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_72.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_73.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_74.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_75.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/status/default/qq_76.png =================================================================== (Binary files differ) Deleted: trunk/gtk/pixmaps/st... [truncated message content] |
From: <mar...@us...> - 2006-11-30 10:19:11
|
Revision: 17854 http://svn.sourceforge.net/gaim/?rev=17854&view=rev Author: markhuetsch Date: 2006-11-30 02:19:09 -0800 (Thu, 30 Nov 2006) Log Message: ----------- Added ability to keep track of non-cached buddy icons Modified Paths: -------------- trunk/gtk/gtkaccount.c trunk/gtk/gtkstatusbox.c trunk/libgaim/account.c trunk/libgaim/account.h trunk/libgaim/buddyicon.c trunk/libgaim/buddyicon.h trunk/libgaim/prpl.h Modified: trunk/gtk/gtkaccount.c =================================================================== --- trunk/gtk/gtkaccount.c 2006-11-30 05:56:29 UTC (rev 17853) +++ trunk/gtk/gtkaccount.c 2006-11-30 10:19:09 UTC (rev 17854) @@ -118,6 +118,7 @@ GtkWidget *icon_hbox; GtkWidget *icon_check; GtkWidget *icon_entry; + char *cached_icon_path; char *icon_path; GtkWidget *icon_filesel; GtkWidget *icon_preview; @@ -190,15 +191,17 @@ } static void -set_dialog_icon(AccountPrefsDialog *dialog, gchar *new_icon_path) +set_dialog_icon(AccountPrefsDialog *dialog, gchar *new_cached_icon_path, gchar *new_icon_path) { char *filename; GdkPixbuf *pixbuf = NULL; + g_free(dialog->cached_icon_path); g_free(dialog->icon_path); + dialog->cached_icon_path = new_cached_icon_path; dialog->icon_path = new_icon_path; - filename = gaim_buddy_icons_get_full_path(dialog->icon_path); + filename = gaim_buddy_icons_get_full_path(dialog->cached_icon_path); if (filename != NULL) { pixbuf = gdk_pixbuf_new_from_file(filename, NULL); g_free(filename); @@ -298,7 +301,7 @@ dialog = data; if (filename != NULL) - set_dialog_icon(dialog, gaim_gtk_convert_buddy_icon(dialog->plugin, filename)); + set_dialog_icon(dialog, gaim_gtk_convert_buddy_icon(dialog->plugin, filename), g_strdup(filename)); dialog->icon_filesel = NULL; } @@ -313,7 +316,7 @@ static void icon_reset_cb(GtkWidget *button, AccountPrefsDialog *dialog) { - set_dialog_icon(dialog, NULL); + set_dialog_icon(dialog, NULL, NULL); } static void @@ -338,7 +341,7 @@ } if ((rtmp = strchr(tmp, '\r')) || (rtmp = strchr(tmp, '\n'))) *rtmp = '\0'; - set_dialog_icon(dialog, gaim_gtk_convert_buddy_icon(dialog->plugin, tmp)); + set_dialog_icon(dialog, gaim_gtk_convert_buddy_icon(dialog->plugin, tmp), g_strdup(tmp)); g_free(tmp); } gtk_drag_finish(dc, TRUE, FALSE, t); @@ -586,6 +589,7 @@ gtk_widget_show(dialog->icon_entry); /* TODO: Uh, isn't this next line pretty useless? */ gaim_set_accessible_label (dialog->icon_entry, label); + dialog->cached_icon_path = NULL; dialog->icon_path = NULL; vbox2 = gtk_vbox_new(FALSE, 0); @@ -617,12 +621,15 @@ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->icon_check), !gaim_account_get_ui_bool(dialog->account, GAIM_GTK_UI, "use-global-buddyicon", TRUE)); + set_dialog_icon(dialog, + g_strdup(gaim_account_get_ui_string(dialog->account, + GAIM_GTK_UI, "non-global-buddyicon-cached-path", NULL)), + g_strdup(gaim_account_get_ui_string(dialog->account, + GAIM_GTK_UI, "non-global-buddyicon-path", NULL))); + } else { + set_dialog_icon(dialog, NULL, NULL); } - set_dialog_icon(dialog, dialog->account ? - g_strdup(gaim_account_get_ui_string(dialog->account, - GAIM_GTK_UI, "non-global-buddyicon", NULL)) : NULL); - if (!dialog->prpl_info || (!(dialog->prpl_info->options & OPT_PROTO_MAIL_CHECK) && (dialog->prpl_info->icon_spec.format == NULL))) { @@ -1061,21 +1068,24 @@ g_list_free(dialog->protocol_opt_entries); g_free(dialog->protocol_id); - if (dialog->icon_path != NULL) + if (dialog->cached_icon_path != NULL) { - const char *icon = gaim_account_get_ui_string(dialog->account, GAIM_GTK_UI, "non-global-buddyicon", NULL); - if (dialog->icon_path != NULL && (icon == NULL || strcmp(dialog->icon_path, icon))) + const char *icon = gaim_account_get_ui_string(dialog->account, GAIM_GTK_UI, "non-global-buddyicon-cached-path", NULL); + if (dialog->cached_icon_path != NULL && (icon == NULL || strcmp(dialog->cached_icon_path, icon))) { /* The user set an icon, which would've been cached by convert_buddy_icon, * but didn't save the changes. Delete the cache file. */ - char *filename = g_build_filename(gaim_buddy_icons_get_cache_dir(), dialog->icon_path, NULL); + char *filename = g_build_filename(gaim_buddy_icons_get_cache_dir(), dialog->cached_icon_path, NULL); g_unlink(filename); g_free(filename); } - g_free(dialog->icon_path); + g_free(dialog->cached_icon_path); } + if (dialog->cached_icon_path != NULL) + g_free(dialog->icon_path); + if (dialog->icon_filesel) gtk_widget_destroy(dialog->icon_filesel); @@ -1136,14 +1146,18 @@ icon_change = TRUE; } gaim_account_set_ui_bool(account, GAIM_GTK_UI, "use-global-buddyicon", !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->icon_check))); - gaim_account_set_ui_string(account, GAIM_GTK_UI, "non-global-buddyicon", dialog->icon_path); + gaim_account_set_ui_string(account, GAIM_GTK_UI, "non-global-buddyicon-cached-path", dialog->cached_icon_path); + gaim_account_set_ui_string(account, GAIM_GTK_UI, "non-global-buddyicon-path", dialog->icon_path); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->icon_check))) { - gaim_account_set_buddy_icon(account, dialog->icon_path); + gaim_account_set_buddy_icon_path(account, dialog->icon_path); + gaim_account_set_buddy_icon(account, dialog->cached_icon_path); } else if (gaim_prefs_get_string("/gaim/gtk/accounts/buddyicon") && icon_change) { - char *icon = gaim_gtk_convert_buddy_icon(dialog->plugin, gaim_prefs_get_string("/gaim/gtk/accounts/buddyicon")); + const char *filename = gaim_prefs_get_string("/gaim/gtk/accounts/buddyicon"); + char *icon = gaim_gtk_convert_buddy_icon(dialog->plugin, gaim_prefs_get_string(filename)); + gaim_account_set_buddy_icon_path(account, filename); gaim_account_set_buddy_icon(account, icon); g_free(icon); } Modified: trunk/gtk/gtkstatusbox.c =================================================================== --- trunk/gtk/gtkstatusbox.c 2006-11-30 05:56:29 UTC (rev 17853) +++ trunk/gtk/gtkstatusbox.c 2006-11-30 10:19:09 UTC (rev 17854) @@ -1228,7 +1228,8 @@ if (filename) icon = gaim_gtk_convert_buddy_icon(plug, filename); gaim_account_set_ui_bool(box->account, GAIM_GTK_UI, "use-global-buddyicon", (filename != NULL)); - gaim_account_set_ui_string(box->account, GAIM_GTK_UI, "non-global-buddyicon", icon); + gaim_account_set_ui_string(box->account, GAIM_GTK_UI, "non-global-buddyicon-cached-path", icon); + gaim_account_set_buddy_icon_path(box->account, filename); gaim_account_set_buddy_icon(box->account, icon); g_free(icon); } @@ -1246,6 +1247,7 @@ char *icon = NULL; if (filename) icon = gaim_gtk_convert_buddy_icon(plug, filename); + gaim_account_set_buddy_icon_path(account, filename); gaim_account_set_buddy_icon(account, icon); g_free(icon); } Modified: trunk/libgaim/account.c =================================================================== --- trunk/libgaim/account.c 2006-11-30 05:56:29 UTC (rev 17853) +++ trunk/libgaim/account.c 2006-11-30 10:19:09 UTC (rev 17854) @@ -872,6 +872,8 @@ g_free(account->alias); g_free(account->password); g_free(account->user_info); + g_free(account->buddy_icon); + g_free(account->buddy_icon_path); g_free(account->protocol_id); g_hash_table_destroy(account->settings); @@ -1281,15 +1283,25 @@ if (prpl_info && prpl_info->set_buddy_icon) { - char *filename = gaim_buddy_icons_get_full_path(icon); - prpl_info->set_buddy_icon(gc, filename); - g_free(filename); + char *cached_path = gaim_buddy_icons_get_full_path(icon); + prpl_info->set_buddy_icon(gc, cached_path); + g_free(cached_path); } } schedule_accounts_save(); } +void gaim_account_set_buddy_icon_path(GaimAccount *account, const char *path) +{ + g_return_if_fail(account != NULL); + + g_free(account->buddy_icon_path); + account->buddy_icon_path = g_strdup(path); + + schedule_accounts_save(); +} + void gaim_account_set_protocol_id(GaimAccount *account, const char *protocol_id) { @@ -1663,6 +1675,14 @@ } const char * +gaim_account_get_buddy_icon_path(const GaimAccount *account) +{ + g_return_val_if_fail(account != NULL, NULL); + + return account->buddy_icon_path; +} + +const char * gaim_account_get_protocol_id(const GaimAccount *account) { g_return_val_if_fail(account != NULL, NULL); Modified: trunk/libgaim/account.h =================================================================== --- trunk/libgaim/account.h 2006-11-30 05:56:29 UTC (rev 17853) +++ trunk/libgaim/account.h 2006-11-30 10:19:09 UTC (rev 17854) @@ -64,7 +64,8 @@ char *password; /**< The account password. */ char *user_info; /**< User information. */ - char *buddy_icon; /**< The buddy icon. */ + char *buddy_icon; /**< The buddy icon's cached path. */ + char *buddy_icon_path; /**< The buddy icon's non-cached path. */ gboolean remember_pass; /**< Remember the password. */ @@ -251,6 +252,14 @@ void gaim_account_set_buddy_icon(GaimAccount *account, const char *icon); /** + * Sets the account's buddy icon path. + * + * @param account The account. + * @param info The buddy icon non-cached path. + */ +void gaim_account_set_buddy_icon_path(GaimAccount *account, const char *path); + +/** * Sets the account's protocol ID. * * @param account The account. @@ -485,6 +494,15 @@ const char *gaim_account_get_buddy_icon(const GaimAccount *account); /** + * Gets the account's buddy icon path. + * + * @param account The account. + * + * @return The buddy icon's non-cached path. + */ +const char *gaim_account_get_buddy_icon_path(const GaimAccount *account); + +/** * Returns the account's protocol ID. * * @param account The account. Modified: trunk/libgaim/buddyicon.c =================================================================== --- trunk/libgaim/buddyicon.c 2006-11-30 05:56:29 UTC (rev 17853) +++ trunk/libgaim/buddyicon.c 2006-11-30 10:19:09 UTC (rev 17854) @@ -77,6 +77,7 @@ gaim_buddy_icon_ref(icon); gaim_buddy_icon_set_data(icon, icon_data, icon_len); + gaim_buddy_icon_set_path(icon, NULL); /* gaim_buddy_icon_set_data() makes blist.c or * conversation.c, or both, take a reference. @@ -134,6 +135,7 @@ g_free(icon->username); g_free(icon->data); + g_free(icon->path); GAIM_DBUS_UNREGISTER_POINTER(icon); g_free(icon); } @@ -339,6 +341,15 @@ gaim_buddy_icon_update(icon); } +void +gaim_buddy_icon_set_path(GaimBuddyIcon *icon, const gchar *path) +{ + g_return_if_fail(icon != NULL); + + g_free(icon->path); + icon->path = (path != NULL ? g_strdup(path) : NULL); +} + GaimAccount * gaim_buddy_icon_get_account(const GaimBuddyIcon *icon) { @@ -367,6 +378,14 @@ } const char * +gaim_buddy_icon_get_path(GaimBuddyIcon *icon) +{ + g_return_val_if_fail(icon != NULL, NULL); + + return icon->path; +} + +const char * gaim_buddy_icon_get_type(const GaimBuddyIcon *icon) { const void *data; @@ -394,7 +413,7 @@ void gaim_buddy_icons_set_for_user(GaimAccount *account, const char *username, - void *icon_data, size_t icon_len) + void *icon_data, size_t icon_len) { g_return_if_fail(account != NULL); g_return_if_fail(username != NULL); Modified: trunk/libgaim/buddyicon.h =================================================================== --- trunk/libgaim/buddyicon.h 2006-11-30 05:56:29 UTC (rev 17853) +++ trunk/libgaim/buddyicon.h 2006-11-30 10:19:09 UTC (rev 17854) @@ -38,6 +38,7 @@ void *data; /**< The buddy icon data. */ size_t len; /**< The length of the buddy icon data. */ + char *path; /**< The buddy icon's non-cached path. */ int ref_count; /**< The buddy icon reference count. */ }; @@ -62,7 +63,7 @@ * @return The buddy icon structure. */ GaimBuddyIcon *gaim_buddy_icon_new(GaimAccount *account, const char *username, - void *icon_data, size_t icon_len); + void *icon_data, size_t icon_len); /** * Destroys a buddy icon structure. @@ -142,6 +143,14 @@ void gaim_buddy_icon_set_data(GaimBuddyIcon *icon, void *data, size_t len); /** + * Sets the buddy icon's path. + * + * @param icon The buddy icon. + * @param path The buddy icon's non-cached path. + */ +void gaim_buddy_icon_set_path(GaimBuddyIcon *icon, const gchar *path); + +/** * Returns the buddy icon's account. * * @param icon The buddy icon. @@ -170,6 +179,15 @@ const guchar *gaim_buddy_icon_get_data(const GaimBuddyIcon *icon, size_t *len); /** + * Returns the buddy icon's path. + * + * @param icon The buddy icon. + * + * @preturn The buddy icon's non-cached path. + */ +const gchar *gaim_buddy_icon_get_path(GaimBuddyIcon *icon); + +/** * Returns an extension corresponding to the buddy icon's file type. * * @param icon The buddy icon. @@ -192,9 +210,11 @@ * @param username The username of the user. * @param icon_data The icon data. * @param icon_len The length of the icon data. + * + * @return The buddy icon set, or NULL if no icon was set. */ void gaim_buddy_icons_set_for_user(GaimAccount *account, const char *username, - void *icon_data, size_t icon_len); + void *icon_data, size_t icon_len); /** * Returns the buddy icon information for a user. Modified: trunk/libgaim/prpl.h =================================================================== --- trunk/libgaim/prpl.h 2006-11-30 05:56:29 UTC (rev 17853) +++ trunk/libgaim/prpl.h 2006-11-30 10:19:09 UTC (rev 17854) @@ -276,7 +276,7 @@ const char *(*normalize)(const GaimAccount *, const char *); - void (*set_buddy_icon)(GaimConnection *, const char *filename); + void (*set_buddy_icon)(GaimConnection *, const char *cached_path); void (*remove_group)(GaimConnection *gc, GaimGroup *group); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dat...@us...> - 2006-11-30 05:56:31
|
Revision: 17853 http://svn.sourceforge.net/gaim/?rev=17853&view=rev Author: datallah Date: 2006-11-29 21:56:29 -0800 (Wed, 29 Nov 2006) Log Message: ----------- Various spelling, grammar, clarity and correctness fixes for the Perl HOWTO. Modified Paths: -------------- trunk/doc/PERL-HOWTO.dox Modified: trunk/doc/PERL-HOWTO.dox =================================================================== --- trunk/doc/PERL-HOWTO.dox 2006-11-30 05:54:37 UTC (rev 17852) +++ trunk/doc/PERL-HOWTO.dox 2006-11-30 05:56:29 UTC (rev 17853) @@ -1,13 +1,13 @@ /** @page perl-howto Perl Scripting HOWTO @section Introduction -Gaim Perl Plugins are setup very similarly to their C counterparts. Most of the API calls are implemented and are divided into pacakges. There are some significant differences between the Perl and C API. Much like the C API, the best place to seek guidances is the source located in the plugins/perl/common directory. The tutorial that follows will be example based and attempt to touch on the salient features of the embedded perl interpreter. It is also important to note that some of the C API is missing in Gaim's perl API. +Gaim Perl Plugins are set up very similarly to their C counterparts. Most of the API calls are implemented and are divided into packages. There are some significant differences between the Perl and C API. Much like the C API, the best place to seek guidance is the source, which is located in the *.xs files in the [libgaim|gtk]/plugins/perl/common directories. The tutorial that follows will be example based and attempt to touch on some of the notable features of the embedded perl interpreter. It is also important to note that some of the C API is missing in Gaim's perl API. -It is possible to get Gtk2-Perl to work with Gaim's perl API, however you must not load the module with @c use but with @c require. If you are uninterested in using Gtk with your perl plugins than this still has bearing on you if you would like to use certain perl modules that are dynamically loaded. By always using @c require instead of @c use the problem is avoided. +It is possible to get Gtk2-Perl to work with Gaim's Perl API, however you must not load the module with @c use, but rather with @c require. Keep this in mind if you would like to use other perl modules that are dynamically loaded. You can avoid the problem by always using @c require instead of @c use. @section first-script Writing your first script -Let us start with a simple example of a Gaim perl plugin. The following code sample is a complete plugin that can be copied and used as is. +Let us start with a simple example of a Gaim perl plugin. The following code sample is a complete plugin that can be copied and used as-is. @code use Gaim; @@ -40,34 +40,32 @@ } @endcode -It is necessary to load the libgaim perl package with the line @code use Gaim; @endcode which will make all the libgaim perl API available to the script. The @c \%PLUGIN_INFO has contains all the information that will be displayed in the Plugin frame of the Preferences dialog. In addition to information needed to describe the plugin to the user, information about how the plugin is to be handled is present. The keys @c load and @c unload specify and action to take when the plugin is loaded and when it is unloaded from the Preferences dialog respectively. There are other key values that may be present in the @c \%PLUGIN_INFO hash that will be covered in the following sections. +It is necessary to load the libgaim perl package with the @code use Gaim; @endcode line; this makes all the libgaim perl API available to the script. The @c \%PLUGIN_INFO hash contains all the information that will be displayed in the Plugin frame of the Preferences dialog, it also contains information about how the plugin is to be handled. The @c load and @c unload keys specify subroutines to be called when the plugin is loaded and unloaded. There are other key values that may be present in the @c \%PLUGIN_INFO hash; some of those will be covered in the following sections. -The Perl subroutine @c plugin_init is executed when the plugin is probed by the plugin subsystem. What this means is as soon as Gaim is started, this subroutine is run once, regardless of whether the plugin is loaded or not. The other two subroutines present are those defined by the @c \%PLUGIN_INFO hash and take the plugin handle as an argument. When the plugin is loaded and subsequently unloaded it will print a message to the debug window using the @c Gaim::Debug::info() Gaim perl API call. +The Perl subroutine @c plugin_init is executed when the plugin is probed by the plugin subsystem. What this means is that as soon as gaim is started, this subroutine is run once, regardless of whether or not the plugin is actually loaded. The other two subroutines present are the @c load and @c unload routines specified in the @c \%PLUGIN_INFO hash and will receive the plugin handle as an argument. When the plugin is loaded and subsequently unloaded, it will print a message to the debug window using the @c Gaim::Debug::info() Gaim perl API call. -The last step is to save the script with a .pl file extention in your ~/.gaim/plugins directory. After restarting gaim the plugin "Perl Test Plugin" should now appear under "Tools -> Plugins". To view the messages make sure you run Gaim from the console with the '-d' flag or open the Debug Window from inside Gaim under "Help". When you enable the checkbox next the plugin you should see a message appear in the Debug Window (or console) and when you disable the checkbox you should see another message appear. You have now created the framework that will allow you to create almost any kind of Gaim plugin you can imagine. +In order to use this simple plugin, save the script text in a file with a @c .pl extension in your ~/.gaim/plugins directory. After restarting gaim, you should see the plugin ("Perl Test Plugin") listed in the plugin list under "Tools -> Plugins". To view the debug output, make sure you run Gaim from the console with the '-d' flag or open the Debug Window which is available in the "Help" menu. When you check the checkbox next the plugin, you should see a message appear in the Debug Window (or console); similarly, when you uncheck the checkbox you should see another message appear. You have now created a framework that will allow you to create almost any kind of Gaim plugin you can imagine. @section account-api Account and Account Option Functions -The Account API is in the @c Gaim::Account:: and @c Gaim::Accounts:: packages -and both are nearly identical to their C counterparts @c gaim_account_ and @c -gaim_accounts_. The Account Option API is in the package @c -Gaim::Account::Option and is identical to its C implementation @c -gaim_account_option. +The Account API is in the @c Gaim::Account:: and @c Gaim::Accounts:: packages; +both are nearly identical to their C counterparts, @c gaim_account_ and @c +gaim_accounts_. The Account Option API is in the @c Gaim::Account::Option +package and is identical to the C implementation, @c gaim_account_option. -The Account* APIs allow for scripts to create, remove, and edit accounts of the -type GaimAccount. (Note: Gaim types have no real meaning in perl scripts other -than the types of the arguments of the perl subroutines need to be of the -expected type.) This section will not go into detail about the @c -Gaim::Account::Option package for its use in building protocol plugins which -are outside the scope of this document. However, most of the API calls for the -@c Gaim::Account::Option package should function as expected so if there is a -need to access any of the Account Options the function calls necessary are -avaialbe in the Gaim perl API. +The Account* APIs allow scripts to create, remove, and edit accounts. An +account will have the Perl type of "GaimAccount". (Note: Gaim types have no real +meaning in perl scripts, other than that the types passed to perl subroutines +need to be correct.) This section will not go into detail about the @c +Gaim::Account::Option package since its use is mainly in building protocol +plugins, which are outside the scope of this document. However, the API for the +@c Gaim::Account::Option package should function as expected, should you need to +use it. -To reduce redundant code the following code examples are going to use the -template shown in the previous section. To highlight some of the more useful -features of the Account API we will be replacing the @c plugin_load perl -subroutine. For testing purposes we will display output on the command line by +To reduce redundant code, the following code examples will use the simple plugin +from the previous section as a template. To highlight some of the more useful +features of the Account API, we will be replacing the @c plugin_load perl +subroutine. For testing purposes, we will display output on the command line by using perl @c print commands. @code @@ -119,7 +117,7 @@ print "Failed!\n"; } - # It follows that to connect a user you mest set the account status to + # It follows that to connect a user you must set the account status to # "available" similarly we can disconnect a user by setting the account # status to "offline" @@ -132,17 +130,20 @@ } @endcode -For the most part the code listed above is explained by the comments, however -there are a few other points to make. The variables above are all specialized -Perl types that contain pointers to the actual Gaim types. They can be -reasigned at will just like any other variable in Perl. The only way to edit -the values of a Gaim type from within perl are through accessor methods such as -@c Gaim::Account::get_username(). For arguments that you would make @c NULL in -C should be set to @c undef in Perl. +The above code is mostly explained in the comments, however there are a few +notable points to make. The variables above are all specialized Perl types that +contain pointers to the actual Gaim types. They can be reassigned at will, just +like any other variable in Perl. The only way to edit the internal values of a +Gaim type from within perl is to use the accessor methods, e.g. +@c Gaim::Account::get_username(). If you would like to assign a C @c NULL value, +simply use @c undef. @section buddylist-api Buddylist, Group and Chat API -The BuddyList, Group and Chat APIs are very similar and whatever is shown for the @c Gaim::BuddyList API should carry over to @c Gaim::BuddyList::Chat and @c Gaim::BuddyList::Group. Note that there is a @c Gaim::Find package that was created to keep the naming consistent with how these functions are named in the C API. +The BuddyList, Group and Chat APIs are very similar and whatever is shown for +the @c Gaim::BuddyList API should carry over to @c Gaim::BuddyList::Chat and +@c Gaim::BuddyList::Group. Note that a @c Gaim::Find package was created to +keep the naming consistent with the C API. @code sub plugin_load { @@ -187,7 +188,7 @@ Gaim::Debug::info("testplugin", "Testing: Gaim::BuddyList::add_buddy...\n"); Gaim::BuddyList::add_buddy($buddy, undef, $group, $group); - # The example that follows gives an indiction of how an API call that returns a list is handled. + # The example that follows gives an indication of how an API call that returns a list is handled. # In this case the buddies of the account found earlier are retrieved and put in an array '@buddy_array' # Further down an accessor method is used, 'get_name()' -- see source for details on the full set of methods Gaim::Debug::info("testplugin", "Testing: Gaim::Find::buddies...\n"); @@ -201,21 +202,27 @@ } @endcode -The BuddyList API allows for plugins to edit buddies in the list, find the buddies on a given account, set alias, and manipulate the structure as needed. It is also contains the methods for accessing @c Gaim::BuddyList::Group and @c Gaim::BuddyList::Chat types. +The BuddyList API allows plugins to edit buddies in the list, find the buddies +for a given account, assign aliases, and further manipulate the structure +as needed. It is also contains methods for accessing @c Gaim::BuddyList::Group +and @c Gaim::BuddyList::Chat types. @section conn-api Connection API -The @c Gaim::Connection API is one of the many packages that will not be covered in depth in this tutorial. They are more useful to protocol plugin developers. However, the entire @c gaim_connection_ API has corresponding, functioning perl subroutines. +The @c Gaim::Connection API is one of the many packages that will not be covered +in-depth in this tutorial. It is most useful to protocol plugin developers. +However, the entire @c gaim_connection_ API has corresponding, functioning perl subroutines. @section conv-api Conversation API -The Gaim perl API for @c gaim_conversation_ and @c gaim_conv_window_ allow -plugins to interact with open conversations, create new conversations, and +The Gaim perl APIs for @c gaim_conversation_ and @c gaim_conv_window_ allow +plugins to interact with existing conversations, create new conversations, and modify conversations at will. In the example script, a new window is created, displayed and a new conversation instant message is created. The following -example again replaces the @c plugin_load subroutine. The -@c Gaim::Conversation::Chat package handles the @c gaim_conv_chat_ portion of -the API very similarly to the examples that follow. +example again replaces the @c plugin_load subroutine in the simple plugin +template. The @c Gaim::Conversation::Chat package handles the +@c gaim_conv_chat_ portion of the API very similarly to how the +Gaim::Conversation::IM package is used in the examples that follow. Notice that the interaction with the conversation window is in the @c Gaim::GtkUI package as it is UI-specific code interacting with gtkgaim and not libgaim. @@ -290,9 +297,15 @@ @section plugin-pref-api Plugin Preference and Gtk Preference API -The plugin preference API allows the plugin to display options in a preference pane that the user can change to manipulate the behaviour of the particular perl plugin. The method used for creating the pane in C does not allow a direct mapping into perl. Therefore perl plugin writers must be aware that there will be significant differences in how they create plugin preference panes. +The plugin preference API allows plugins to display options for manipulating the +plugin's behavior in a popup window. The method used for creating the pane in +native C plugins does not allow a direct mapping into perl. Therefore, perl +plugin writers must be aware that there will be significant differences in how +they create plugin preference panes. -To first create a standard plugin preference tab we need to add some key/value pairs to the @c \%PLUGIN_INFO hash. The first line contains the perl subroutine that must be provided and will return a @c Gaim::Pref::Frame. +To first create a standard plugin preference tab, we need specify the +@c prefs_info key/value pair in the @c \%PLUGIN_INFO hash. This specifies the +name of the perl subroutine that will build and return a @c Gaim::Pref::Frame. @code %PLUGIN_INFO = { @@ -301,7 +314,10 @@ }; @endcode -The perl subroutine @c prefs_info_cb will be called to create the tab for the perl plugin in the Preferences dialog. An example of this function will explain the details of creating a preference frame. However, it is necessary to first create the preferences from @c plugin_load as follows. +The perl subroutine @c prefs_info_cb will be called to create the preferences +popup for the perl plugin. The following example will demonstrate creating a +preference frame. It is necessary to first initialize the preferences to be used +in the @c plugin_load subroutine, as follows. @code sub plugin_load { @@ -317,7 +333,8 @@ } @endcode -Now we can add these preferences from inside our function specified in @c \%PLUGIN_INFO . +Now we can provide an UI for manipulating these preferences in our @prefs_info +function. @code sub prefs_info_cb { @@ -333,7 +350,7 @@ "/plugins/core/perl_test/bool", "Boolean Preference"); $frame->add($ppref); - # Create a set of choices. To do so we must set the type to 1 which is + # Create a set of choices. To do so, we must set the type to 1 which is # the numerical equivalent of the GaimPrefType for choice. $ppref = Gaim::PluginPref->new_with_name_and_label( "/plugins/core/perl_test/choice_str", "Choice Preference"); @@ -411,7 +428,11 @@ @section request-api Request Dialog Box API -The @c Gaim::Request package allows for plugins to have interactive dialog boxes without the need for creating them in Gtk creating a seperation between the user interfaace and the plugin. The portion of the Request API available to perl scripts is listed below followed by an example illustrating their use. +The @c Gaim::Request package allows plugins to have interactive dialog boxes +without the need to directly interact with the UI (e.g. GTK+). This allows core +(libgaim) plugins to create a UI that can be displayed on whichever UI frontend +is being used. The portion of the Request API available to perl scripts is +listed below, followed by an example illustrating its use. These arguments are the same for each of the three request types: @arg @em handle - The plugin handle. @@ -426,7 +447,7 @@ @arg @em multiline - Boolean where true indicates multiple line input boxes are allowed. @arg @em masked - Boolean indicating if the user can edit the text. @arg @em hint - See source for more information - can be left blank. - @arg @em filename - String defualt file name value. + @arg @em filename - String default file name value. @arg @em savedialog - Boolean where true indicates use as a save file dialog and false indicates an open file dialog. @code @@ -440,12 +461,13 @@ Gaim::Request::fields(handle, title, primary, secondary, fields, ok_text, ok_cb, cancel_text, cancel_cb); @endcode -What follows is an example of a @c Gaim::Request::fields() dialog box with two callbacks for an OK button and a Cancel Button. +The following is an example of a @c Gaim::Request::fields() dialog box with a +callback for the OK button and another for the Cancel Button. @code sub ok_cb_test{ # The $fields is passed to the callback function when the button is clicked. - # To get the values they must be extracted from $fields by name. + # To access a specific field, it must be extracted from $fields by name. $fields = shift; $account = Gaim::Request::Fields::get_account($fields, "acct_test"); $int = Gaim::Request::Fields::get_integer($fields, "int_test"); @@ -453,19 +475,19 @@ } sub cancel_cb_test{ - # Cancel does nothing but is symmetric to the ok_cb_test + # Cancel does nothing but is equivalent to the ok_cb_test } sub plugin_load { my $plugin = shift; - # Create a group to pool together mutltiple fields. + # Create a group to pool together multiple fields. $group = Gaim::Request::Field::Group::new("Group Name"); - # Each fields is created with Gaim::Request::*_new(), is made viewable with Gaim::Request::field_*_set_show_all() + # Each field is created with Gaim::Request::*_new(), is made viewable with Gaim::Request::field_*_set_show_all() # and is then added to the group with Gaim::Request::field_group_add_field() - # Add an account drop down list showing all active accounts + # Add an account combobox containing all active accounts $field = Gaim::Request::Field::account_new("acct_test", "Account Text", undef); Gaim::Request::Field::account_set_show_all($field, 0); Gaim::Request::Field::Group::add_field($group, $field); @@ -500,9 +522,20 @@ @section timeout-cb Misc: Plugin Actions, Timeouts and Callbacks -This section of the manual covers some of the more important features that can be added to Gaim perl Plugins. Plugin actions are callback functions that are accessible to the user from the Gaim main window under "Tools -> [Plugin Name]". Timeouts allow a plugin to exectue a perl subroutine after a given period of time. Note that timeouts only occur once, so if the timeout must occur periodically just add a new timeout at the end of the timeout callback function. Callbacks are functions that are called when an event occurs such as a buddy signing-on or a message being received. These three tools will be discussed in the following three examples. +This section of the manual covers some of the important features that can be +added to Gaim perl Plugins. Plugin actions are callback functions that are +accessible to the user from the Buddy List window under "Tools -> [Plugin Name]". +Timeouts allow a plugin to execute a perl subroutine after a given period of time. +Note that timeouts only occur once, so if the timeout must occur periodically, +the timeout needs to be re-added at the end of the timeout callback function. +Callbacks are functions that are called when an event occurs (such as a buddy +signing-on, or a message being received). The following three examples will +demonstrate the usage of these features. -Plugin actions require the @c \%PLUGIN_INFO hash to have a key/value pair added and a callback perl subroutine defined to list the available actions, as well as one callback subroutine for each action. Also, a @c \%plugin_actions hash needs to be defined relating the action names returned by the callback to the appropriate callback subroutines for each action. +Plugin actions require the @c \%PLUGIN_INFO hash to have a key/value pair added, +specifying a perl subroutine which will list the available actions; each action +listed must have a definition, including a reference to a callback subroutine, +added to the @c \%plugin_actions hash. @code %PLUGIN_INFO = { @@ -530,7 +563,7 @@ } @endcode -Timeouts allow a perl subroutine to be exectued after a specified time. They only occur once, so as stated earlier the timeout must be reregistered after every time it is called. +Timeouts allow a perl subroutine to be executed after a specified time. They only occur once, so, as stated earlier, the timeout must be re-registered after every time it is called. @code sub timeout_cb { @@ -549,7 +582,8 @@ } @endcode -Callbacks are handled by creating a perl subroutine to serve as the callback and then attaching the callback to a signal. To use callbacks it is necessary to first obtain the plugin handle with the @c Gaim::Plugin::get_handle() subroutine to pass as an argument for the callback. +Callbacks are handled by creating a perl subroutine to serve as the callback and +then attaching the callback to a signal. @code sub signal_cb { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-11-30 05:54:38
|
Revision: 17852 http://svn.sourceforge.net/gaim/?rev=17852&view=rev Author: sadrul Date: 2006-11-29 21:54:37 -0800 (Wed, 29 Nov 2006) Log Message: ----------- (00:55:14) rekkanoryo: sadrul: don't forget to update the man page :-P Well, :-P to JOO Modified Paths: -------------- trunk/doc/gaim-text.1.in Modified: trunk/doc/gaim-text.1.in =================================================================== --- trunk/doc/gaim-text.1.in 2006-11-30 05:52:21 UTC (rev 17851) +++ trunk/doc/gaim-text.1.in 2006-11-30 05:54:37 UTC (rev 17852) @@ -126,6 +126,10 @@ .br wm = /usr/local/lib/gaim/s.so .br +# Remember window-positions based on the titles (on by default) +.br +remember_position = 1 +.br .br [colors] This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-11-30 05:52:21
|
Revision: 17851 http://svn.sourceforge.net/gaim/?rev=17851&view=rev Author: sadrul Date: 2006-11-29 21:52:21 -0800 (Wed, 29 Nov 2006) Log Message: ----------- Remember the positions of the windows depending on the titles. Moving all the chat windows to places was getting really really annoying. If you don't want it, turn it off by setting "remember_position" to 0 in .gntrc Modified Paths: -------------- trunk/console/libgnt/gntstyle.c trunk/console/libgnt/gntstyle.h trunk/console/libgnt/gntwm.c trunk/console/libgnt/gntwm.h trunk/console/libgnt/wms/s.c Modified: trunk/console/libgnt/gntstyle.c =================================================================== --- trunk/console/libgnt/gntstyle.c 2006-11-30 02:01:49 UTC (rev 17850) +++ trunk/console/libgnt/gntstyle.c 2006-11-30 05:52:21 UTC (rev 17851) @@ -282,6 +282,7 @@ {"customcolor", GNT_STYLE_COLOR}, {"mouse", GNT_STYLE_MOUSE}, {"wm", GNT_STYLE_WM}, + {"remember_position", GNT_STYLE_REMPOS}, {NULL, 0}}; if (error) Modified: trunk/console/libgnt/gntstyle.h =================================================================== --- trunk/console/libgnt/gntstyle.h 2006-11-30 02:01:49 UTC (rev 17850) +++ trunk/console/libgnt/gntstyle.h 2006-11-30 05:52:21 UTC (rev 17851) @@ -6,6 +6,7 @@ GNT_STYLE_COLOR = 1, GNT_STYLE_MOUSE = 2, GNT_STYLE_WM = 3, + GNT_STYLE_REMPOS = 4, GNT_STYLES } GntStyle; Modified: trunk/console/libgnt/gntwm.c =================================================================== --- trunk/console/libgnt/gntwm.c 2006-11-30 02:01:49 UTC (rev 17850) +++ trunk/console/libgnt/gntwm.c 2006-11-30 05:52:21 UTC (rev 17851) @@ -42,6 +42,9 @@ static void gnt_wm_give_focus(GntWM *wm, GntWidget *widget); static void update_window_in_list(GntWM *wm, GntWidget *wid); +static gboolean write_already(gpointer data); +static int write_timeout; + static GList * g_list_bring_to_front(GList *list, gpointer data) { @@ -124,32 +127,106 @@ doupdate(); return TRUE; } + +static gboolean +sanitize_position(GntWidget *widget, int *x, int *y) +{ + int X_MAX = getmaxx(stdscr); + int Y_MAX = getmaxy(stdscr) - 1; + int w, h; + int nx, ny; + gboolean changed = FALSE; + + gnt_widget_get_size(widget, &w, &h); + if (x) { + if (*x + w > X_MAX) { + nx = MAX(0, X_MAX - w); + if (nx != *x) { + *x = nx; + changed = TRUE; + } + } + } + if (y) { + if (*y + h > Y_MAX) { + ny = MAX(0, Y_MAX - h); + if (ny != *y) { + *y = ny; + changed = TRUE; + } + } + } + return changed; +} + static void refresh_node(GntWidget *widget, GntNode *node, gpointer null) { int x, y, w, h; - int nw, nh, nx, ny; + int nw, nh; int X_MAX = getmaxx(stdscr); int Y_MAX = getmaxy(stdscr) - 1; gnt_widget_get_position(widget, &x, &y); gnt_widget_get_size(widget, &w, &h); - nx = x; ny = y; - if (x + w >= X_MAX) - nx = MAX(0, X_MAX - w); - if (y + h >= Y_MAX) - ny = MAX(0, Y_MAX - h); - if (x != nx || y != ny) - gnt_screen_move_widget(widget, nx, ny); + if (sanitize_position(widget, &x, &y)) + gnt_screen_move_widget(widget, x, y); nw = MIN(w, X_MAX); nh = MIN(h, Y_MAX); if (nw != w || nh != h) gnt_screen_resize_widget(widget, nw, nh); } + static void +read_window_positions(GntWM *wm) +{ +#if GLIB_CHECK_VERSION(2,6,0) + GKeyFile *gfile = g_key_file_new(); + char *filename = g_build_filename(g_get_home_dir(), ".gntpositions", NULL); + GError *error = NULL; + char **keys; + int nk; + + if (!g_key_file_load_from_file(gfile, filename, G_KEY_FILE_NONE, &error)) { + g_printerr("GntWM: %s\n", error->message); + g_error_free(error); + g_free(filename); + return; + } + + keys = g_key_file_get_keys(gfile, "positions", &nk, &error); + if (error) { + g_printerr("GntWM: %s\n", error->message); + g_error_free(error); + error = NULL; + } else { + while (nk--) { + char *title = keys[nk]; + int l; + char **coords = g_key_file_get_string_list(gfile, "positions", title, &l, NULL); + if (l == 2) { + int x = atoi(coords[0]); + int y = atoi(coords[1]); + GntPosition *p = g_new0(GntPosition, 1); + p->x = x; + p->y = y; + g_hash_table_replace(wm->positions, g_strdup(title + 1), p); + } else { + g_printerr("GntWM: Invalid number of arguments for positioing a window.\n"); + } + g_strfreev(coords); + } + g_strfreev(keys); + } + + g_free(filename); +#endif +} + +static void gnt_wm_init(GTypeInstance *instance, gpointer class) { GntWM *wm = GNT_WM(instance); @@ -159,6 +236,9 @@ wm->windows = NULL; wm->actions = NULL; wm->nodes = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, free_node); + wm->positions = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); + if (gnt_style_get_bool(GNT_STYLE_REMPOS, TRUE)) + read_window_positions(wm); } static void @@ -645,6 +725,8 @@ wm_quit(GntBindable *bindable, GList *list) { GntWM *wm = GNT_WM(bindable); + if (write_timeout) + write_already(wm); g_main_loop_quit(wm->loop); return TRUE; } @@ -905,6 +987,16 @@ return; } + if (GNT_IS_BOX(widget)) { + const char *title = GNT_BOX(widget)->title; + GntPosition *p = NULL; + if (title && (p = g_hash_table_lookup(wm->positions, title)) != NULL) { + sanitize_position(widget, &p->x, &p->y); + gnt_widget_set_position(widget, p->x, p->y); + mvwin(widget->window, p->y, p->x); + } + } + g_signal_emit(wm, signals[SIG_NEW_WIN], 0, widget); g_signal_emit(wm, signals[SIG_DECORATE_WIN], 0, widget); @@ -1088,6 +1180,46 @@ update_screen(wm); } +static void +write_gdi(gpointer key, gpointer value, gpointer data) +{ + GntPosition *p = value; + fprintf(data, ".%s = %d;%d\n", key, p->x, p->y); +} + +static gboolean +write_already(gpointer data) +{ + GntWM *wm = data; + FILE *file; + char *filename; + + filename = g_build_filename(g_get_home_dir(), ".gntpositions", NULL); + + file = fopen(filename, "wb"); + if (file == NULL) { + g_printerr("GntWM: error opening file to save positions\n"); + } else { + fprintf(file, "[positions]\n"); + g_hash_table_foreach(wm->positions, write_gdi, file); + fclose(file); + } + + g_free(filename); + g_source_remove(write_timeout); + write_timeout = 0; + return FALSE; +} + +static void +write_positions_to_file(GntWM *wm) +{ + if (write_timeout) { + g_source_remove(write_timeout); + } + write_timeout = g_timeout_add(10000, write_already, wm); +} + void gnt_wm_move_window(GntWM *wm, GntWidget *widget, int x, int y) { gboolean ret = TRUE; @@ -1107,6 +1239,17 @@ move_panel(node->panel, y, x); g_signal_emit(wm, signals[SIG_MOVED], 0, node); + if (gnt_style_get_bool(GNT_STYLE_REMPOS, TRUE) && GNT_IS_BOX(widget)) { + const char *title = GNT_BOX(widget)->title; + if (title) { + GntPosition *p = g_new0(GntPosition, 1); + GntWidget *wid = node->me; + p->x = wid->priv.x; + p->y = wid->priv.y; + g_hash_table_replace(wm->positions, g_strdup(title), p); + write_positions_to_file(wm); + } + } update_screen(wm); } Modified: trunk/console/libgnt/gntwm.h =================================================================== --- trunk/console/libgnt/gntwm.h 2006-11-30 02:01:49 UTC (rev 17850) +++ trunk/console/libgnt/gntwm.h 2006-11-30 05:52:21 UTC (rev 17851) @@ -27,6 +27,12 @@ typedef struct _GntWM GntWM; +typedef struct _GnPosition +{ + int x; + int y; +} GntPosition; + /** * An application can register actions which will show up in a 'start-menu' like popup */ @@ -73,6 +79,8 @@ GntKeyPressMode mode; + GHashTable *positions; + void *res1; void *res2; void *res3; Modified: trunk/console/libgnt/wms/s.c =================================================================== --- trunk/console/libgnt/wms/s.c 2006-11-30 02:01:49 UTC (rev 17850) +++ trunk/console/libgnt/wms/s.c 2006-11-30 05:52:21 UTC (rev 17851) @@ -97,19 +97,16 @@ mvwin(win->window, y, x); gnt_widget_set_size(win, -1, h + 2); /* XXX: Why is the +2 needed here? -- sadrul */ - } else if (name && strcmp(name, "conversation-window") == 0) { - /* Put the conversation windows to the far-right */ - x = maxx - w; - y = 0; - gnt_widget_set_position(win, x, y); - mvwin(win->window, y, x); } else if (!GNT_WIDGET_IS_FLAG_SET(win, GNT_WIDGET_TRANSIENT)) { - /* In the middle of the screen */ - x = (maxx - w) / 2; - y = (maxy - h) / 2; + const char *title = GNT_BOX(win)->title; + if (title == NULL || !g_hash_table_lookup(wm->positions, title)) { + /* In the middle of the screen */ + x = (maxx - w) / 2; + y = (maxy - h) / 2; - gnt_widget_set_position(win, x, y); - mvwin(win->window, y, x); + gnt_widget_set_position(win, x, y); + mvwin(win->window, y, x); + } } } org_new_window(wm, win); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-11-30 02:01:50
|
Revision: 17850 http://svn.sourceforge.net/gaim/?rev=17850&view=rev Author: sadrul Date: 2006-11-29 18:01:49 -0800 (Wed, 29 Nov 2006) Log Message: ----------- If you have arrows in the conversation window, and want to close the first visible tab by middle clicking, then you end up closing the wrong first tab. This also fixes similar issues with tab-draggings. Modified Paths: -------------- trunk/gtk/gtkconv.c Modified: trunk/gtk/gtkconv.c =================================================================== --- trunk/gtk/gtkconv.c 2006-11-29 23:46:55 UTC (rev 17849) +++ trunk/gtk/gtkconv.c 2006-11-30 02:01:49 UTC (rev 17850) @@ -6121,6 +6121,10 @@ page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), i); tab = gtk_notebook_get_tab_label(GTK_NOTEBOOK(notebook), page); + /* Make sure the tab is not hidden beyond an arrow */ + if (!GTK_WIDGET_DRAWABLE(tab)) + continue; + if (horiz) { if (x_rel >= tab->allocation.x - GAIM_HIG_BOX_SPACE && x_rel <= tab->allocation.x + tab->allocation.width + GAIM_HIG_BOX_SPACE) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dat...@us...> - 2006-11-29 23:47:08
|
Revision: 17849 http://svn.sourceforge.net/gaim/?rev=17849&view=rev Author: datallah Date: 2006-11-29 15:46:55 -0800 (Wed, 29 Nov 2006) Log Message: ----------- Update the Perl HOWTO to include working samples and various other fixes. In order to actually do this, I had to also make some fixes to the perl bindings. Modified Paths: -------------- trunk/doc/PERL-HOWTO.dox trunk/gtk/plugins/perl/common/GtkConv.xs trunk/libgaim/plugins/perl/common/Account.xs trunk/libgaim/plugins/perl/common/PluginPref.xs Modified: trunk/doc/PERL-HOWTO.dox =================================================================== --- trunk/doc/PERL-HOWTO.dox 2006-11-29 22:43:54 UTC (rev 17848) +++ trunk/doc/PERL-HOWTO.dox 2006-11-29 23:46:55 UTC (rev 17849) @@ -1,9 +1,9 @@ /** @page perl-howto Perl Scripting HOWTO @section Introduction -Gaim Perl Plugins are setup very similarly to their C counterparts. Most of the API calls are implemented and are divided into pacakges. There are some significant differences between the Perl and C API. Much like the C API, the best place to seek guidances is the source located in the plugins/perl/common directory. The tutorial that follows will be example based and attempt to touch on the salient features of the embedded perl interpreter. It is also important to note that some of the C API is missing in Gaim's perl API. +Gaim Perl Plugins are setup very similarly to their C counterparts. Most of the API calls are implemented and are divided into pacakges. There are some significant differences between the Perl and C API. Much like the C API, the best place to seek guidances is the source located in the plugins/perl/common directory. The tutorial that follows will be example based and attempt to touch on the salient features of the embedded perl interpreter. It is also important to note that some of the C API is missing in Gaim's perl API. -It is possible to get Gtk2-Perl to work with Gaim's perl API, however you must not load the module with @c use but with @c require. If you are uninterested in using Gtk with your perl plugins than this still has bearing on you if you would like to use certain perl modules that are dynamically loaded. By always using @c require instead of @c use the problem is avoided. +It is possible to get Gtk2-Perl to work with Gaim's perl API, however you must not load the module with @c use but with @c require. If you are uninterested in using Gtk with your perl plugins than this still has bearing on you if you would like to use certain perl modules that are dynamically loaded. By always using @c require instead of @c use the problem is avoided. @section first-script Writing your first script @@ -13,38 +13,38 @@ use Gaim; %PLUGIN_INFO = ( - perl_api_version => 2, - name => "Perl Test Plugin", - version => "0.1", - summary => "Test plugin for the Perl interpreter.", - description => "Your description here", - author => "John H. Kelm <johnhkelm\@gmail.com", - url => "http://gaim.sourceforge.net/", + perl_api_version => 2, + name => "Perl Test Plugin", + version => "0.1", + summary => "Test plugin for the Perl interpreter.", + description => "Your description here", + author => "John H. Kelm <johnhkelm\@gmail.com", + url => "http://gaim.sourceforge.net/", - load => "plugin_load", - unload => "plugin_unload" + load => "plugin_load", + unload => "plugin_unload" ); sub plugin_init { - return %PLUGIN_INFO; + return %PLUGIN_INFO; } sub plugin_load { - my $plugin = shift; - Gaim::debug_info("plugin_load()", "Test Plugin Loaded."); + my $plugin = shift; + Gaim::Debug::info("testplugin", "plugin_load() - Test Plugin Loaded.\n"); } sub plugin_unload { - my $plugin = shift; - Gaim::debug_info("plugin_unload()", "Test Plugin Unloaded."); + my $plugin = shift; + Gaim::Debug::info("testplugin", "plugin_unload() - Test Plugin Unloaded.\n"); } @endcode -It is necessary to load the Gaim perl package with the line @code use Gaim; @endcode which will make all the Gaim perl API available to the script. The @c \%PLUGIN_INFO has contains all the information that will be displayed in the Plugin frame of the Preferences dialog. In addition to information needed to describe the plugin to the user, information about how the plugin is to be handled is present. The keys @c load and @c unload specify and action to take when the plugin is loaded and when it is unloaded from the Preferences dialog respectively. There are other key values that may be present in the @c \%PLUGIN_INFO hash that will be covered in the following sections. +It is necessary to load the libgaim perl package with the line @code use Gaim; @endcode which will make all the libgaim perl API available to the script. The @c \%PLUGIN_INFO has contains all the information that will be displayed in the Plugin frame of the Preferences dialog. In addition to information needed to describe the plugin to the user, information about how the plugin is to be handled is present. The keys @c load and @c unload specify and action to take when the plugin is loaded and when it is unloaded from the Preferences dialog respectively. There are other key values that may be present in the @c \%PLUGIN_INFO hash that will be covered in the following sections. -The Perl subroutine @c plugin_init is executed when the plugin is probed by the plugin subsystem. What this means is as soon as Gaim is started, this subroutine is run once, regardless of whether the plugin is loaded or not. The other two subroutines present are those defined by the @c \%PLUGIN_INFO hash and take the plugin handle as an argument. When the plugin is loaded and subsequently unloaded it will print a message to the debug window using the @c Gaim::debug_info() Gaim perl API call. +The Perl subroutine @c plugin_init is executed when the plugin is probed by the plugin subsystem. What this means is as soon as Gaim is started, this subroutine is run once, regardless of whether the plugin is loaded or not. The other two subroutines present are those defined by the @c \%PLUGIN_INFO hash and take the plugin handle as an argument. When the plugin is loaded and subsequently unloaded it will print a message to the debug window using the @c Gaim::Debug::info() Gaim perl API call. -The last step is to save the script with a .pl file extention in your ~/.gaim/plugins directory. After restarting gaim the plugin "Perl Test Plugin" should now appear under "Tools -> Preferences -> Plugins". To view the messages make sure you run Gaim from the console with the '-d' flag or open the Debug Window from inside Gaim under "Help". When you enable the checkbox next the plugin you should see a message appear in the Debug Window (or console) and when you disable the checkbox you should see another message appear. You have now created the framework that will allow you to create almost any kind of Gaim plugin you can imagine. +The last step is to save the script with a .pl file extention in your ~/.gaim/plugins directory. After restarting gaim the plugin "Perl Test Plugin" should now appear under "Tools -> Plugins". To view the messages make sure you run Gaim from the console with the '-d' flag or open the Debug Window from inside Gaim under "Help". When you enable the checkbox next the plugin you should see a message appear in the Debug Window (or console) and when you disable the checkbox you should see another message appear. You have now created the framework that will allow you to create almost any kind of Gaim plugin you can imagine. @section account-api Account and Account Option Functions @@ -76,23 +76,24 @@ # Testing was done using Oscar, but this should work regardless of the protocol chosen my $protocol = "prpl-oscar"; + my $account_name = "test"; # Create a new Account print "Testing: Gaim::Account::new()... "; - $account = Gaim::Account->new($TEST_NAME, $PROTOCOL_ID); + $account = Gaim::Account->new($account_name, $protocol); if ($account) { print "ok.\n"; } else { print "fail.\n"; } # Add a new Account - print "Testing: Gaim::Account::add()..."; - Gaim::Accounts::add($account); - print "pending find...\n"; + print "Testing: Gaim::Account::add()..."; + Gaim::Accounts::add($account); + print "pending find...\n"; # Find the account we just added to verify its existence - print "Testing: Gaim::Accounts::find()..."; - $account = Gaim::Accounts::find("TEST_NAME", $protocol); - if ($account) { print "ok.\n"; } else { print "fail.\n"; } + print "Testing: Gaim::Accounts::find()..."; + $account = Gaim::Accounts::find($account_name, $protocol); + if ($account) { print "ok.\n"; } else { print "fail.\n"; } - # Return the username + # Return the username print "Testing: Gaim::Account::get_username()... "; $user_name = $account->get_username(); if ($user_name) { @@ -122,10 +123,10 @@ # "available" similarly we can disconnect a user by setting the account # status to "offline" - $account = Gaim::Accounts::find("TEST_NAME", $protocol); - print "Testing: Gaim::Accounts::connect()...pending...\n"; + print "Testing: Gaim::Accounts::connect()...pending...\n"; $account->set_status("available", TRUE); + $account->set_enabled(Gaim::Core::get_ui(), TRUE); $account->connect(); } @@ -141,114 +142,115 @@ @section buddylist-api Buddylist, Group and Chat API -The BuddList, Group and Chat APIs are very similar and whatever is shown for the @c Gaim::BuddlyList API should carry over to @c Gaim::Chat and @c Gaim::Group. Note that there is a @c Gaim::Find pacakge that was created to keep the naming consistent with how these functions are named in the C API. +The BuddyList, Group and Chat APIs are very similar and whatever is shown for the @c Gaim::BuddyList API should carry over to @c Gaim::BuddyList::Chat and @c Gaim::BuddyList::Group. Note that there is a @c Gaim::Find package that was created to keep the naming consistent with how these functions are named in the C API. @code sub plugin_load { my $plugin = shift; + my $protocol = "prpl-oscar"; - - # This is how we get an account to use in the following tests. You should replace the username - # with an existent user - $account = Gaim::Accounts::find("USERNAME", $protocol); + my $account_name = "test"; + # This is how we get an account to use in the following tests. You should replace the username + # with an existing user + $account = Gaim::Accounts::find($account_name, $protocol); + # Testing a find function: Note Gaim::Find not Gaim::Buddy:find! # Furthermore, this should work the same for chats and groups - print "Testing: Gaim::Find::buddy()..."; - $buddy = Gaim::Find::buddy($account, "BUDDYNAME"); - if ($buddy) { print "ok.\n"; } else { print "fail.\n"; } + Gaim::Debug::info("testplugin", "Testing: Gaim::Find::buddy()..."); + $buddy = Gaim::Find::buddy($account, "BUDDYNAME"); + Gaim::Debug::info("", ($buddy ? "ok." : "fail.") . "\n"); - # If you should need the handle for some reason, here is how you do it - print "Testing: Gaim::BuddyList::get_handle()..."; - $handle = Gaim::BuddyList::get_handle(); - if ($handle) { print "ok.\n"; } else { print "fail.\n"; } + # If you should need the handle for some reason, here is how you do it + Gaim::Debug::info("testplugin", "Testing: Gaim::BuddyList::get_handle()..."); + $handle = Gaim::BuddyList::get_handle(); + Gaim::Debug::info("", ($handle ? "ok." : "fail.") . "\n"); # This gets the Gaim::BuddyList and references it by $blist - print "Testing: Gaim::BuddyList::get_blist()..."; - $blist = Gaim::BuddyList::get_blist(); - if ($blist) { print "ok.\n"; } else { print "fail.\n"; } + Gaim::Debug::info("testplugin", "Testing: Gaim::get_blist()..."); + $blist = Gaim::get_blist(); + Gaim::Debug::info("", ($blist ? "ok." : "fail.") . "\n"); # This is how you would add a buddy named "NEWNAME" with the alias "ALIAS" - print "Testing: Gaim::Buddy::new..."; - $buddy = Gaim::Buddy::new($account, "NEWNAME", "ALIAS"); - if ($buddy) { print "ok.\n"; } else { print "fail.\n"; } + Gaim::Debug::info("testplugin", "Testing: Gaim::BuddyList::Buddy::new..."); + $buddy = Gaim::BuddyList::Buddy::new($account, "NEWNAME", "ALIAS"); + Gaim::Debug::info("", ($buddy ? "ok." : "fail.") . "\n"); # Here we add the new buddy '$buddy' to the group "GROUP" # so first we must find the group - print "Testing: Gaim::Find::group..."; - $group = Gaim::Find::group("GROUP"); - if ($group) { print "ok.\n"; } else { print "fail.\n"; } + Gaim::Debug::info("testplugin", "Testing: Gaim::Find::group..."); + $group = Gaim::Find::group("GROUP"); + Gaim::Debug::info("", ($group ? "ok." : "fail.") . "\n"); # To add the buddy we need to have the buddy, contact, group and node for insertion. # For this example we can let contact be undef and set the insertion node as the group - print "Testing: Gaim::BuddyList::add_buddy..."; - Gaim::BuddyList::add_buddy($buddy, undef, $group, $group); - if ($buddy) { print "ok.\n"; } else { print "fail.\n"; } + Gaim::Debug::info("testplugin", "Testing: Gaim::BuddyList::add_buddy...\n"); + Gaim::BuddyList::add_buddy($buddy, undef, $group, $group); # The example that follows gives an indiction of how an API call that returns a list is handled. # In this case the buddies of the account found earlier are retrieved and put in an array '@buddy_array' - # Further down an accessor method is used, 'get_name()' -- see source for details on the full set of methods - print "Testing: Gaim::Find::buddies...\n"; - @buddy_array = Gaim::Find::buddies($account, "USERNAME"); - if (@buddy_array) { - print "Buddies in list (" . @buddy_array . "): \n"; - foreach $bud (@buddy_array) { - print Gaim::Buddy::get_name($bud) . "\n"; - } - } + # Further down an accessor method is used, 'get_name()' -- see source for details on the full set of methods + Gaim::Debug::info("testplugin", "Testing: Gaim::Find::buddies...\n"); + @buddy_array = Gaim::Find::buddies($account, undef); + if (@buddy_array) { + Gaim::Debug::info("testplugin", "Buddies in list (" . @buddy_array . "): \n"); + foreach $bud (@buddy_array) { + Gaim::Debug::info("testplugin", Gaim::BuddyList::Buddy::get_name($bud) . "\n"); + } + } } @endcode -The BuddyList API allows for plugins to edit buddies in the list, find the buddies on a given account, set alias, and manipulate the structer as needed. It is also contains the methods for accessing @c Gaim::Group and @c Gaim::Chat types. +The BuddyList API allows for plugins to edit buddies in the list, find the buddies on a given account, set alias, and manipulate the structure as needed. It is also contains the methods for accessing @c Gaim::BuddyList::Group and @c Gaim::BuddyList::Chat types. @section conn-api Connection API -The @c Gaim::Connection API is one of the many packages that will not be covered in depth in this tutorial. They are more useful to protocol plugin developers. However, the entire @c gaim_connection_ API has corresponding, functioning perl subroutines. +The @c Gaim::Connection API is one of the many packages that will not be covered in depth in this tutorial. They are more useful to protocol plugin developers. However, the entire @c gaim_connection_ API has corresponding, functioning perl subroutines. @section conv-api Conversation API The Gaim perl API for @c gaim_conversation_ and @c gaim_conv_window_ allow plugins to interact with open conversations, create new conversations, and -modify conversations at will. The following example again replaces the @c -plugin_load subroutine. In the example script, a new window is created, -displayed and a new conversation instant message is created. The @c -Gaim::Conversation::Chat package handles the @c gaim_conv_chat_ portion of the -API very similarly to the examples that follow. +modify conversations at will. In the example script, a new window is created, +displayed and a new conversation instant message is created. The following +example again replaces the @c plugin_load subroutine. The +@c Gaim::Conversation::Chat package handles the @c gaim_conv_chat_ portion of +the API very similarly to the examples that follow. +Notice that the interaction with the conversation window is in the @c Gaim::GtkUI package as it +is UI-specific code interacting with gtkgaim and not libgaim. +To use any of the Gaim::GtkUI functionality, you will need to add the following to the top of your script: @code use Gaim::GtkUI; @endcode + + @code sub plugin_load { my $plugin = shift; my $protocol = "prpl-oscar"; + my $account_name = "test"; - $account = Gaim::Accounts::find("USERNAME", $protocol); + $account = Gaim::Accounts::find($account_name, $protocol); # First we create two new conversations. - print "Testing Gaim::Conversation::new()..."; - $conv1 = Gaim::Conversation::new(1, $account, "Test Conversation 1"); + print "Testing Gaim::Conversation->new()..."; + $conv1 = Gaim::Conversation->new(1, $account, "Test Conversation 1"); if ($conv1) { print "ok.\n"; } else { print "fail.\n"; } - print "Testing Gaim::Conversation::new()..."; - $conv2 = Gaim::Conversation::new(1, $account, "Test Conversation 2"); + print "Testing Gaim::Conversation->new()..."; + $conv2 = Gaim::Conversation->new(1, $account, "Test Conversation 2"); if ($conv2) { print "ok.\n"; } else { print "fail.\n"; } # Second we create a window to display the conversations in. - # Note that the package here is Gaim::Conversation::Window - print "Testing Gaim::Conversation::Window::new()...\n"; - $win = Gaim::Conversation::Window::new(); + # Note that the package here is Gaim::GtkUI::Conversation::Window + print "Testing Gaim::GtkUI::Conversation::Window->new()...\n"; + $win = Gaim::GtkUI::Conversation::Window->new(); - # The third thing to do is to add the two conversations to the windows. - # The subroutine add_conversation() returns the number of conversations + # The third thing to do is to move second the conversation to a new window. + # The subroutine add_gtkconv() returns the number of conversations # present in the window. - print "Testing Gaim::Conversation::Window::add_conversation()..."; - $conv_count = $conv1->add_conversation(); - if ($conv_count) { - print "ok..." . $conv_count . " conversations...\n"; - } else { - print "fail.\n"; - } - - print "Testing Gaim::Conversation::Window::add_conversation()..."; - $conv_count = $win->add_conversation($conv2); + print "Testing Gaim::GtkUI::Conversation::Window::add_conversation()..."; + $gtkconv2 = Gaim::GtkUI::Conversation::get_gtkconv($conv2); + $gtkconv2->get_window()->remove_gtkconv($gtkconv2); + $conv_count = $win->add_gtkconv($gtkconv2); if ($conv_count) { print "ok..." . $conv_count . " conversations...\n"; } else { @@ -256,10 +258,10 @@ } # Now the window is displayed to the user. - print "Testing Gaim::Conversation::Window::show()...\n"; + print "Testing Gaim::GtkUI::Conversation::Window::show()...\n"; $win->show(); - # Use get_im_data() to get a handle for the conversation + # Use get_im_data() to get a handle for the conversation print "Testing Gaim::Conversation::get_im_data()...\n"; $im = $conv1->get_im_data(); if ($im) { print "ok.\n"; } else { print "fail.\n"; } @@ -269,7 +271,7 @@ $im->send("Message Test."); print "Testing Gaim::Conversation::IM::write()...\n"; - $im->write("SENDER", "<b>Message</b> Test.", 0, 0); + $conv2->get_im_data()->write("SENDER", "<b>Message</b> Test.", 0, 0); } @endcode @@ -277,12 +279,12 @@ @c $win. @code - print "Testing Gaim::Conversation::Window::get_conversation_count()...\n"; - $conv_count = $win->get_conversation_count(); + print "Testing Gaim::GtkUI::Conversation::Window::get_gtkconv_count()...\n"; + $conv_count = $win->get_gtkconv_count(); print "...and it returned $conv_count.\n"; if ($conv_count > 0) { - print "Testing Gaim::Conversation::Window::destroy()...\n"; - $win->destroy(); + print "Testing Gaim::GtkUI::Conversation::Window::destroy()...\n"; + $win->destroy(); } @endcode @@ -303,14 +305,15 @@ @code sub plugin_load { - my $plugin = shift; + my $plugin = shift; # Here we are adding a set of preferences # The second argument is the default value for the preference. - Gaim::Prefs::add_none("/plugins/core/perl_test"); - Gaim::Prefs::add_bool("/plugins/core/perl_test/bool", 1); - Gaim::Prefs::add_string("/plugins/core/perl_test/choice", "ch1"); - Gaim::Prefs::add_string("/plugins/core/perl_test/text", "Foobar"); + Gaim::Prefs::add_none("/plugins/core/perl_test"); + Gaim::Prefs::add_bool("/plugins/core/perl_test/bool", 1); + Gaim::Prefs::add_string("/plugins/core/perl_test/choice_str", "ch1"); + Gaim::Prefs::add_int("/plugins/core/perl_test/choice_int", 1); + Gaim::Prefs::add_string("/plugins/core/perl_test/text", "Foobar"); } @endcode @@ -319,38 +322,51 @@ @code sub prefs_info_cb { # The first step is to initialize the Gaim::Pref::Frame that will be returned - $frame = Gaim::PluginPref::Frame->new(); + $frame = Gaim::PluginPref::Frame->new(); # Create a new boolean option with a label "Boolean Label" and then add # it to the frame - $ppref = Gaim::Pref->new_with_label("Boolean Label"); + $ppref = Gaim::PluginPref->new_with_label("Boolean Label"); $frame->add($ppref); $ppref = Gaim::PluginPref->new_with_name_and_label( - "/plugins/core/perl_test/bool", "Boolean Preference"); + "/plugins/core/perl_test/bool", "Boolean Preference"); $frame->add($ppref); # Create a set of choices. To do so we must set the type to 1 which is - # the numerical equivelant of the GaimPrefType for choice. + # the numerical equivalent of the GaimPrefType for choice. $ppref = Gaim::PluginPref->new_with_name_and_label( - "/plugins/core/perl_test/choice", "Choice Preference"); + "/plugins/core/perl_test/choice_str", "Choice Preference"); $ppref->set_type(1); - $ppref->add_choice("ch0", $frame); + $ppref->add_choice("ch0", "ch0"); # The following will be the default value as set from plugin_load - $ppref->add_choice("ch1", $frame); + $ppref->add_choice("ch1", "ch1"); $frame->add($ppref); + # Create a set of choices. To do so we must set the type to 1 which is + # the numerical equivalent of the GaimPrefType for choice. + $ppref = Gaim::PluginPref->new_with_name_and_label( + "/plugins/core/perl_test/choice_int", "Choice Preference 2"); + $ppref->set_type(1); + $ppref->add_choice("zero", 0); + # The following will be the default value as set from plugin_load + $ppref->add_choice("one", 1); + $frame->add($ppref); + + # Create a text box. The default value will be "Foobar" as set by # plugin_load $ppref = Gaim::PluginPref->new_with_name_and_label( - "/plugins/core/perl_test/text", "Text Box Preference"); + "/plugins/core/perl_test/text", "Text Box Preference"); + $ppref->set_type(2); $ppref->set_max_length(16); $frame->add($ppref); - return $frame; + return $frame; } @endcode +<!-- Using the Gtk2-Perl module for Perl it is possible to create tailored @c GtkFrame elements and display them in a preference window. Note that Gtk2-Perl must be loaded with @c require and not @c use . The first step is to create the proper key/value pairs in the @c \%PLUGIN_INFO hash noting that the @c prefs_info key is no longer valid. Instead the keys @c GTK_UI and @c gtk_prefs_info must be set as follows. @code @@ -367,14 +383,14 @@ @code # A simple call back that prints out whatever value it is given as an argument. sub button_cb { - my $widget = shift; - my $data = shift; - print "Clicked button with message: " . $data . "\n"; + my $widget = shift; + my $data = shift; + print "Clicked button with message: " . $data . "\n"; } sub gtk_prefs_info_cb { # Create a button that prints a message to the console and places it in the frame. - use Glib; + use Glib; require Gtk2; $frame = Gtk2::Frame->new(\'Gtk Test Frame\'); @@ -385,12 +401,13 @@ $button->signal_connect("clicked" => \&button_cb, "Message Text"); $frame->add($button); - $button->show(); - $frame->show(); + $button->show(); + $frame->show(); - return $frame; + return $frame; } @endcode +--> @section request-api Request Dialog Box API @@ -398,25 +415,25 @@ These arguments are the same for each of the three request types: @arg @em handle - The plugin handle. - @arg @em title - String title for the dialog. - @arg @em primary - The first sub-heading. - @arg @em secondary - The second sub-heading. - @arg @em ok_text - The Text for the OK button. - @arg @em ok_cb - The string name of the perl subroutine to call when the OK button is clicked. - @arg @em cancel_text - The text for the Cancel button. - @arg @em cancel_cb - The string name of the perl subroutine to call when the Cancel button is clicked. - @arg @em default_value - Default text string to display in the input box. - @arg @em multiline - Boolean where true indicates multiple line input boxes are allowed. + @arg @em title - String title for the dialog. + @arg @em primary - The first sub-heading. + @arg @em secondary - The second sub-heading. + @arg @em ok_text - The Text for the OK button. + @arg @em ok_cb - The string name of the perl subroutine to call when the OK button is clicked. + @arg @em cancel_text - The text for the Cancel button. + @arg @em cancel_cb - The string name of the perl subroutine to call when the Cancel button is clicked. + @arg @em default_value - Default text string to display in the input box. + @arg @em multiline - Boolean where true indicates multiple line input boxes are allowed. @arg @em masked - Boolean indicating if the user can edit the text. @arg @em hint - See source for more information - can be left blank. - @arg @em filename - String defualt file name value. - @arg @em savedialog - Boolean where true indicates use as a save file dialog and false indicates an open file dialog. + @arg @em filename - String defualt file name value. + @arg @em savedialog - Boolean where true indicates use as a save file dialog and false indicates an open file dialog. @code # Create a simple text input box Gaim::Request::input(handle, title, primary, secondary, default_value, multiline, masked, hint, ok_text, ok_cb, cancel_text, cancel_cb); -# Propt user to select a file +# Prompt user to select a file Gaim::Request::file(handle, title, filename, savedialog, ok_cb, cancel_cb); # Create a unique input dialog as shown in the following example @@ -429,10 +446,10 @@ sub ok_cb_test{ # The $fields is passed to the callback function when the button is clicked. # To get the values they must be extracted from $fields by name. - $fields = shift; - $account = Gaim::Request::fields_get_account($fields, "acct_test"); - $int = Gaim::Request::fields_get_integer($fields, "int_test"); - $choice = Gaim::Request::fields_get_choice($fields, "ch_test"); + $fields = shift; + $account = Gaim::Request::Fields::get_account($fields, "acct_test"); + $int = Gaim::Request::Fields::get_integer($fields, "int_test"); + $choice = Gaim::Request::Fields::get_choice($fields, "ch_test"); } sub cancel_cb_test{ @@ -440,44 +457,44 @@ } sub plugin_load { - my $plugin = shift; + my $plugin = shift; # Create a group to pool together mutltiple fields. - $group = Gaim::Request::field_group_new("Group Name"); - + $group = Gaim::Request::Field::Group::new("Group Name"); + # Each fields is created with Gaim::Request::*_new(), is made viewable with Gaim::Request::field_*_set_show_all() # and is then added to the group with Gaim::Request::field_group_add_field() - # Add an account drop down list showing all active accounts - $field = Gaim::Request::field_account_new("acct_test", "Account Text", undef); - Gaim::Request::field_account_set_show_all($field, 0); - Gaim::Request::field_group_add_field($group, $field); + # Add an account drop down list showing all active accounts + $field = Gaim::Request::Field::account_new("acct_test", "Account Text", undef); + Gaim::Request::Field::account_set_show_all($field, 0); + Gaim::Request::Field::Group::add_field($group, $field); # Add an integer input box - $field = Gaim::Request::field_int_new("int_test", "Integer Text", 33); - Gaim::Request::field_group_add_field($group, $field); + $field = Gaim::Request::Field::int_new("int_test", "Integer Text", 33); + Gaim::Request::Field::Group::add_field($group, $field); # Add a list of choices - $field = Gaim::Request::field_choice_new("ch_test", "Choice Text", 1); - Gaim::Request::field_choice_add($field, "Choice 0"); - Gaim::Request::field_choice_add($field, "Choice 1"); - Gaim::Request::field_choice_add($field, "Choice 2"); + $field = Gaim::Request::Field::choice_new("ch_test", "Choice Text", 1); + Gaim::Request::Field::choice_add($field, "Choice 0"); + Gaim::Request::Field::choice_add($field, "Choice 1"); + Gaim::Request::Field::choice_add($field, "Choice 2"); - Gaim::Request::field_group_add_field($group, $field); + Gaim::Request::Field::Group::add_field($group, $field); # Create a Gaim::Request and add the group that was just created. - $request = Gaim::Request::fields_new(); - Gaim::Request::fields_add_group($request, $group); + $request = Gaim::Request::Fields::new(); + Gaim::Request::Fields::add_group($request, $group); # Display the dialog box with the input fields added earlier with the appropriate titles. - Gaim::Request::fields( - $plugin, - "Request Title!", - "Primary Title", - "Secondary Title", - $request, - "Ok Text", "ok_cb_test", - "Cancel Text", "cancel_cb_test"); + Gaim::Request::fields( + $plugin, + "Request Title!", + "Primary Title", + "Secondary Title", + $request, + "Ok Text", "ok_cb_test", + "Cancel Text", "cancel_cb_test"); } @endcode @@ -505,11 +522,11 @@ ); sub action1_cb { - Gaim::debug_info("Test Plugin", "Action 1 activated"); + Gaim::Debug::info("Test Plugin", "Action 1 activated\n"); } sub action2_cb { - Gaim::debug_info("Test Plugin", "Action 2 activated"); + Gaim::Debug::info("Test Plugin", "Action 2 activated\n"); } @endcode @@ -518,17 +535,17 @@ @code sub timeout_cb { my $plugin = shift; - print "Timeout occurred."; - - # Reschedule timeout - Gaim::timeout_add($plugin, 10, \&timeout_cb, $plugin); + Gaim::Debug::info("testplugin", "Timeout occurred.\n"); + + # Reschedule timeout + Gaim::timeout_add($plugin, 10, \&timeout_cb, $plugin); } sub plugin_load { $plugin = shift; - # Schedule a timeout for ten seconds from now - Gaim::timeout_add($plugin, 10, \&timeout_cb, $plugin); + # Schedule a timeout for ten seconds from now + Gaim::timeout_add($plugin, 10, \&timeout_cb, $plugin); } @endcode @@ -536,9 +553,9 @@ @code sub signal_cb { - # The handle and the user data come in as arguments - my ($handle, $data) = @_; - print "User just connected."; + # The signal data and the user data come in as arguments + my ($account, $data) = @_; + Gaim::Debug::info("testplugin", "Account \"" . $account->get_username() . "\" just connected.\n"); } sub plugin_load { @@ -547,11 +564,11 @@ # User data to be given as an argument to the callback perl subroutine. $data = ""; - # A pointer to the actual plugin handle needed by the callback function - $plugin_handle = Gaim::Accounts::get_handle(); + # A pointer to the handle to which the signal belongs needed by the callback function + $accounts_handle = Gaim::Accounts::get_handle(); - # Connect the perl subroutine 'signal_cb' to the event 'account-connecting' - Gaim::signal_connect($plugin_handle, "account-connecting", $plugin, \&signal_cb, $data); + # Connect the perl subroutine 'signal_cb' to the event 'account-connecting' + Gaim::Signal::connect($accounts_handle, "account-connecting", $plugin, \&signal_cb, $data); } @endcode Modified: trunk/gtk/plugins/perl/common/GtkConv.xs =================================================================== --- trunk/gtk/plugins/perl/common/GtkConv.xs 2006-11-29 22:43:54 UTC (rev 17848) +++ trunk/gtk/plugins/perl/common/GtkConv.xs 2006-11-29 23:46:55 UTC (rev 17849) @@ -33,6 +33,15 @@ gaim_gtkconv_is_hidden(gtkconv) Gaim::GtkUI::Conversation gtkconv +void +gaim_gtkconv_get_gtkconv(conv) + Gaim::Conversation conv +PPCODE: + if (conv != NULL && GAIM_IS_GTK_CONVERSATION(conv)) + XPUSHs(sv_2mortal(gaim_perl_bless_object( + GAIM_GTK_CONVERSATION(conv), + "Gaim::GtkUI::Conversation"))); + MODULE = Gaim::GtkUI::Conversation PACKAGE = Gaim::GtkUI::Conversations PREFIX = gaim_gtk_conversations_ PROTOTYPES: ENABLE Modified: trunk/libgaim/plugins/perl/common/Account.xs =================================================================== --- trunk/libgaim/plugins/perl/common/Account.xs 2006-11-29 22:43:54 UTC (rev 17848) +++ trunk/libgaim/plugins/perl/common/Account.xs 2006-11-29 23:46:55 UTC (rev 17849) @@ -78,6 +78,11 @@ Gaim::Account account gboolean value +void gaim_account_set_enabled(account, ui, value) + Gaim::Account account + const char *ui + gboolean value + void gaim_account_set_proxy_info(account, info) Gaim::Account account @@ -162,6 +167,11 @@ gaim_account_get_check_mail(account) Gaim::Account account +gboolean +gaim_account_get_enabled(account, ui) + Gaim::Account account + const char *ui + Gaim::ProxyInfo gaim_account_get_proxy_info(account) Gaim::Account account Modified: trunk/libgaim/plugins/perl/common/PluginPref.xs =================================================================== --- trunk/libgaim/plugins/perl/common/PluginPref.xs 2006-11-29 22:43:54 UTC (rev 17848) +++ trunk/libgaim/plugins/perl/common/PluginPref.xs 2006-11-29 23:46:55 UTC (rev 17849) @@ -33,7 +33,9 @@ gaim_plugin_pref_add_choice(pref, label, choice) Gaim::PluginPref pref const char *label - gpointer choice +# Do the appropriate conversion based on the perl type specified. +# Currently only Strings and Ints will work. + gpointer choice = (SvPOKp($arg) ? SvPV($arg, PL_na) : (SvIOKp($arg) ? GINT_TO_POINTER(SvIV($arg)) : NULL)); void gaim_plugin_pref_destroy(pref) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sea...@us...> - 2006-11-29 22:44:06
|
Revision: 17848 http://svn.sourceforge.net/gaim/?rev=17848&view=rev Author: seanegan Date: 2006-11-29 14:43:54 -0800 (Wed, 29 Nov 2006) Log Message: ----------- credit Modified Paths: -------------- trunk/COPYRIGHT Modified: trunk/COPYRIGHT =================================================================== --- trunk/COPYRIGHT 2006-11-29 22:36:03 UTC (rev 17847) +++ trunk/COPYRIGHT 2006-11-29 22:43:54 UTC (rev 17848) @@ -11,6 +11,7 @@ Paul Aurich Patrick Aussems Anibal Avelar +Ali Albazaz Alex Badea John Bailey Chris Banal This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ev...@us...> - 2006-11-29 22:36:08
|
Revision: 17847 http://svn.sourceforge.net/gaim/?rev=17847&view=rev Author: evands Date: 2006-11-29 14:36:03 -0800 (Wed, 29 Nov 2006) Log Message: ----------- Fixed static compilation; libaim and libicq need to have unique plugin names, and those names should preferably match the names defined by the info struct Modified Paths: -------------- trunk/libgaim/protocols/oscar/libaim.c trunk/libgaim/protocols/oscar/libicq.c Modified: trunk/libgaim/protocols/oscar/libaim.c =================================================================== --- trunk/libgaim/protocols/oscar/libaim.c 2006-11-29 18:05:25 UTC (rev 17846) +++ trunk/libgaim/protocols/oscar/libaim.c 2006-11-29 22:36:03 UTC (rev 17847) @@ -146,4 +146,4 @@ gaim_prefs_remove("/plugins/prpl/oscar/always_use_rv_proxy"); } -GAIM_INIT_PLUGIN(oscar, init_plugin, info); +GAIM_INIT_PLUGIN(aim, init_plugin, info); Modified: trunk/libgaim/protocols/oscar/libicq.c =================================================================== --- trunk/libgaim/protocols/oscar/libicq.c 2006-11-29 18:05:25 UTC (rev 17846) +++ trunk/libgaim/protocols/oscar/libicq.c 2006-11-29 22:36:03 UTC (rev 17847) @@ -150,4 +150,4 @@ gaim_prefs_remove("/plugins/prpl/oscar/always_use_rv_proxy"); } -GAIM_INIT_PLUGIN(oscar, init_plugin, info); +GAIM_INIT_PLUGIN(icq, init_plugin, info); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sea...@us...> - 2006-11-29 18:05:28
|
Revision: 17846 http://svn.sourceforge.net/gaim/?rev=17846&view=rev Author: seanegan Date: 2006-11-29 10:05:25 -0800 (Wed, 29 Nov 2006) Log Message: ----------- Fix for C++ compilers Modified Paths: -------------- trunk/libgaim/status.h Modified: trunk/libgaim/status.h =================================================================== --- trunk/libgaim/status.h 2006-11-29 17:20:39 UTC (rev 17845) +++ trunk/libgaim/status.h 2006-11-29 18:05:25 UTC (rev 17846) @@ -1021,4 +1021,8 @@ /*@}*/ +#ifdef __cplusplus +} +#endif + #endif /* _GAIM_STATUS_H_ */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dat...@us...> - 2006-11-29 17:20:43
|
Revision: 17845 http://svn.sourceforge.net/gaim/?rev=17845&view=rev Author: datallah Date: 2006-11-29 09:20:39 -0800 (Wed, 29 Nov 2006) Log Message: ----------- Fix gaim_account_set_status() in perl plugins. Modified Paths: -------------- trunk/libgaim/plugins/perl/common/Account.xs Modified: trunk/libgaim/plugins/perl/common/Account.xs =================================================================== --- trunk/libgaim/plugins/perl/common/Account.xs 2006-11-29 05:27:49 UTC (rev 17844) +++ trunk/libgaim/plugins/perl/common/Account.xs 2006-11-29 17:20:39 UTC (rev 17845) @@ -89,7 +89,7 @@ const char *status_id gboolean active CODE: - gaim_account_set_status(account, status_id, active); + gaim_account_set_status(account, status_id, active, NULL); void gaim_account_set_status_types(account, status_types) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dat...@us...> - 2006-11-29 05:27:49
|
Revision: 17844 http://svn.sourceforge.net/gaim/?rev=17844&view=rev Author: datallah Date: 2006-11-28 21:27:49 -0800 (Tue, 28 Nov 2006) Log Message: ----------- On win32, use the current locale charset as the default fallback for oscar. Sean suggested this, it is based on the idea that you're likely to be talking people using a similar locale to you - so if they are using an ICQ client that just sends it in the current locale encoding, it will just work. For the en_US locale, this becomes the "CP1252" encoding. I also removed some duplicate definitions. Modified Paths: -------------- trunk/libgaim/protocols/oscar/oscar.c trunk/libgaim/protocols/oscar/oscarcommon.h Modified: trunk/libgaim/protocols/oscar/oscar.c =================================================================== --- trunk/libgaim/protocols/oscar/oscar.c 2006-11-29 01:20:34 UTC (rev 17843) +++ trunk/libgaim/protocols/oscar/oscar.c 2006-11-29 05:27:49 UTC (rev 17844) @@ -62,13 +62,6 @@ #define AIMHASHDATA "http://gaim.sourceforge.net/aim_data.php3" #define OSCAR_CONNECT_STEPS 6 -#define OSCAR_DEFAULT_LOGIN_SERVER "login.oscar.aol.com" -#define OSCAR_DEFAULT_LOGIN_PORT 5190 -#define OSCAR_DEFAULT_CUSTOM_ENCODING "ISO-8859-1" -#define OSCAR_DEFAULT_AUTHORIZATION TRUE -#define OSCAR_DEFAULT_HIDE_IP TRUE -#define OSCAR_DEFAULT_WEB_AWARE FALSE -#define OSCAR_DEFAULT_ALWAYS_USE_RV_PROXY FALSE static OscarCapability gaim_caps = OSCAR_CAPABILITY_CHAT | OSCAR_CAPABILITY_BUDDYICON | OSCAR_CAPABILITY_DIRECTIM | OSCAR_CAPABILITY_SENDFILE | OSCAR_CAPABILITY_UNICODE | OSCAR_CAPABILITY_INTEROPERATE | OSCAR_CAPABILITY_ICHAT; @@ -215,6 +208,15 @@ g_free(data); } +#ifdef _WIN32 +const char *oscar_get_locale_charset(void) { + static const char *charset = NULL; + if (charset == NULL) + g_get_charset(&charset); + return charset; +} +#endif + /** * Determine how we can send this message. Per the warnings elsewhere * in this file, these little checks determine the simplest encoding @@ -2316,12 +2318,10 @@ if (i >= 6) { struct name_data *data = g_new(struct name_data, 1); gchar *sn = g_strdup_printf("%u", args->uin); - gchar *reason; + gchar *reason = NULL; if (msg2[5] != NULL) reason = gaim_plugin_oscar_decode_im_part(account, sn, AIM_CHARSET_CUSTOM, 0x0000, msg2[5], strlen(msg2[5])); - else - reason = NULL; gaim_debug_info("oscar", "Received an authorization request from UIN %u\n", @@ -2329,7 +2329,7 @@ data->gc = gc; data->name = sn; data->nick = NULL; - + gaim_account_request_authorization(gaim_connection_get_account(gc), sn, NULL, NULL, reason, G_CALLBACK(gaim_auth_grant), G_CALLBACK(gaim_auth_dontgrant_msgprompt), data); g_free(reason); @@ -3503,9 +3503,9 @@ aim_clientready(od, conn); - if (gaim_account_get_user_info(account) != NULL) - serv_set_info(gc, gaim_account_get_user_info(account)); - + if (gaim_account_get_user_info(account) != NULL) + serv_set_info(gc, gaim_account_get_user_info(account)); + /* Set our available message based on the current status */ status = gaim_account_get_active_status(account); if (gaim_status_is_available(status)) @@ -5031,7 +5031,7 @@ data->name = g_strdup(sn); data->nick = NULL; - gaim_account_request_authorization(gaim_connection_get_account(gc), nombre, NULL, NULL, reason, + gaim_account_request_authorization(gaim_connection_get_account(gc), nombre, NULL, NULL, reason, G_CALLBACK(gaim_auth_grant), G_CALLBACK(gaim_auth_dontgrant_msgprompt), data); g_free(nombre); g_free(reason); Modified: trunk/libgaim/protocols/oscar/oscarcommon.h =================================================================== --- trunk/libgaim/protocols/oscar/oscarcommon.h 2006-11-29 01:20:34 UTC (rev 17843) +++ trunk/libgaim/protocols/oscar/oscarcommon.h 2006-11-29 05:27:49 UTC (rev 17844) @@ -31,12 +31,19 @@ #define OSCAR_DEFAULT_LOGIN_SERVER "login.oscar.aol.com" #define OSCAR_DEFAULT_LOGIN_PORT 5190 +#ifndef _WIN32 #define OSCAR_DEFAULT_CUSTOM_ENCODING "ISO-8859-1" +#else +#define OSCAR_DEFAULT_CUSTOM_ENCODING oscar_get_locale_charset() +#endif #define OSCAR_DEFAULT_AUTHORIZATION TRUE #define OSCAR_DEFAULT_HIDE_IP TRUE #define OSCAR_DEFAULT_WEB_AWARE FALSE #define OSCAR_DEFAULT_ALWAYS_USE_RV_PROXY FALSE +#ifdef _WIN32 +const char *oscar_get_locale_charset(void); +#endif const char *oscar_list_icon_icq(GaimAccount *a, GaimBuddy *b); const char *oscar_list_icon_aim(GaimAccount *a, GaimBuddy *b); void oscar_list_emblems(GaimBuddy *b, const char **se, const char **sw, const char **nw, const char **ne); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sea...@us...> - 2006-11-29 01:20:39
|
Revision: 17843 http://svn.sourceforge.net/gaim/?rev=17843&view=rev Author: seanegan Date: 2006-11-28 17:20:34 -0800 (Tue, 28 Nov 2006) Log Message: ----------- patch from wabz Modified Paths: -------------- trunk/libgaim/account.h Modified: trunk/libgaim/account.h =================================================================== --- trunk/libgaim/account.h 2006-11-29 01:15:34 UTC (rev 17842) +++ trunk/libgaim/account.h 2006-11-29 01:20:34 UTC (rev 17843) @@ -179,7 +179,7 @@ * Notifies the user that a remote user has wants to add the local user * to his or her buddy list and requires authorization to d oso. * - * This will present a dialog informing the usre of this and ask if the + * This will present a dialog informing the user of this and ask if the * user authorizes or denies the remote user from adding him. * * @param account The account that was added This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sea...@us...> - 2006-11-29 01:15:34
|
Revision: 17842 http://svn.sourceforge.net/gaim/?rev=17842&view=rev Author: seanegan Date: 2006-11-28 17:15:34 -0800 (Tue, 28 Nov 2006) Log Message: ----------- patch by ari :) Modified Paths: -------------- trunk/gtk/gtkscrollbook.c Modified: trunk/gtk/gtkscrollbook.c =================================================================== --- trunk/gtk/gtkscrollbook.c 2006-11-29 01:13:21 UTC (rev 17841) +++ trunk/gtk/gtkscrollbook.c 2006-11-29 01:15:34 UTC (rev 17842) @@ -1,5 +1,5 @@ /* - * @file gtkscrollbook.c GTK+ Status Selection Widget + * @file gtkscrollbook.c GTK+ Scrolling notebook widget * @ingroup gtkui * * gaim This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sea...@us...> - 2006-11-29 01:13:21
|
Revision: 17841 http://svn.sourceforge.net/gaim/?rev=17841&view=rev Author: seanegan Date: 2006-11-28 17:13:21 -0800 (Tue, 28 Nov 2006) Log Message: ----------- Ok... let's throw this to the wild. Support for "So-and-so want's authorization" in the core. It creates a new mini-dialog in the blist for this with an Authorize and Deny button, which do as you might imagine. Clicking Authorize will also spawn an "Add buddy" dialog if that person isn't already a buddy. I'm not sure I like this, since I never add buddies that I authorize, but it seems the best option. I considered a checkbox in the dialog (but it only applies when you hit "Authorize," which could be weird), and a third "Authorize and Add" button (but that was too big for the blist). I'll come back to the UI later, I'm sure. I'd like to see that the prpl changes all work. Yahoo, especially, looked confusing, and had the most changes. I'm mostly happy with this. Modified Paths: -------------- trunk/gtk/gtkaccount.c trunk/gtk/gtkscrollbook.c trunk/libgaim/account.c trunk/libgaim/account.h trunk/libgaim/protocols/jabber/presence.c trunk/libgaim/protocols/msn/userlist.c trunk/libgaim/protocols/oscar/oscar.c trunk/libgaim/protocols/yahoo/yahoo.c Modified: trunk/gtk/gtkaccount.c =================================================================== --- trunk/gtk/gtkaccount.c 2006-11-28 21:29:12 UTC (rev 17840) +++ trunk/gtk/gtkaccount.c 2006-11-29 01:13:21 UTC (rev 17841) @@ -2358,20 +2358,104 @@ data->alias = g_strdup(alias); buffer = make_info(account, gc, remote_user, id, alias, msg); - alert = gaim_gtk_make_mini_dialog(gc, GAIM_STOCK_DIALOG_INFO, + alert = gaim_gtk_make_mini_dialog(gc, GAIM_STOCK_DIALOG_QUESTION, _("Add buddy to your list?"), buffer, data, - _("Cancel"), G_CALLBACK(free_add_user_data), - _("Add"), G_CALLBACK(add_user_cb), NULL); + _("Add"), G_CALLBACK(add_user_cb), + _("Cancel"), G_CALLBACK(free_add_user_data), NULL); gaim_gtk_blist_add_alert(alert); g_free(buffer); } +struct auth_and_add { + void(*auth_cb)(void*); + void(*deny_cb)(void*); + void *data; + char *username; + char *alias; + GaimAccount *account; +}; + +static void +authorize_and_add_cb(struct auth_and_add *aa) +{ + aa->auth_cb(aa->data); + gaim_blist_request_add_buddy(aa->account, aa->username, + NULL, aa->alias); + + g_free(aa->username); + g_free(aa->alias); + g_free(aa); +} + +static void +deny_no_add_cb(struct auth_and_add *aa) +{ + aa->deny_cb(aa->data); + + g_free(aa->username); + g_free(aa->alias); + g_free(aa); +} + +static void +gaim_gtk_accounts_request_authorization(GaimAccount *account, const char *remote_user, + const char *id, const char *alias, const char *message, + GCallback auth_cb, GCallback deny_cb, void *user_data) +{ + char *buffer; + GaimConnection *gc; + GtkWidget *alert; + + gc = gaim_account_get_connection(account); + if (message != NULL && *message == '\0') + message = NULL; + + buffer = g_strdup_printf(_("%s%s%s%s wants to add %s to his or her buddy list%s%s"), + remote_user, + (alias != NULL ? " (" : ""), + (alias != NULL ? alias : ""), + (alias != NULL ? ")" : ""), + (id != NULL + ? id + : (gaim_connection_get_display_name(gc) != NULL + ? gaim_connection_get_display_name(gc) + : gaim_account_get_username(account))), + (message != NULL ? ": " : "."), + (message != NULL ? message : "")); + + + if (!gaim_find_buddy(account, remote_user)) { + struct auth_and_add *aa = g_new0(struct auth_and_add, 1); + aa->auth_cb = auth_cb; + aa->deny_cb = deny_cb; + aa->data = user_data; + aa->username = g_strdup(remote_user); + aa->alias = g_strdup(alias); + aa->account = account; + alert = gaim_gtk_make_mini_dialog(gc, GAIM_STOCK_DIALOG_QUESTION, + _("Authorize buddy?"), buffer, aa, + _("Authorize"), authorize_and_add_cb, + _("Deny"), deny_no_add_cb, + NULL); + } else { + alert = gaim_gtk_make_mini_dialog(gc, GAIM_STOCK_DIALOG_QUESTION, + _("Authorize buddy?"), buffer, user_data, + _("Authorize"), auth_cb, + _("Deny"), deny_cb, + NULL); + } + gaim_gtk_blist_add_alert(alert); + + g_free(buffer); +} + static GaimAccountUiOps ui_ops = { gaim_gtk_accounts_notify_added, NULL, - gaim_gtk_accounts_request_add + gaim_gtk_accounts_request_add, + gaim_gtk_accounts_request_authorization }; GaimAccountUiOps * Modified: trunk/gtk/gtkscrollbook.c =================================================================== --- trunk/gtk/gtkscrollbook.c 2006-11-28 21:29:12 UTC (rev 17840) +++ trunk/gtk/gtkscrollbook.c 2006-11-29 01:13:21 UTC (rev 17841) @@ -114,7 +114,7 @@ static void -page_count_change_cb(GtkNotebook *notebook, GtkGaimScrollBook *scroll_book) +page_count_change_cb(GtkGaimScrollBook *scroll_book) { int index = gtk_notebook_get_current_page(GTK_NOTEBOOK(scroll_book->notebook)); #if GTK_CHECK_VERSION(2,2,0) @@ -183,7 +183,7 @@ gtk_box_pack_start(GTK_BOX(scroll_book), scroll_book->notebook, TRUE, TRUE, 0); - g_signal_connect(G_OBJECT(scroll_book->notebook), "add", G_CALLBACK(page_count_change_cb), scroll_book); + g_signal_connect_swapped(G_OBJECT(scroll_book->notebook), "add", G_CALLBACK(page_count_change_cb), scroll_book); g_signal_connect(G_OBJECT(scroll_book->notebook), "remove", G_CALLBACK(page_count_change_cb), scroll_book); g_signal_connect(G_OBJECT(scroll_book->notebook), "switch-page", G_CALLBACK(switch_page_cb), scroll_book); gtk_widget_hide(scroll_book->hbox); Modified: trunk/libgaim/account.c =================================================================== --- trunk/libgaim/account.c 2006-11-28 21:29:12 UTC (rev 17840) +++ trunk/libgaim/account.c 2006-11-29 01:13:21 UTC (rev 17841) @@ -1051,6 +1051,23 @@ ui_ops->request_add(account, remote_user, id, alias, message); } +void +gaim_account_request_authorization(GaimAccount *account, const char *remote_user, + const char *id, const char *alias, const char *message, + GCallback auth_cb, GCallback deny_cb, void *user_data) +{ + GaimAccountUiOps *ui_ops; + + g_return_if_fail(account != NULL); + g_return_if_fail(remote_user != NULL); + + ui_ops = gaim_accounts_get_ui_ops(); + + if (ui_ops != NULL && ui_ops->request_authorize != NULL) + ui_ops->request_authorize(account, remote_user, id, alias, message, auth_cb, deny_cb, user_data); + +} + static void change_password_cb(GaimAccount *account, GaimRequestFields *fields) { Modified: trunk/libgaim/account.h =================================================================== --- trunk/libgaim/account.h 2006-11-28 21:29:12 UTC (rev 17840) +++ trunk/libgaim/account.h 2006-11-29 01:13:21 UTC (rev 17841) @@ -27,6 +27,7 @@ #ifndef _GAIM_ACCOUNT_H_ #define _GAIM_ACCOUNT_H_ +#include <glib-object.h> #include <glib.h> typedef struct _GaimAccountUiOps GaimAccountUiOps; @@ -51,6 +52,9 @@ void (*request_add)(GaimAccount *account, const char *remote_user, const char *id, const char *alias, const char *message); + void (*request_authorize)(GaimAccount *account, const char *remote_user, const char *id, + const char *alias, const char *message, + GCallback authorize_cb, GCallback deny_cb, void *user_data); }; struct _GaimAccount @@ -170,7 +174,28 @@ void gaim_account_request_add(GaimAccount *account, const char *remote_user, const char *id, const char *alias, const char *message); + /** + * Notifies the user that a remote user has wants to add the local user + * to his or her buddy list and requires authorization to d oso. + * + * This will present a dialog informing the usre of this and ask if the + * user authorizes or denies the remote user from adding him. + * + * @param account The account that was added + * @param remote_user The name of the usre that added this account. + * @param id The optional ID of the local account. Rarely used. + * @param alias The optional alias of the remote user. + * @param message The optional message sent from the uer requesting you + * @param auth_cb The callback called when the local user accepts + * @param deny_cb The callback called when the local user rejects + * @param user_data Data to be passed back to the above callbacks + */ +void gaim_account_request_authorization(GaimAccount *account, const char *remote_user, + const char *id, const char *alias, const char *message, + GCallback auth_cb, GCallback deny_cb, void *user_data); + +/** * Requests information from the user to change the account's password. * * @param account The account to change the password on. Modified: trunk/libgaim/protocols/jabber/presence.c =================================================================== --- trunk/libgaim/protocols/jabber/presence.c 2006-11-28 21:29:12 UTC (rev 17840) +++ trunk/libgaim/protocols/jabber/presence.c 2006-11-29 01:13:21 UTC (rev 17841) @@ -181,32 +181,8 @@ static void authorize_add_cb(struct _jabber_add_permit *jap) { - GaimBuddy *buddy = NULL; - jabber_presence_subscription_set(jap->gc->proto_data, jap->who, "subscribed"); -#if 0 - buddy = gaim_find_buddy(jap->gc->account, jap->who); - - if (buddy) { - JabberBuddy *jb = NULL; - - jb = jabber_buddy_find(jap->js, jap->who, TRUE); - - if ((jb->subscription & JABBER_SUB_TO) == 0) { - gaim_account_request_add(jap->gc->account, - jap->who, NULL, - NULL, NULL); - } else { - gaim_account_notify_added(jap->gc->account, - jap->who, NULL, - NULL, NULL); - } - } else { - gaim_account_request_add(jap->gc->account, jap->who, - NULL, NULL, NULL); - } -#endif g_free(jap->who); g_free(jap); } @@ -304,20 +280,13 @@ jb->error_msg = msg ? msg : g_strdup(_("Unknown Error in presence")); } else if(type && !strcmp(type, "subscribe")) { struct _jabber_add_permit *jap = g_new0(struct _jabber_add_permit, 1); - char *msg; - msg = g_strdup_printf(_("The user %s wants to add %s to his or " - "her buddy list."), - from, gaim_account_get_username(js->gc->account)); jap->gc = js->gc; jap->who = g_strdup(from); jap->js = js; - gaim_request_action(js->gc, NULL, msg, NULL, GAIM_DEFAULT_ACTION_NONE, - jap, 2, - _("_Authorize"), G_CALLBACK(authorize_add_cb), - _("_Deny"), G_CALLBACK(deny_add_cb)); - g_free(msg); + gaim_account_request_authorization(gaim_connection_get_account(js->gc), from, NULL, NULL, NULL, + G_CALLBACK(authorize_add_cb), G_CALLBACK(deny_add_cb), jap); jabber_id_free(jid); return; } else if(type && !strcmp(type, "subscribed")) { Modified: trunk/libgaim/protocols/msn/userlist.c =================================================================== --- trunk/libgaim/protocols/msn/userlist.c 2006-11-28 21:29:12 UTC (rev 17840) +++ trunk/libgaim/protocols/msn/userlist.c 2006-11-29 01:13:21 UTC (rev 17841) @@ -42,19 +42,9 @@ { MsnSession *session = pa->gc->proto_data; MsnUserList *userlist = session->userlist; - GaimBuddy *buddy; msn_userlist_add_buddy(userlist, pa->who, MSN_LIST_AL, NULL); - buddy = gaim_find_buddy(pa->gc->account, pa->who); - - if (buddy != NULL) - gaim_account_notify_added(pa->gc->account, pa->who, - NULL, pa->friendly, NULL); - else - gaim_account_request_add(pa->gc->account, pa->who, - NULL, pa->friendly, NULL); - g_free(pa->who); g_free(pa->friendly); g_free(pa); @@ -77,35 +67,14 @@ got_new_entry(GaimConnection *gc, const char *passport, const char *friendly) { MsnPermitAdd *pa; - char *msg; pa = g_new0(MsnPermitAdd, 1); pa->who = g_strdup(passport); pa->friendly = g_strdup(friendly); pa->gc = gc; - - if (friendly != NULL) - { - msg = g_strdup_printf( - _("The user %s (%s) wants to add %s to his or her " - "buddy list."), - passport, friendly, - gaim_account_get_username(gc->account)); - } - else - { - msg = g_strdup_printf( - _("The user %s wants to add %s to his or " - "her buddy list."), - passport, gaim_account_get_username(gc->account)); - } - - gaim_request_action(gc, NULL, msg, NULL, - GAIM_DEFAULT_ACTION_NONE, pa, 2, - _("Authorize"), G_CALLBACK(msn_accept_add_cb), - _("Deny"), G_CALLBACK(msn_cancel_add_cb)); - - g_free(msg); + + gaim_account_request_authorization(gaim_connection_get_account(gc), passport, NULL, friendly, NULL, + msn_accept_add_cb, msn_cancel_add_cb, pa); } /************************************************************************** Modified: trunk/libgaim/protocols/oscar/oscar.c =================================================================== --- trunk/libgaim/protocols/oscar/oscar.c 2006-11-28 21:29:12 UTC (rev 17840) +++ trunk/libgaim/protocols/oscar/oscar.c 2006-11-29 01:13:21 UTC (rev 17841) @@ -2317,30 +2317,22 @@ struct name_data *data = g_new(struct name_data, 1); gchar *sn = g_strdup_printf("%u", args->uin); gchar *reason; - gchar *dialog_msg; if (msg2[5] != NULL) reason = gaim_plugin_oscar_decode_im_part(account, sn, AIM_CHARSET_CUSTOM, 0x0000, msg2[5], strlen(msg2[5])); else - reason = g_strdup(_("No reason given.")); + reason = NULL; - dialog_msg = g_strdup_printf(_("The user %u wants to add %s to their buddy list for the following reason:\n%s"), - args->uin, gaim_account_get_username(gc->account), reason); - g_free(reason); gaim_debug_info("oscar", "Received an authorization request from UIN %u\n", args->uin); data->gc = gc; data->name = sn; data->nick = NULL; - - gaim_request_action(gc, NULL, _("Authorization Request"), - dialog_msg, GAIM_DEFAULT_ACTION_NONE, data, - 2, _("_Authorize"), - G_CALLBACK(gaim_auth_grant), - _("_Deny"), - G_CALLBACK(gaim_auth_dontgrant_msgprompt)); - g_free(dialog_msg); + + gaim_account_request_authorization(gaim_connection_get_account(gc), sn, NULL, NULL, reason, + G_CALLBACK(gaim_auth_grant), G_CALLBACK(gaim_auth_dontgrant_msgprompt), data); + g_free(reason); } } break; @@ -5014,7 +5006,6 @@ GaimAccount *account = gaim_connection_get_account(gc); gchar *nombre; gchar *reason = NULL; - gchar *dialog_msg; struct name_data *data; GaimBuddy *buddy; @@ -5035,26 +5026,15 @@ if (msg != NULL) reason = gaim_plugin_oscar_decode_im_part(account, sn, AIM_CHARSET_CUSTOM, 0x0000, msg, strlen(msg)); - if (reason == NULL) - reason = g_strdup(_("No reason given.")); - - dialog_msg = g_strdup_printf( - _("The user %s wants to add %s to their buddy list for the following reason:\n%s"), - nombre, gaim_account_get_username(account), reason); - g_free(reason); - data = g_new(struct name_data, 1); data->gc = gc; data->name = g_strdup(sn); data->nick = NULL; - gaim_request_action(gc, NULL, _("Authorization Request"), dialog_msg, - GAIM_DEFAULT_ACTION_NONE, data, 2, - _("_Authorize"), G_CALLBACK(gaim_auth_grant), - _("_Deny"), G_CALLBACK(gaim_auth_dontgrant_msgprompt)); - - g_free(dialog_msg); + gaim_account_request_authorization(gaim_connection_get_account(gc), nombre, NULL, NULL, reason, + G_CALLBACK(gaim_auth_grant), G_CALLBACK(gaim_auth_dontgrant_msgprompt), data); g_free(nombre); + g_free(reason); return 1; } Modified: trunk/libgaim/protocols/yahoo/yahoo.c =================================================================== --- trunk/libgaim/protocols/yahoo/yahoo.c 2006-11-28 21:29:12 UTC (rev 17840) +++ trunk/libgaim/protocols/yahoo/yahoo.c 2006-11-29 01:13:21 UTC (rev 17841) @@ -910,16 +910,7 @@ }; static void -yahoo_buddy_add_authorize_cb(struct yahoo_add_request *add_req, const char *msg) { - GaimBuddy *buddy = gaim_find_buddy(add_req->gc->account, add_req->who); - - if (buddy != NULL) - gaim_account_notify_added(add_req->gc->account, add_req->who, - add_req->id, NULL, add_req->msg); - else - gaim_account_request_add(add_req->gc->account, add_req->who, - add_req->id, NULL, add_req->msg); - +yahoo_buddy_add_authorize_cb(struct yahoo_add_request *add_req) { g_free(add_req->id); g_free(add_req->who); g_free(add_req->msg); @@ -956,6 +947,20 @@ g_free(add_req); } +static void +yahoo_buddy_add_deny_noreason_cb(struct yahoo_add_request *add_req, const char*msg) +{ + yahoo_buddy_add_deny_cb(add_req, NULL); +} + +static void +yahoo_buddy_add_deny_reason_cb(struct yahoo_add_request *add_req) { + gaim_request_input(add_req->gc, NULL, _("Authorization denied message:"), + NULL, _("No reason given."), TRUE, FALSE, NULL, + _("OK"), G_CALLBACK(yahoo_buddy_add_deny_cb), + _("Cancel"), G_CALLBACK(yahoo_buddy_add_deny_noreason_cb), add_req); +} + static void yahoo_buddy_added_us(GaimConnection *gc, struct yahoo_packet *pkt) { struct yahoo_add_request *add_req; char *msg = NULL; @@ -984,27 +989,16 @@ } if (add_req->id) { - char *prompt_msg; if (msg) add_req->msg = yahoo_string_decode(gc, msg, FALSE); - /* TODO: this is almost exactly the same as what MSN does, + /* DONE! this is almost exactly the same as what MSN does, * this should probably be moved to the core. */ - prompt_msg = g_strdup_printf(_("The user %s wants to add %s to " - "his or her buddy list%s%s."), - add_req->who, add_req->id, - add_req->msg ? ": " : "", - add_req->msg ? add_req->msg : ""); - gaim_request_input(gc, NULL, prompt_msg, - _("Message (optional) :"), - NULL, TRUE, FALSE, NULL, - _("Authorize"), G_CALLBACK( - yahoo_buddy_add_authorize_cb), - _("Deny"), G_CALLBACK( - yahoo_buddy_add_deny_cb), - add_req); - g_free(prompt_msg); + gaim_account_request_authorization(gaim_connection_get_account(gc), add_req->who, add_req->id, + NULL, add_req->msg, G_CALLBACK(yahoo_buddy_add_authorize_cb), + G_CALLBACK(yahoo_buddy_add_deny_reason_cb), + add_req); } else { g_free(add_req->id); g_free(add_req->who); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sea...@us...> - 2006-11-28 21:29:14
|
Revision: 17840 http://svn.sourceforge.net/gaim/?rev=17840&view=rev Author: seanegan Date: 2006-11-28 13:29:12 -0800 (Tue, 28 Nov 2006) Log Message: ----------- I'm going to assume this works. Modified Paths: -------------- trunk/gtk/gtkscrollbook.c Modified: trunk/gtk/gtkscrollbook.c =================================================================== --- trunk/gtk/gtkscrollbook.c 2006-11-28 09:18:20 UTC (rev 17839) +++ trunk/gtk/gtkscrollbook.c 2006-11-28 21:29:12 UTC (rev 17840) @@ -114,7 +114,7 @@ static void -page_count_change_cb(GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, GtkGaimScrollBook *scroll_book) +page_count_change_cb(GtkNotebook *notebook, GtkGaimScrollBook *scroll_book) { int index = gtk_notebook_get_current_page(GTK_NOTEBOOK(scroll_book->notebook)); #if GTK_CHECK_VERSION(2,2,0) @@ -183,8 +183,8 @@ gtk_box_pack_start(GTK_BOX(scroll_book), scroll_book->notebook, TRUE, TRUE, 0); - g_signal_connect(G_OBJECT(scroll_book->notebook), "page-added", G_CALLBACK(page_count_change_cb), scroll_book); - g_signal_connect(G_OBJECT(scroll_book->notebook), "page-removed", G_CALLBACK(page_count_change_cb), scroll_book); + g_signal_connect(G_OBJECT(scroll_book->notebook), "add", G_CALLBACK(page_count_change_cb), scroll_book); + g_signal_connect(G_OBJECT(scroll_book->notebook), "remove", G_CALLBACK(page_count_change_cb), scroll_book); g_signal_connect(G_OBJECT(scroll_book->notebook), "switch-page", G_CALLBACK(switch_page_cb), scroll_book); gtk_widget_hide(scroll_book->hbox); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-11-28 09:18:20
|
Revision: 17839 http://svn.sourceforge.net/gaim/?rev=17839&view=rev Author: thekingant Date: 2006-11-28 01:18:20 -0800 (Tue, 28 Nov 2006) Log Message: ----------- I find this to be slightly cleaner Modified Paths: -------------- trunk/libgaim/account.c trunk/libgaim/buddyicon.c Modified: trunk/libgaim/account.c =================================================================== --- trunk/libgaim/account.c 2006-11-28 09:05:34 UTC (rev 17838) +++ trunk/libgaim/account.c 2006-11-28 09:18:20 UTC (rev 17839) @@ -1232,9 +1232,8 @@ if (account->buddy_icon != NULL && (icon == NULL || strcmp(account->buddy_icon, icon))) { const char *dirname = gaim_buddy_icons_get_cache_dir(); - struct stat st; - if (g_stat(account->buddy_icon, &st) == 0) + if (g_file_test(account->buddy_icon, G_FILE_TEST_IS_REGULAR)) { /* The file exists. This is a full path. */ Modified: trunk/libgaim/buddyicon.c =================================================================== --- trunk/libgaim/buddyicon.c 2006-11-28 09:05:34 UTC (rev 17838) +++ trunk/libgaim/buddyicon.c 2006-11-28 09:18:20 UTC (rev 17839) @@ -492,12 +492,10 @@ } char *gaim_buddy_icons_get_full_path(const char *icon) { - struct stat st; - if (icon == NULL) return NULL; - if (g_stat(icon, &st) == 0) + if (g_file_test(icon, G_FILE_TEST_IS_REGULAR)) return g_strdup(icon); else return g_build_filename(gaim_buddy_icons_get_cache_dir(), icon, NULL); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-11-28 09:05:38
|
Revision: 17838 http://svn.sourceforge.net/gaim/?rev=17838&view=rev Author: thekingant Date: 2006-11-28 01:05:34 -0800 (Tue, 28 Nov 2006) Log Message: ----------- Validate the IP address entered by the user in prefs before trying to use it. This should fix a few crashes. I feel like we could get rid of gaim_network_ip_atoi() and just use inet_aton() Modified Paths: -------------- trunk/gtk/gtkprefs.c trunk/libgaim/core.c trunk/libgaim/network.c Modified: trunk/gtk/gtkprefs.c =================================================================== --- trunk/gtk/gtkprefs.c 2006-11-28 08:44:12 UTC (rev 17837) +++ trunk/gtk/gtkprefs.c 2006-11-28 09:05:34 UTC (rev 17838) @@ -967,6 +967,11 @@ static void network_ip_changed(GtkEntry *entry, gpointer data) { + /* + * TODO: It would be nice if we could validate this and show a + * red background in the box when the IP address is invalid + * and a green background when the IP address is valid. + */ gaim_network_set_public_ip(gtk_entry_get_text(entry)); } Modified: trunk/libgaim/core.c =================================================================== --- trunk/libgaim/core.c 2006-11-28 08:44:12 UTC (rev 17837) +++ trunk/libgaim/core.c 2006-11-28 09:05:34 UTC (rev 17838) @@ -136,7 +136,10 @@ gaim_xfers_init(); gaim_idle_init(); - /* Call this early on to try to auto-detect our IP address */ + /* + * Call this early on to try to auto-detect our IP address and + * hopefully save some time later. + */ gaim_network_get_my_ip(-1); if (ops != NULL && ops->ui_init != NULL) Modified: trunk/libgaim/network.c =================================================================== --- trunk/libgaim/network.c 2006-11-28 08:44:12 UTC (rev 17837) +++ trunk/libgaim/network.c 2006-11-28 09:05:34 UTC (rev 17838) @@ -166,7 +166,8 @@ /* Check if the user specified an IP manually */ if (!gaim_prefs_get_bool("/core/network/auto_ip")) { ip = gaim_network_get_public_ip(); - if ((ip != NULL) && (*ip != '\0')) + /* Make sure the IP address entered by the user is valid */ + if ((ip != NULL) && (gaim_network_ip_atoi(ip) != NULL)) return ip; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-11-28 08:44:13
|
Revision: 17837 http://svn.sourceforge.net/gaim/?rev=17837&view=rev Author: thekingant Date: 2006-11-28 00:44:12 -0800 (Tue, 28 Nov 2006) Log Message: ----------- Get rid of a silly prompt and skip straight to asking the Gaim user to enter a message to use when requesting authorization when adding an ICQ user to your buddylist Modified Paths: -------------- trunk/libgaim/protocols/oscar/oscar.c Modified: trunk/libgaim/protocols/oscar/oscar.c =================================================================== --- trunk/libgaim/protocols/oscar/oscar.c 2006-11-28 07:26:00 UTC (rev 17836) +++ trunk/libgaim/protocols/oscar/oscar.c 2006-11-28 08:44:12 UTC (rev 17837) @@ -2147,16 +2147,6 @@ } static void -gaim_auth_request_msgprompt(struct name_data *data) -{ - gaim_request_input(data->gc, NULL, _("Authorization Request Message:"), - NULL, _("Please authorize me!"), TRUE, FALSE, NULL, - _("OK"), G_CALLBACK(gaim_auth_request), - _("Cancel"), G_CALLBACK(oscar_free_name_data), - data); -} - -static void gaim_auth_dontrequest(struct name_data *data) { GaimConnection *gc = data->gc; @@ -2170,31 +2160,19 @@ static void -gaim_auth_sendrequest(GaimConnection *gc, char *name) +gaim_auth_sendrequest(GaimConnection *gc, const char *name) { - struct name_data *data = g_new0(struct name_data, 1); - GaimBuddy *buddy; - gchar *dialog_msg, *nombre; + struct name_data *data; - buddy = gaim_find_buddy(gc->account, name); - if (buddy && (gaim_buddy_get_alias_only(buddy))) - nombre = g_strdup_printf("%s (%s)", name, gaim_buddy_get_alias_only(buddy)); - else - nombre = NULL; - - dialog_msg = g_strdup_printf(_("The user %s requires authorization before being added to a buddy list. Do you want to send an authorization request?"), (nombre ? nombre : name)); + data = g_new0(struct name_data, 1); data->gc = gc; data->name = g_strdup(name); - data->nick = NULL; - gaim_request_action(gc, NULL, _("Request Authorization"), dialog_msg, - 0, data, 2, - _("_Request Authorization"), - G_CALLBACK(gaim_auth_request_msgprompt), - _("Cancel"), G_CALLBACK(gaim_auth_dontrequest)); - - g_free(dialog_msg); - g_free(nombre); + gaim_request_input(data->gc, NULL, _("Authorization Request Message:"), + NULL, _("Please authorize me!"), TRUE, FALSE, NULL, + _("OK"), G_CALLBACK(gaim_auth_request), + _("Cancel"), G_CALLBACK(gaim_auth_dontrequest), + data); } @@ -5821,7 +5799,8 @@ aim_locate_getinfoshort(gc->proto_data, gaim_buddy_get_name(buddy), 0x00000003); } -GList *oscar_buddy_menu(GaimBuddy *buddy) { +static GList * +oscar_buddy_menu(GaimBuddy *buddy) { GaimConnection *gc; OscarData *od; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-11-28 07:26:00
|
Revision: 17836 http://svn.sourceforge.net/gaim/?rev=17836&view=rev Author: thekingant Date: 2006-11-27 23:26:00 -0800 (Mon, 27 Nov 2006) Log Message: ----------- Warning fixes Modified Paths: -------------- trunk/gtk/gtkscrollbook.c trunk/gtk/gtkutils.c Modified: trunk/gtk/gtkscrollbook.c =================================================================== --- trunk/gtk/gtkscrollbook.c 2006-11-28 07:06:37 UTC (rev 17835) +++ trunk/gtk/gtkscrollbook.c 2006-11-28 07:26:00 UTC (rev 17836) @@ -89,7 +89,7 @@ { char *label; - gtk_widget_show_all(scroll_book); + gtk_widget_show_all(GTK_WIDGET(scroll_book)); if (count <= 1) gtk_widget_hide(GTK_WIDGET(scroll_book->hbox)); else Modified: trunk/gtk/gtkutils.c =================================================================== --- trunk/gtk/gtkutils.c 2006-11-28 07:06:37 UTC (rev 17835) +++ trunk/gtk/gtkutils.c 2006-11-28 07:26:00 UTC (rev 17836) @@ -2957,7 +2957,7 @@ gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), label_text); gtk_misc_set_alignment(GTK_MISC(label), 0.5, 0.5); gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0); - gtk_box_pack_end(GTK_CONTAINER(hbox2), button, FALSE, FALSE, 0); + gtk_box_pack_end(GTK_BOX(hbox2), button, FALSE, FALSE, 0); gtk_size_group_add_widget(sg, button); } va_end(args); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-11-28 07:06:38
|
Revision: 17835 http://svn.sourceforge.net/gaim/?rev=17835&view=rev Author: sadrul Date: 2006-11-27 23:06:37 -0800 (Mon, 27 Nov 2006) Log Message: ----------- Patch from wabz to: - Fix bug #1602136 - Better handle resizing of trees - Make the tooltip-info more closely resemble the tooltip-info in Gaim. Also remove some unnecessary debug statements. Modified Paths: -------------- trunk/console/gntblist.c trunk/console/gntstatus.c trunk/console/libgnt/gnttree.c Modified: trunk/console/gntblist.c =================================================================== --- trunk/console/gntblist.c 2006-11-28 06:59:48 UTC (rev 17834) +++ trunk/console/gntblist.c 2006-11-28 07:06:37 UTC (rev 17835) @@ -1016,7 +1016,6 @@ if (GAIM_BLIST_NODE_IS_CONTACT(node)) node = (GaimBlistNode*)gaim_contact_get_priority_buddy((GaimContact*)node); update_buddy_display((GaimBuddy*)node, ggblist); - gaim_debug_info("blist", "Tagged buddy\n"); } static void @@ -1059,7 +1058,6 @@ } } } - gaim_debug_info("blist", "Placed buddy\n"); } static void @@ -1150,9 +1148,12 @@ GaimPlugin *prpl; GaimPluginProtocolInfo *prpl_info; GaimAccount *account; + const char *alias = gaim_buddy_get_alias(buddy); account = gaim_buddy_get_account(buddy); - + + if (g_utf8_collate(gaim_buddy_get_name(buddy), alias)) + g_string_append_printf(str, _("Nickname: %s\n"), alias); g_string_append_printf(str, _("Account: %s (%s)"), gaim_account_get_username(account), gaim_account_get_protocol_name(account)); @@ -1230,12 +1231,9 @@ GaimBuddy *pr = gaim_contact_get_priority_buddy((GaimContact*)node); gboolean offline = !GAIM_BUDDY_IS_ONLINE(pr); gboolean showoffline = gaim_prefs_get_bool(PREF_ROOT "/showoffline"); - const char *alias = gaim_contact_get_alias((GaimContact*)node); const char *name = gaim_buddy_get_name(pr); - title = g_strdup(alias); - if (g_utf8_collate(alias, name)) - g_string_append_printf(str, _("Nickname: %s\n"), gaim_buddy_get_name(pr)); + title = g_strdup(name); tooltip_for_buddy(pr, str); for (node = node->child; node; node = node->next) { GaimBuddy *buddy = (GaimBuddy*)node; @@ -1251,7 +1249,6 @@ if (!showoffline && !GAIM_BUDDY_IS_ONLINE(buddy)) continue; str = g_string_append(str, "\n----------\n"); - g_string_append_printf(str, _("Nickname: %s\n"), gaim_buddy_get_name(buddy)); tooltip_for_buddy(buddy, str); } } else if (GAIM_BLIST_NODE_IS_BUDDY(node)) { @@ -1361,6 +1358,7 @@ !gaim_prefs_get_bool(PREF_ROOT "/showoffline")); } else if (strcmp(text, "t") == 0) { gg_blist_toggle_tag_buddy(gnt_tree_get_selection_data(GNT_TREE(ggblist->tree))); + gnt_bindable_perform_action_named(GNT_BINDABLE(ggblist->tree), "move-down"); } else if (strcmp(text, "a") == 0) { gg_blist_place_tagged(gnt_tree_get_selection_data(GNT_TREE(ggblist->tree))); } else @@ -1377,9 +1375,6 @@ contact = gaim_buddy_get_contact(buddy); - gaim_debug_fatal("sadrul", "updating display for %s\n", gaim_buddy_get_name(buddy)); - g_printerr("sadrul: updating display for %s\n", gaim_buddy_get_name(buddy)); - gnt_tree_change_text(GNT_TREE(ggblist->tree), buddy, 0, get_display_name((GaimBlistNode*)buddy)); gnt_tree_change_text(GNT_TREE(ggblist->tree), contact, 0, get_display_name((GaimBlistNode*)contact)); @@ -1428,7 +1423,6 @@ gnt_widget_get_size(w, &width, &height); gaim_prefs_set_int(PREF_ROOT "/size/width", width); gaim_prefs_set_int(PREF_ROOT "/size/height", height); - gnt_tree_set_col_width(GNT_TREE(ggblist->tree), 0, width - 1); } static void Modified: trunk/console/gntstatus.c =================================================================== --- trunk/console/gntstatus.c 2006-11-28 06:59:48 UTC (rev 17834) +++ trunk/console/gntstatus.c 2006-11-28 07:06:37 UTC (rev 17835) @@ -359,7 +359,8 @@ name = g_strdup_printf("%s (%s)", gaim_account_get_username(account), gaim_account_get_protocol_name(account)); gnt_tree_add_choice(GNT_TREE(edit->tree), key, - gnt_tree_create_row(GNT_TREE(edit->tree), name, type, message), NULL, NULL); + gnt_tree_create_row(GNT_TREE(edit->tree), + name, type ? type : "", message ? message : ""), NULL, NULL); if (sub) gnt_tree_set_choice(GNT_TREE(edit->tree), key, TRUE); Modified: trunk/console/libgnt/gnttree.c =================================================================== --- trunk/console/libgnt/gnttree.c 2006-11-28 06:59:48 UTC (rev 17834) +++ trunk/console/libgnt/gnttree.c 2006-11-28 07:06:37 UTC (rev 17835) @@ -669,6 +669,22 @@ } static void +gnt_tree_size_changed(GntWidget *widget, int w, int h) +{ + GntTree *tree = GNT_TREE(widget); + int i; + int n = 0; + if (widget->priv.width <= 0) + return; + for (i = 0; i < tree->ncol; ++i) + n += tree->columns[i].width; + if (GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_BORDER)) + tree->columns[tree->ncol - 1].width += widget->priv.width - n - 1 * tree->ncol; + else + tree->columns[tree->ncol - 1].width += widget->priv.width - n - 2 - 1 * tree->ncol; +} + +static void gnt_tree_class_init(GntTreeClass *klass) { GntBindableClass *bindable = GNT_BINDABLE_CLASS(klass); @@ -679,6 +695,7 @@ parent_class->size_request = gnt_tree_size_request; parent_class->key_pressed = gnt_tree_key_pressed; parent_class->clicked = gnt_tree_clicked; + parent_class->size_changed = gnt_tree_size_changed; signals[SIG_SELECTION_CHANGED] = g_signal_new("selection-changed", This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-11-28 06:59:48
|
Revision: 17834 http://svn.sourceforge.net/gaim/?rev=17834&view=rev Author: thekingant Date: 2006-11-27 22:59:48 -0800 (Mon, 27 Nov 2006) Log Message: ----------- I don't think these parameters are allowed to be null... it looks like it can cause crashes. See Red Hat bug #217335. Thanks to Nalin Dahyabhai for pin pointing the cause of the crash. http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=217335 Modified Paths: -------------- trunk/libgaim/protocols/jabber/auth.c Modified: trunk/libgaim/protocols/jabber/auth.c =================================================================== --- trunk/libgaim/protocols/jabber/auth.c 2006-11-28 06:37:12 UTC (rev 17833) +++ trunk/libgaim/protocols/jabber/auth.c 2006-11-28 06:59:48 UTC (rev 17834) @@ -753,7 +753,9 @@ * should try one more round against it */ if (js->sasl_state != SASL_OK) { - js->sasl_state = sasl_client_step(js->sasl, NULL, 0, NULL, NULL, NULL); + const char *c_out; + unsigned int clen; + js->sasl_state = sasl_client_step(js->sasl, NULL, 0, NULL, &c_out, &clen); if (js->sasl_state != SASL_OK) { /* This should never happen! */ gaim_connection_error(js->gc, _("Invalid response from server.")); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |