org.guifications.plugins: beacb4988ca80e4a1ac0e423ccbd4c7c9310e147
grim at guifications.org
grim at guifications.org
Fri Jul 4 22:20:04 CDT 2008
-----------------------------------------------------------------
Revision: beacb4988ca80e4a1ac0e423ccbd4c7c9310e147
Ancestor: 59728386a81b657f620accc81feb6f3f627122b8
Author: grim at guifications.org
Date: 2008-07-05T03:16:15
Branch: org.guifications.plugins
Modified files:
msglen/msglen.c msglen/plugins.cfg
ChangeLog:
This is better, but still really broken, as such i'm marking it incomplete
-----------------------------------------------------------------
This revision's diffstat output:
msglen.c | 58 ++++++++++++++++++++++++++++++++++++++++------------------
plugins.cfg | 2 +-
2 files changed, 41 insertions(+), 19 deletions(-)
-------------- next part --------------
============================================================
--- msglen/msglen.c 038681eab61ec0e29c90f58bbe44437903948bf9
+++ msglen/msglen.c e294a0650f89d1c4671bf5be1035e101cba41763
@@ -37,6 +37,7 @@ typedef struct {
PurpleConversation *conv;
PidginWindow *win;
GtkWidget *label;
+ gulong sig_id;
} MsgLenData;
/******************************************************************************
@@ -50,7 +51,6 @@ msg_len_data_free(MsgLenData *mld) {
static void
msg_len_data_free(MsgLenData *mld) {
mld->win = NULL;
- mld->conv = NULL;
if(mld->label && GTK_IS_LABEL(mld->label))
gtk_widget_destroy(mld->label);
@@ -80,24 +80,22 @@ static void
}
static void
-msg_len_update(PidginWindow *win, PurpleConversation *conv) {
- PidginConversation *gtkconv = NULL;
- MsgLenData *mld = NULL;
- gchar *text = NULL;
- gint count = 0;
+msg_len_add_signal(PidginConversation *pconv, MsgLenData *mld) {
+ g_signal_connect(G_OBJECT(pconv->entry),
+ "key-release-event",
+ G_CALLBACK(msg_len_key_released_cb), mld);
+}
- g_return_if_fail(win);
- g_return_if_fail(conv);
+static MsgLenData *
+msg_len_find_data(PidginWindow *win) {
+ MsgLenData *mld = NULL;
- gtkconv = PIDGIN_CONVERSATION(conv);
+ mld = g_hash_table_lookup(data, win);
- mld = g_hash_table_lookup(data, conv);
-
if(mld == NULL) {
mld = g_new0(MsgLenData, 1);
mld->win = win;
- mld->conv = conv;
mld->label = gtk_label_new("");
pidgin_menu_tray_append(PIDGIN_MENU_TRAY(win->menu.tray), mld->label,
@@ -106,18 +104,34 @@ msg_len_update(PidginWindow *win, Purple
g_signal_connect_swapped(G_OBJECT(mld->label), "destroy",
G_CALLBACK(g_nullify_pointer), &mld->label);
+ }
- g_signal_connect(G_OBJECT(gtkconv->entry), "key-release-event",
- G_CALLBACK(msg_len_key_released_cb), mld);
- }
+ return mld;
+}
+static void
+msg_len_update(PidginWindow *win, PurpleConversation *conv) {
+ PidginConversation *gtkconv = NULL;
+ MsgLenData *mld = NULL;
+ gchar *text = NULL;
+ gint count = 0;
+
+ g_return_if_fail(win);
+ g_return_if_fail(conv);
+
+ gtkconv = PIDGIN_CONVERSATION(conv);
+
+ mld = msg_len_find_data(win);
+
+ mld->conv = conv;
+
count = gtk_text_buffer_get_char_count(gtkconv->entry_buffer);
text = g_strdup_printf("%d", count);
gtk_label_set_text(GTK_LABEL(mld->label), text);
g_free(text);
- g_hash_table_insert(data, conv, mld);
+ g_hash_table_insert(data, win, mld);
}
/******************************************************************************
@@ -127,7 +141,12 @@ msg_len_conv_created_cb(PurpleConversati
msg_len_conv_created_cb(PurpleConversation *conv, gpointer d) {
PidginConversation *pconv = PIDGIN_CONVERSATION(conv);
PidginWindow *win = pidgin_conv_get_window(pconv);
+ MsgLenData *mld = NULL;
+ mld = msg_len_find_data(win);
+
+ msg_len_add_signal(pconv, mld);
+
msg_len_update(win, conv);
}
@@ -166,9 +185,12 @@ plugin_load(PurplePlugin *plugin) {
for(convs = purple_get_conversations(); convs; convs = convs->next) {
PurpleConversation *conv = (PurpleConversation *)convs->data;
- PidginConversation *gtkconv = PIDGIN_CONVERSATION(conv);
+ PidginConversation *pconv = PIDGIN_CONVERSATION(conv);
+ MsgLenData *mld = msg_len_find_data(pconv->win);
- msg_len_update(gtkconv->win, conv);
+ msg_len_add_signal(pconv, mld);
+
+ msg_len_update(pconv->win, conv);
}
return TRUE;
============================================================
--- msglen/plugins.cfg 7ea67988aa80171a21940eac2c7f47e57f241d6b
+++ msglen/plugins.cfg 8f559b867f8e7f805c466bad72187c9f4e8f8bc2
@@ -1,5 +1,5 @@
[Message Length]
-type=default
+type=incomplete
depends=pidgin
provides=msglen
summary=Shows the length of your current message in the menu tray
More information about the Plugins-commits
mailing list