PATCH: Compose Coordinates *FINAL*



hi,

since christophe barbe mentioned some -Werror problems
during compile, here is another reworked version. hope
this solves all unbehaves (i hope).

you need a more or less recent CVS to use this patch.
this patch is of its own and affects the file

src/sendmsg-window.c

please test, if there are still issues then please let
me know (preferabely with 1-2 comments of howto solve)

thank you.

-- 
Name....: Ali Akcaagac
Status..: Student Of Computer & Economic Science
E-Mail..: mailto:ali.akcaagac@stud.fh-wilhelmshaven.de
WWW.....: http://www.fh-wilhelmshaven.de/~akcaagaa
--- /mnt/private/temp/cvstree/balsa/src/sendmsg-window.c	Sun Aug 19 21:53:33 2001
+++ balsa/src/sendmsg-window.c	Mon Aug 20 11:12:51 2001
@@ -76,6 +76,8 @@
 
 #define GNOME_MIME_BUG_WORKAROUND 1
 
+GnomeAppBar *appbar2;
+
 static gchar *read_signature(BalsaSendmsg *msg);
 static gint include_file_cb(GtkWidget *, BalsaSendmsg *);
 static gint send_message_cb(GtkWidget *, BalsaSendmsg *);
@@ -118,6 +120,8 @@
 
 static void sw_size_alloc_cb(GtkWidget * window, GtkAllocation * alloc);
 
+static gint balsa_key_press_event_cb(GtkWidget *widget, GdkEventKey *event, gpointer data);
+
 /* Standard DnD types */
 enum {
     TARGET_URI_LIST,
@@ -1160,6 +1164,12 @@
     GtkWidget *table;
 
     msg->text = gtk_text_new(NULL, NULL);
+
+    gtk_signal_connect_after(GTK_OBJECT(msg->text), "key_press_event",
+			     GTK_SIGNAL_FUNC(balsa_key_press_event_cb), msg);
+    gtk_signal_connect_after(GTK_OBJECT(msg->text), "map_event",
+			     GTK_SIGNAL_FUNC(balsa_key_press_event_cb), msg);
+
     gtk_text_set_editable(GTK_TEXT(msg->text), TRUE);
     gtk_text_set_word_wrap(GTK_TEXT(msg->text), TRUE);
     balsa_spell_check_set_text(BALSA_SPELL_CHECK(msg->spell_checker),
@@ -1176,6 +1186,97 @@
     return table;
 }
 
+static gint
+balsa_key_press_event_cb(GtkWidget *widget, GdkEventKey *event, gpointer data)
+{
+    gchar *message = NULL;
+    gchar *symbol = NULL;
+    gchar *statustext = NULL;
+
+    gint index = 0;
+
+    int lines = 1;
+    int rows = 1;
+    int words = 0;
+    int size = 0;
+    int x = 1;
+    int y = 1;
+
+    int hexval = 0;
+    int wordflag = 0;
+
+    /* initialize the power-ascii-table for chars < 0x20 */
+    gchar *lowsymbols[] = {
+	N_("Null"),			N_("Start of Heading"),
+	N_("Start of Text"),		N_("End of Text"),
+	N_("End of Transmission"),	N_("Enquiry"),
+	N_("Acknowledge"),		N_("Bell"),
+	N_("Backspace"),		N_("Horizontal Tabulation"),
+	N_("Line Feed"),		N_("Vertical Tabulation"),
+	N_("Form Feed"),		N_("Carriage Return"),
+	N_("Shift Out"),		N_("Shift In"),
+	N_("Data Link Escape"),		N_("Device Control 1"),
+	N_("Device Control 2"),		N_("Device Control 3"),
+	N_("Device Control 4"),		N_("Negative Acknowledge"),
+	N_("Synchronous Idle"),		N_("End of Transmission Block"),
+	N_("Cancel"),			N_("End of Medium"),
+	N_("Substitute"),		N_("Escape"),
+	N_("File Separator"),		N_("Group Separator"),
+	N_("Record Separator"),		N_("Unit Separator")
+    };
+
+    /* get the message body */
+    message = gtk_editable_get_chars(GTK_EDITABLE(GTK_TEXT(((BalsaSendmsg *) data)->text)), 0, -1);
+
+    /* get the index of the cursor */
+    index = gtk_editable_get_position(GTK_EDITABLE(GTK_TEXT(((BalsaSendmsg *) data)->text)));
+
+    /* lines: get the total lines of the message */
+    /* words: get the total words of the message */
+    /* size: get the total size of the message */
+    /* x/y: get the x/y origin within the message */
+    while (message[size] != '\0') {
+	if (message[size] == '\n') {
+	    lines++;
+	    rows = 1;
+	} else {
+	    rows++;
+	}
+
+	if (message[size] == '\n' || message[size] == '\t'|| message[size] == ' ') {
+	    wordflag = 0;
+	} else if (wordflag == 0) {
+	    wordflag = 1;
+	    words++;
+	}
+
+	if (size < (int)index) {
+	    x = rows;
+	    y = lines;
+	}
+
+	size++;
+    }
+
+    /* get the symbol within the text and the hexval */
+    hexval = message[(int)index];
+    symbol = g_strdup_printf("%c", hexval);
+
+    if (hexval <= 0x1f && hexval >= 0x00) {
+	g_free(symbol);
+	symbol = lowsymbols[hexval];
+    }
+
+    /* output the stuff to the appbar */
+    statustext = g_strdup_printf(_("Size: %d bytes, Lines: %d, Words: %d, Index: %d, X: %d, Y: %d, Char: 0x%x => '%s'."), size, lines, words, (int)index, x, y, hexval, symbol);
+    gnome_appbar_set_default(appbar2, statustext);
+
+    g_free(message);
+    g_free(statustext);
+
+    return TRUE;
+}
+
 /* continueBody ---------------------------------------------------------
    a short-circuit procedure for the 'Continue action'
    basically copies the text over to the entry field.
@@ -1523,6 +1624,10 @@
     /* create text area for the message */
     gtk_paned_add2(GTK_PANED(paned), create_text_area(msg));
 
+    /* FIXME: create statusbar, this is only temporarely and needs fix */
+    appbar2 = GNOME_APPBAR(gnome_appbar_new(TRUE, TRUE, GNOME_PREFERENCES_USER));
+    gnome_app_set_statusbar(GNOME_APP(window), GTK_WIDGET(appbar2));
+
     /* fill in that info: */
 
     /* To: */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]