Mercurial > pidgin.yaz
changeset 7851:3eab6ac5e4a7
[gaim-migrate @ 8505]
begone old foul code!
committer: Tailor Script <tailor@pidgin.im>
author | Nathan Walp <nwalp@pidgin.im> |
---|---|
date | Sat, 13 Dec 2003 19:04:09 +0000 |
parents | 9ca340251309 |
children | fdbac6662b04 |
files | plugins/Makefile.am plugins/gtik.c |
diffstat | 2 files changed, 0 insertions(+), 1046 deletions(-) [+] |
line wrap: on
line diff
--- a/plugins/Makefile.am Sat Dec 13 18:35:38 2003 +0000 +++ b/plugins/Makefile.am Sat Dec 13 19:04:09 2003 +0000 @@ -51,7 +51,6 @@ ChangeLog HOWTO \ filectl.c \ mailchk.c \ - gtik.c \ raw.c \ signals-test.c \ simple.c \
--- a/plugins/gtik.c Sat Dec 13 18:35:38 2003 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1045 +0,0 @@ -/* - * GNOME Stock Ticker - * (C) 2000 Jayson Lorenzen, Jim Garrison, Rached Blili - * - * based on: - * desire, and the old great slash applet. - * - * - * Authors: Jayson Lorenzen (jaysonl@pacbell.net) - * Jim Garrison (garrison@users.sourceforge.net) - * Rached Blili (striker@Dread.net) - * - * The Gnome Stock Ticker is a free, Internet based application. - * These quotes are not guaranteed to be timely or accurate. - * - * Do not use the Gnome Stock Ticker for making investment decisions, - * it is for informational purposes only. - * - * Modified by EWarmenhoven to become a gaim plugin. There was little - * enough that needed to be changed that I can't really claim any credit. - * (you need to add -lghttp to the GTK_LIBS part of the Makefile) - * TODO: config, saving info - * - */ - -#define GAIM_PLUGINS -#include "gaim.h" - -#include <gtk/gtk.h> -#include <time.h> -#include <stdlib.h> -#include <stdio.h> -#include <string.h> - -#include "ghttp.h" -#include <sys/stat.h> -#include <unistd.h> -#include <dirent.h> -#include <gdk/gdkx.h> - - - GtkWidget *applet; /* this will become the main window */ - GtkWidget *label; - - - static GdkPixmap *pixmap = NULL; - GtkWidget * drawing_area; - - int location; - int MOVE; - - char output[64]; - - /** - * FOR COLOR - * LEN and the length of output, and colorNum must match - */ - const int LEN = 20; - char outputArray[20][64]; - char changeArray[20][64]; - int colorArray[20]; - - const int RED = 1; - const int GREEN = 2; - - static const int max_rgb_str_len = 7; - static const int max_rgb_str_size = 8; - - int setCounter, getCounter, setColorCounter,getColorCounter; - - GdkGC *gc; - GdkColor gdkUcolor,gdkDcolor; - - /* end of COLOR vars */ - - - char configFileName[256]; - - - /* properties vars */ - - GtkWidget *tik_syms_entry; - gchar tik_syms[256]; - - GtkWidget * pb = NULL; - - typedef struct - { - char *tik_syms; - char *output; - char *scroll; - gint timeout; - gchar dcolor[8]; - gchar ucolor[8]; - - } gtik_properties; - - gtik_properties props = {"cald+rhat+corl","default","right2left", - 5,"#ff0000","#00ff00"}; - - /* end prop vars */ - - - gint timeout = 0; - gint drawTimeID, updateTimeID; - GdkFont * my_font; - GdkFont * extra_font; - GdkFont * small_font; - static gint symbolfont = 1; - static gint destroycb; - - - int configured(); - void timeout_cb( GtkWidget *widget, GtkWidget *spin ); - static int http_get_to_file(gchar *a_host, gint a_port, - gchar *a_resource, FILE *a_file); - int http_got(); - void properties_save( char *path) ; - void gaim_plugin_remove(); - - - /* FOR COLOR */ - - void updateOutput() ; - static void reSetOutputArray() ; - static void setOutputArray(char *param1) ; - static void setColorArray(int theColor) ; - void setup_colors(void); - int create_gc(void) ; - - /* end of color funcs */ - - - - /*-----------------------------------------------------------------*/ - void remove_self(GtkWidget *w, void *handle) - { - gtk_signal_disconnect(G_OBJECT(applet), destroycb); - if (drawTimeID > 0) { g_source_remove(drawTimeID); } - if (updateTimeID >0) { g_source_remove(updateTimeID); } - gtk_widget_destroy(applet); - gaim_plugin_unload_self(handle); - } - - - /*-----------------------------------------------------------------*/ - void load_fonts() - { - my_font = gdk_font_load ("fixed"); - extra_font = gdk_font_load ("-urw-symbol-medium-r-normal-*-*-100-*-*-p-*-adobe-fontspecific"); - small_font = gdk_font_load ("-schumacher-clean-medium-r-normal-*-*-100-*-*-c-*-iso8859-1"); - - /* If fonts do not load */ - if (!my_font) - g_error("Could not load fonts!"); - if (!extra_font) { - extra_font = gdk_font_load("fixed"); - symbolfont = 0; - } - if (!small_font) - small_font = gdk_font_load("fixed"); - } - - /*-----------------------------------------------------------------*/ - /*void load_properties( char *path) { - - - gnome_config_push_prefix (path); - if( gnome_config_get_string ("gtik/tik_syms") != NULL ) - props.tik_syms = gnome_config_get_string("gtik/tik_syms"); - - - timeout = gnome_config_get_int("gtik/timeout") > 0 ? gnome_config_get_int ("gtik/timeout") : props.timeout; - - - if ( gnome_config_get_string ("gtik/output") != NULL ) - props.output = gnome_config_get_string("gtik/output"); - - if ( gnome_config_get_string ("gtik/scroll") != NULL ) - props.scroll = gnome_config_get_string("gtik/scroll"); - - if ( gnome_config_get_string ("gtik/ucolor") != NULL ) - strcpy(props.ucolor, gnome_config_get_string("gtik/ucolor")); - - if ( gnome_config_get_string ("gtik/dcolor") != NULL ) - strcpy(props.dcolor, gnome_config_get_string("gtik/dcolor")); - - gnome_config_pop_prefix (); - }*/ - - - - /*-----------------------------------------------------------------*/ - /*void properties_save( char *path) { - - gnome_config_push_prefix (path); - gnome_config_set_string( "gtik/tik_syms", props.tik_syms ); - gnome_config_set_string( "gtik/output", props.output ); - gnome_config_set_string( "gtik/scroll", props.scroll ); - gnome_config_set_string( "gtik/ucolor", props.ucolor ); - gnome_config_set_string( "gtik/dcolor", props.dcolor ); - - gnome_config_set_int("gtik/timeout",props.timeout); - - gnome_config_pop_prefix (); - gnome_config_sync(); - gnome_config_drop_all(); - }*/ - - - /*-----------------------------------------------------------------*/ - char * extractText(const char *line) { - - int i=0; - int j=0; - static char Text[256]=""; - - while (i < (strlen(line) -1)) { - if (line[i] != '>') - i++; - else { - i++; - while (line[i] != '<') { - Text[j] = line[i]; - i++;j++; - } - } - } - Text[j] = '\0'; - i = 0; - while (i < (strlen(Text)) ) { - if (Text[i] < 32) - Text[i] = '\0'; - i++; - } - return(Text); - - } - - /*-----------------------------------------------------------------*/ - char * parseQuote(FILE *CONFIG, char line[512]) { - - char symbol[512]; - char buff[512]; - char price[16]; - char change[16]; - char percent[16]; - static char result[512]=""; - int linenum=0; - int AllOneLine=0; - int flag=0; - char *section; - char *ptr; - - if (strlen(line) > 64) AllOneLine=1; - - if (AllOneLine) { - strcpy(buff,line); - while (!flag) { - if ((ptr=strstr(buff,"</td>"))!=NULL) { - ptr[0] = '|'; - } - else flag=1; - } - section = strtok(buff,"|"); - } - /* Get the stock symbol */ - if (!AllOneLine) strcpy(symbol,extractText(line)); - else strcpy(symbol,extractText(section)); - linenum++; - - /* Skip the time... */ - if (!AllOneLine) fgets(line,255,CONFIG); - else section = strtok(NULL,"|"); - linenum++; - - while (linenum < 8 ) { - if (!AllOneLine) { - fgets(line,255,CONFIG); - - if (strstr(line, - "<td align=center nowrap colspan=2>")) { - strcpy(change,""); - strcpy(percent,""); - linenum=100; - } - } - else { - section = strtok(NULL,"|"); - if (strstr(section, - "<td align=center nowrap colspan=2>")) { - strcpy(change,""); - strcpy(percent,""); - linenum=100; - } - } - - if (linenum == 2) { - if (!AllOneLine) - strcpy(price,extractText(line)); - else - strcpy(price,extractText(section)); - } - else if (linenum == 3) { - if (!AllOneLine) - strcpy(change,extractText(line)); - else - strcpy(change,extractText(section)); - - if (strstr(change,"-")) { - setColorArray(RED); - } - else if (strstr(change,"+")) { - setColorArray(GREEN); - } - else { - setColorArray(0); - } - - } - else if (linenum == 4) { - if (!AllOneLine) - strcpy(percent,extractText(line)); - else - strcpy(percent,extractText(section)); - } - linenum++; - } - sprintf(result,"%s:%s:%s:%s", - symbol,price,change,percent); - return(result); - - } - - - - /*-----------------------------------------------------------------*/ - int configured() { - int retVar; - - char buffer[512]; - static FILE *CONFIG; - - CONFIG = fopen((const char *)configFileName,"r"); - - retVar = 0; - - /* clear the output variable */ - reSetOutputArray(); - - if ( CONFIG ) { - while ( !feof(CONFIG) ) { - fgets(buffer,511,CONFIG); - - if (strstr(buffer, - "<td nowrap align=left><a href=\"/q\?s=")) { - - setOutputArray(parseQuote(CONFIG,buffer)); - retVar = 1; - } - else { - retVar = (retVar > 0) ? retVar : 0; - } - } - fclose(CONFIG); - - } - else { - retVar = 0; - } - - return retVar; - } - - - /*-----------------------------------------------------------------*/ - /* Shamelessly stolen from the Slashapp applet - */ - static int http_get_to_file(gchar *a_host, gint a_port, - gchar *a_resource, FILE *a_file) { - int length = -1; - ghttp_request *request = NULL; - gchar s_port[8]; - gchar *uri = NULL; - gchar *body; - gchar *proxy = g_getenv("http_proxy"); - - g_snprintf(s_port, 8, "%d", a_port); - uri = g_strconcat("http://", a_host, ":", s_port, - a_resource, NULL); - - fprintf(stderr,"Asking for %s\n", uri); - - request = ghttp_request_new(); - if (!request) - goto ec; - if (proxy && (ghttp_set_proxy(request,proxy) != 0)) - goto ec; - - if (ghttp_set_uri(request, uri) != 0) - goto ec; - ghttp_set_header(request, http_hdr_Connection, "close"); - if (ghttp_prepare(request) != 0) - goto ec; - if (ghttp_process(request) != ghttp_done) - goto ec; - length = ghttp_get_body_len(request); - body = ghttp_get_body(request); - if (body != NULL) - fwrite(body, length, 1, a_file); - - ec: - if (request) - ghttp_request_destroy(request); - if (uri) - - g_free(uri); - return length; - } - - - - - /*-----------------------------------------------------------------*/ - int http_got() { - - int retVar; - FILE *local_file; - - char tmpBuff[256]; - memset(tmpBuff,0,sizeof(tmpBuff)); - - strcat(tmpBuff,"/q?s="); - strcat(tmpBuff, props.tik_syms); - strcat(tmpBuff,"&d=v2"); - - retVar = 0; - - local_file = fopen(configFileName, "w"); - retVar = http_get_to_file("finance.yahoo.com", 80, - tmpBuff, local_file); - - fclose(local_file); - - return retVar; - } - - - - - - /*-----------------------------------------------------------------*/ - gint expose_event (GtkWidget *widget,GdkEventExpose *event) { - - gdk_draw_pixmap(widget->window, - widget->style->fg_gc[GTK_WIDGET_STATE(widget)], - pixmap, - event->area.x, event->area.y, - event->area.x, event->area.y, - event->area.width,event->area.height); - - return FALSE; - } - - - - /*-----------------------------------------------------------------*/ - static gint configure_event(GtkWidget *widget,GdkEventConfigure *event){ - - if(pixmap) { - gdk_pixmap_unref (pixmap); - } - - pixmap = gdk_pixmap_new(widget->window, - widget->allocation.width, - widget->allocation.height, - -1); - - return TRUE; - } - - - - - - - /*-----------------------------------------------------------------*/ - gint Repaint (gpointer data) { - GtkWidget* drawing_area = (GtkWidget *) data; - GdkRectangle update_rect; - int comp; - - /* FOR COLOR */ - char *tmpSym; - int totalLoc; - int totalLen; - int i; - - - totalLoc = 0; - totalLen = 0; - - /* clear the pixmap */ - gdk_draw_rectangle (pixmap, - drawing_area->style->black_gc, - TRUE, - 0,0, - drawing_area->allocation.width, - drawing_area->allocation.height); - - - for(i=0;i<LEN;i++) { - totalLen += strlen(outputArray[i]); - } - if (!strcmp(props.output,"default")) { - for(i=0;i<LEN;i++) { - totalLen += strlen(changeArray[i]); - } - } - - comp = 1 - ( totalLen *8 ); - - if (MOVE == 1) { MOVE = 0; } else { MOVE = 1; } - - if (MOVE == 1) { - - - if (!strcmp(props.scroll,"right2left")) { - if (location > comp) { - location--; - } - else { - location = drawing_area->allocation.width; - } - - } - else { - if (location < drawing_area->allocation.width) { - location ++; - } - else { - location = comp; - } - } - - - - } - - for (i=0;i<LEN;i++) { - - /* COLOR */ - if (colorArray[i] == GREEN) { - gdk_gc_set_foreground( gc, &gdkUcolor ); - } - else if (colorArray[i] == RED) { - gdk_gc_set_foreground( gc, &gdkDcolor ); - } - else { - gdk_gc_copy( gc, drawing_area->style->white_gc ); - } - - tmpSym = outputArray[i]; - gdk_draw_string (pixmap,my_font, - gc, - location + (totalLoc * 6 ) ,12,outputArray[i]); - totalLoc += (strlen(tmpSym) + 1); - - - if (!strcmp(props.output,"default")) { - tmpSym = changeArray[i]; - if (*(changeArray[i])) - gdk_draw_text (pixmap,extra_font, - gc, location + (totalLoc * 6) , - 12,changeArray[i],1); - gdk_draw_string (pixmap,small_font, - gc, location + ((totalLoc +2) * 6) , - 12, &changeArray[i][1]); - totalLoc += (strlen(tmpSym) + 1); - } - - } - update_rect.x = 0; - update_rect.y = 0; - update_rect.width = drawing_area->allocation.width; - update_rect.height = drawing_area->allocation.height; - - gtk_widget_draw(drawing_area,&update_rect); - return 1; - } - - - - - /*-----------------------------------------------------------------*/ - - struct gaim_plugin_description desc; - struct gaim_plugin_description *gaim_plugin_desc() { - desc.api_version = GAIM_PLUGIN_API_VERSION; - desc.name = g_strdup("Stock Ticker"); - desc.version = g_strdup(VERSION); - desc.description = g_strdup( - " This program uses ghttp to connect to " - "a popular stock quote site, then downloads " - "and parses the html returned from the " - "site to scroll delayed quotes" - "\n\n The Gnome Stock Ticker is a free, Internet based application. These quotes are not " - "guaranteed to be timely or accurate. " - "Do not use the Gnome Stock Ticker for making investment decisions; it is for " - "informational purposes only."); - desc.authors = g_strdup("Jayson Lorenzen, Jim Garrison, Rached Blili"); - desc.url = g_strdup(GAIM_WEBSITE); - return &desc; - } - - char *description() { - return - " This program uses ghttp to connect to " - "a popular stock quote site, then downloads " - "and parses the html returned from the " - "site to scroll delayed quotes" - "\n\n The Gnome Stock Ticker is a free, Internet based application. These quotes are not " - "guaranteed to be timely or accurate. " - "Do not use the Gnome Stock Ticker for making investment decisions; it is for " - "informational purposes only." - "\n\n (C) 2000 Jayson Lorenzen, Jim Garrison, Rached Blili"; - } - - char *name() { - return "The Gnome Stock Ticker for Gaim"; - } - - - - - - - /*-----------------------------------------------------------------*/ - void changed_cb(GtkWidget *pb, gpointer data) { - /* gnome_property_box_changed(GNOME_PROPERTY_BOX(pb)); */ - } - - - /*-----------------------------------------------------------------*/ - void toggle_output_cb(GtkWidget *widget, gpointer data) { - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) - props.output = g_strdup("nochange"); - else - props.output = g_strdup("default"); - - } - - /*-----------------------------------------------------------------*/ - void toggle_scroll_cb(GtkWidget *widget, gpointer data) { - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) - props.scroll = g_strdup("left2right"); - else - props.scroll = g_strdup("right2left"); - - } - - /*-----------------------------------------------------------------*/ - void timeout_cb( GtkWidget *widget, GtkWidget *spin ) { - timeout=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spin)); - /* gnome_property_box_changed(GNOME_PROPERTY_BOX(pb)); */ - } - - - - - /*-----------------------------------------------------------------*/ - static void apply_cb( GtkWidget *widget, void *data ) { - char *tmpText; - - - tmpText = gtk_entry_get_text(GTK_ENTRY(tik_syms_entry)); - props.tik_syms = g_strdup(tmpText); - if (props.timeout) { - props.timeout = timeout > 0 ? timeout : props.timeout; - } - - /* properties_save(APPLET_WIDGET(applet)->privcfgpath); */ - - setup_colors(); - updateOutput(); - } - - - - - /*-----------------------------------------------------------------*/ - gint destroy_cb( GtkWidget *widget, void *data ) { - pb = NULL; - return FALSE; - } - - - - /*-----------------------------------------------------------------*/ - void gaim_plugin_config() { - GtkWidget * vbox; - GtkWidget *urlcheck, *launchcheck; - - GtkWidget *panela, *panel1 ,*panel2, *panel3, *panel4; - GtkWidget *label1,*label2,*label3 ; - - - GtkWidget *timeout_label,*timeout_c; - GtkObject *timeout_a; - - GtkWidget *upColor, *downColor, *upLabel, *downLabel; - GtkWidget *check,*check2; - - int ur,ug,ub, dr,dg,db; - - if (pb) return; - pb = gtk_window_new(GTK_WINDOW_TOPLEVEL); - - gtk_window_set_title(GTK_WINDOW(pb), _("Gnome Stock Ticker Properties")); - - vbox = gtk_vbox_new(FALSE, 8); - - panela = gtk_hbox_new(FALSE, 5); - panel1 = gtk_hbox_new(FALSE, 5); - panel2 = gtk_hbox_new(FALSE, 5); - panel3 = gtk_hbox_new(FALSE, 5); - panel4 = gtk_hbox_new(FALSE, 5); - - gtk_container_set_border_width(GTK_CONTAINER(vbox), 8); - - timeout_label = gtk_label_new(_("Update Frequency in min")); - timeout_a = gtk_adjustment_new( timeout, 0.5, 128, 1, 8, 8 ); - timeout_c = gtk_spin_button_new( GTK_ADJUSTMENT(timeout_a), 1, 0 ); - - gtk_box_pack_start_defaults( GTK_BOX(panel2), timeout_label ); - gtk_box_pack_start_defaults( GTK_BOX(panel2), timeout_c ); - - g_signal_connect_swapped(G_OBJECT(timeout_c), "changed",G_CALLBACK(changed_cb),G_OBJECT(pb)); - - g_signal_connect( G_OBJECT(timeout_a),"value_changed", - G_CALLBACK(timeout_cb), timeout_c ); - g_signal_connect( G_OBJECT(timeout_c),"changed", - G_CALLBACK(timeout_cb), timeout_c ); - gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON(timeout_c), - GTK_UPDATE_ALWAYS ); - - label1 = gtk_label_new(_("Enter symbols delimited with \"+\" in the box below.")); - - tik_syms_entry = gtk_entry_new_with_max_length(60); - - /* tik_syms var is her if want a default value */ - gtk_entry_set_text(GTK_ENTRY(tik_syms_entry), props.tik_syms ? props.tik_syms : tik_syms); - g_signal_connect_swapped(G_OBJECT(tik_syms_entry), "changed",G_CALLBACK(changed_cb),G_OBJECT(pb)); - - /* OUTPUT FORMAT and SCROLL DIRECTION */ - - label2 = gtk_label_new(_("Check this box to display only symbols and price:")); - label3 = gtk_label_new(_("Check this box to scroll left to right:")); - check = gtk_check_button_new(); - check2 = gtk_check_button_new(); - gtk_box_pack_start_defaults(GTK_BOX(panel3),label2); - gtk_box_pack_start_defaults(GTK_BOX(panel3),check); - gtk_box_pack_start_defaults(GTK_BOX(panel4),label3); - gtk_box_pack_start_defaults(GTK_BOX(panel4),check2); - - /* Set the checkbox according to current prefs */ - if (strcmp(props.output,"default")!=0) - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), - TRUE); - g_signal_connect_swapped(G_OBJECT(check),"toggled", - G_CALLBACK(changed_cb),G_OBJECT(pb)); - g_signal_connect(G_OBJECT(check),"toggled", - G_CALLBACK(toggle_output_cb),NULL); - - /* Set the checkbox according to current prefs */ - if (strcmp(props.scroll,"right2left")!=0) - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check2), - TRUE); - g_signal_connect_swapped(G_OBJECT(check2),"toggled", - G_CALLBACK(changed_cb),G_OBJECT(pb)); - g_signal_connect(G_OBJECT(check2),"toggled", - G_CALLBACK(toggle_scroll_cb),NULL); - - /* COLOR */ -/* upLabel = gtk_label_new(_("+ Color")); - upColor = gnome_color_picker_new(); - - sscanf( props.ucolor, "#%02x%02x%02x", &ur,&ug,&ub ); - - gnome_color_picker_set_i8(GNOME_COLOR_PICKER (upColor), - ur, ug, ub, 255); - - g_signal_connect(G_OBJECT(upColor), "color_set", - G_CALLBACK(ucolor_set_cb), NULL); - - gtk_box_pack_start_defaults( GTK_BOX(panela), upLabel ); - gtk_box_pack_start_defaults( GTK_BOX(panela), upColor ); - - downLabel = gtk_label_new(_("- Color")); - downColor = gnome_color_picker_new(); - - sscanf( props.dcolor, "#%02x%02x%02x", &dr,&dg,&db ); - - gnome_color_picker_set_i8(GNOME_COLOR_PICKER (downColor), - dr, dg, db, 255); - - g_signal_connect(G_OBJECT(downColor), "color_set", - G_CALLBACK(dcolor_set_cb), NULL); - - gtk_box_pack_start_defaults( GTK_BOX(panela), downLabel ); - gtk_box_pack_start_defaults( GTK_BOX(panela), downColor ); - -*/ - gtk_box_pack_start(GTK_BOX(panel1), label1, FALSE, - FALSE, 8); - - gtk_box_pack_start(GTK_BOX(vbox), panel2, FALSE, - FALSE, 8); - gtk_box_pack_start(GTK_BOX(vbox), panel3, FALSE, - FALSE, 8); - gtk_box_pack_start(GTK_BOX(vbox), panel4, FALSE, - FALSE, 8); - gtk_box_pack_start(GTK_BOX(vbox), panela, FALSE, - FALSE, 8); - gtk_box_pack_start(GTK_BOX(vbox), panel1, FALSE, - FALSE, 8); - - gtk_box_pack_start(GTK_BOX(vbox), tik_syms_entry, - FALSE, FALSE, 8); - - gtk_container_add(GTK_CONTAINER(pb), vbox); - - g_signal_connect_swapped(G_OBJECT(tik_syms_entry), - "changed",G_CALLBACK(changed_cb), - G_OBJECT(pb)); - - g_signal_connect(G_OBJECT(pb), "apply", - G_CALLBACK(apply_cb), NULL); - - gtk_widget_show_all(pb); - } - - - - - - /*-----------------------------------------------------------------*/ - char *gaim_plugin_init(GModule *handle) { /* used to be main() */ - GtkWidget *label; - - GtkWidget * vbox; - - memset(configFileName,0,sizeof(configFileName)); - strcat(configFileName, getenv("HOME")); - strcat(configFileName, "/.gtik.conf"); - - applet = gtk_window_new(GTK_WINDOW_TOPLEVEL); /* or not */ - - vbox = gtk_hbox_new (FALSE,0); - - drawing_area = gtk_drawing_area_new(); - gtk_drawing_area_size(GTK_DRAWING_AREA (drawing_area),200,20); - - gtk_widget_show(drawing_area); - gtk_box_pack_start(GTK_BOX (vbox), drawing_area,TRUE,TRUE,0); - - gtk_widget_show(vbox); - - /* applet_widget_add (APPLET_WIDGET (applet), vbox); */ - gtk_container_add(GTK_CONTAINER(applet), vbox); - - g_signal_connect(G_OBJECT(drawing_area),"expose_event", - (GtkSignalFunc) expose_event, NULL); - - g_signal_connect(G_OBJECT(drawing_area),"configure_event", - (GtkSignalFunc) configure_event, NULL); - - - destroycb = g_signal_connect(G_OBJECT(applet), "destroy", - G_CALLBACK(remove_self), handle); - - - - gtk_widget_show (applet); - create_gc(); - - /* load_properties(APPLET_WIDGET(applet)->privcfgpath); */ - - setup_colors(); - load_fonts(); - updateOutput(); - - - /* KEEPING TIMER ID FOR CLEANUP IN DESTROY */ - drawTimeID = g_timeout_add(2,Repaint,drawing_area); - updateTimeID = g_timeout_add(props.timeout * 60000, - updateOutput,"NULL"); - - - return NULL; - } - - - - /*-----------------------------------------------------------------*/ - void updateOutput() { - if ( http_got() == -1 || !(configured()) ) { - reSetOutputArray(); - printf("No data!\n"); - setOutputArray("No data available or properties not set"); - } - } - - - - -/* JHACK */ - /*-----------------------------------------------------------------*/ - void gaim_plugin_remove() { - gtk_signal_disconnect(G_OBJECT(applet), destroycb); - if (drawTimeID > 0) { g_source_remove(drawTimeID); } - if (updateTimeID >0) { g_source_remove(updateTimeID); } - gtk_widget_destroy(applet); - } - - - - - -/*HERE*/ - /*-----------------------------------------------------------------*/ - static void reSetOutputArray() { - int i; - - for (i=0;i<LEN;i++) { - /* CLEAR EACH SYMBOL'S SPACE */ - memset(outputArray[i],0,sizeof(outputArray[i])); - - /* CLEAR ASSOC COLOR ARRAY */ - colorArray[i] = 0; - - /* CLEAR ADDITIONAL INFO */ - memset(changeArray[i],0,sizeof(changeArray[i])); - - } - - setCounter = 0; - getCounter = 0; - setColorCounter = 0; - getColorCounter = 0; - - } - - - /*-----------------------------------------------------------------*/ - char *splitPrice(char *data) { - char buff[128]=""; - static char buff2[128]=""; - char *var1, *var2; - int i; - - strcpy(buff,data); - var1 = strtok(buff,":"); - var2 = strtok(NULL,":"); - - sprintf(buff2," %s %s",var1,var2); - return(buff2); - } - - /*-----------------------------------------------------------------*/ - char *splitChange(char *data) { - char buff[128]=""; - static char buff2[128]=""; - char *var1, *var2, *var3, *var4; - int i; - - strcpy(buff,data); - var1 = strtok(buff,":"); - var2 = strtok(NULL,":"); - var3 = strtok(NULL,":"); - var4 = strtok(NULL,""); - - if (var3[0] == '+') { - if (symbolfont) - var3[0] = 221; - var4[0] = '('; - } - else if (var3[0] == '-') { - if (symbolfont) - var3[0] = 223; - var4[0] = '('; - } - else { - var3 = strdup(_("(No")); - var4 = strdup(_("Change")); - } - - sprintf(buff2,"%s %s)",var3,var4); - return(buff2); - } - - /*-----------------------------------------------------------------*/ - static void setOutputArray(char *param1) { - char *price; - char *change; - - price = splitPrice(param1); - change = splitChange(param1); - - if (setCounter < LEN) { - - strcpy(outputArray[setCounter],price); - strcpy(changeArray[setCounter],change); - } - setCounter++; - } - - - - /*-----------------------------------------------------------------*/ - static void setColorArray(int theColor) { - if (setColorCounter < LEN) { - colorArray[setColorCounter] = theColor; - } - setColorCounter++; - } - - void setup_colors(void) { - GdkColormap *colormap; - - colormap = gtk_widget_get_colormap(drawing_area); - - gdk_color_parse(props.ucolor, &gdkUcolor); - gdk_color_alloc(colormap, &gdkUcolor); - - gdk_color_parse(props.dcolor, &gdkDcolor); - gdk_color_alloc(colormap, &gdkDcolor); - } - - - int create_gc(void) { - gc = gdk_gc_new( drawing_area->window ); - gdk_gc_copy( gc, drawing_area->style->white_gc ); - return 0; - }