+2002-11-30 [christoph] 0.8.6claws51
+
+ * src/logwindow.[ch]
+ * src/common/log.[ch]
+ implement logging using a hook function
+
+ * src/folderview.c
+ * src/folder.[ch]
+ define hooklist name in header file to avoid
+ errors caused by wrong spelling of hooklist names
+
+ * src/toolbar.c
+ fix warnings
+
2002-11-30 [christoph] 0.8.6claws50
* src/common/Makefile.am
MICRO_VERSION=6
INTERFACE_AGE=0
BINARY_AGE=0
-EXTRA_VERSION=claws50
+EXTRA_VERSION=claws51
VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION
dnl set $target
#include "defs.h"
#include "utils.h"
+#include "log.h"
+#include "hooks.h"
static FILE *log_fp = NULL;
va_list args;
gchar buf[BUFFSIZE + TIME_LEN];
time_t t;
+ LogText logtext;
time(&t);
strftime(buf, TIME_LEN + 1, "[%H:%M:%S] ", localtime(&t));
va_end(args);
if (debug_get_mode()) fputs(buf, stdout);
-/* FIXME:
- callback for gui logging
-
- log_window_append(buf, LOG_NORMAL); */
+ logtext.text = buf;
+ logtext.type = LOG_NORMAL;
+ hooks_invoke(LOG_APPEND_TEXT_HOOKLIST, &logtext);
if (log_fp) {
fputs(buf, log_fp);
fflush(log_fp);
va_list args;
gchar buf[BUFFSIZE + TIME_LEN];
time_t t;
+ LogText logtext;
time(&t);
strftime(buf, TIME_LEN + 1, "[%H:%M:%S] ", localtime(&t));
va_end(args);
if (debug_get_mode()) g_message("%s", buf + TIME_LEN);
-/* FIXME:
- callback for gui logging
-
- log_window_append(buf + TIME_LEN, LOG_MSG); */
+ logtext.text = buf + TIME_LEN;
+ logtext.type = LOG_MSG;
+ hooks_invoke(LOG_APPEND_TEXT_HOOKLIST, &logtext);
if (log_fp) {
fwrite(buf, TIME_LEN, 1, log_fp);
fputs("* message: ", log_fp);
va_list args;
gchar buf[BUFFSIZE + TIME_LEN];
time_t t;
+ LogText logtext;
time(&t);
strftime(buf, TIME_LEN + 1, "[%H:%M:%S] ", localtime(&t));
va_end(args);
g_warning("%s", buf);
-/* FIXME:
- callback for gui logging
-
- log_window_append(buf + TIME_LEN, LOG_WARN); */
+ logtext.text = buf + TIME_LEN;
+ logtext.type = LOG_WARN;
+ hooks_invoke(LOG_APPEND_TEXT_HOOKLIST, &logtext);
if (log_fp) {
fwrite(buf, TIME_LEN, 1, log_fp);
fputs("** warning: ", log_fp);
va_list args;
gchar buf[BUFFSIZE + TIME_LEN];
time_t t;
+ LogText logtext;
time(&t);
strftime(buf, TIME_LEN + 1, "[%H:%M:%S] ", localtime(&t));
va_end(args);
g_warning("%s", buf);
-/* FIXME:
- callback for gui logging
-
- log_window_append(buf + TIME_LEN, LOG_ERROR); */
+ logtext.text = buf + TIME_LEN;
+ logtext.type = LOG_ERROR;
+ hooks_invoke(LOG_APPEND_TEXT_HOOKLIST, &logtext);
if (log_fp) {
fwrite(buf, TIME_LEN, 1, log_fp);
fputs("*** error: ", log_fp);
#include <glib.h>
+#define LOG_APPEND_TEXT_HOOKLIST "log_append_text"
+
+typedef enum
+{
+ LOG_NORMAL,
+ LOG_MSG,
+ LOG_WARN,
+ LOG_ERROR
+} LogType;
+
+typedef struct _LogText LogText;
+
+struct _LogText
+{
+ const gchar *text;
+ LogType type;
+};
+
/* logging */
void set_log_file (const gchar *filename);
void close_log_file (void);
source.item = item;
source.content_change = contentchange;
- hooks_invoke("folder_item_update", &source);
+ hooks_invoke(FOLDER_ITEM_UPDATE_HOOKLIST, &source);
}
static void folder_update_item_func(FolderItem *item, gpointer contentchange)
if (item->need_update) {
source.item = item;
source.content_change = GPOINTER_TO_INT(contentchange);
- hooks_invoke("folder_item_update", &source);
+ hooks_invoke(FOLDER_ITEM_UPDATE_HOOKLIST, &source);
item->need_update = FALSE;
}
source.item = item;
source.content_change = update_summary;
- hooks_invoke("folder_item_update", &source);
+ hooks_invoke(FOLDER_ITEM_UPDATE_HOOKLIST, &source);
while (node != NULL) {
if (node && node->data) {
FolderItem *next_item = (FolderItem*) node->data;
source.item = next_item;
source.content_change = update_summary;
- hooks_invoke("folder_item_update", &source);
+ hooks_invoke(FOLDER_ITEM_UPDATE_HOOKLIST, &source);
}
node = node->next;
}
#define FOLDER_ITEM(obj) ((FolderItem *)obj)
+#define FOLDER_ITEM_UPDATE_HOOKLIST "folder_item_update"
+
typedef enum
{
F_MH,
folderview->mbox_factory = mbox_factory;
folderview->folder_item_update_callback_id =
- hooks_register_hook("folder_item_update", folderview_update_item, (gpointer) folderview);
+ hooks_register_hook(FOLDER_ITEM_UPDATE_HOOKLIST, folderview_update_item, (gpointer) folderview);
gtk_widget_show_all(scrolledwin);
#include "utils.h"
#include "gtkutils.h"
#include "prefs_common.h"
-
-static LogWindow *logwindow;
+#include "log.h"
+#include "hooks.h"
static void hide_cb (GtkWidget *widget,
LogWindow *logwin);
static void key_pressed (GtkWidget *widget,
GdkEventKey *event,
LogWindow *logwin);
-void log_window_clear(GtkWidget *text);
+void log_window_append (gpointer source,
+ gpointer data);
+void log_window_clear (GtkWidget *text);
LogWindow *log_window_create(void)
{
logwin->window = window;
logwin->scrolledwin = scrolledwin;
logwin->text = text;
-
- logwindow = logwin;
+ logwin->hook_id = hooks_register_hook(LOG_APPEND_TEXT_HOOKLIST, log_window_append, logwin);
return logwin;
}
gtk_widget_show(logwin->window);
}
-void log_window_append(const gchar *str, LogType type)
+void log_window_append(gpointer source, gpointer data)
{
+ LogText *logtext = (LogText *) source;
+ LogWindow *logwindow = (LogWindow *) data;
GtkText *text;
GdkColor *color = NULL;
gchar *head = NULL;
+ g_return_if_fail(logtext != NULL);
+ g_return_if_fail(logtext->text != NULL);
g_return_if_fail(logwindow != NULL);
+
if (prefs_common.cliplog && !prefs_common.loglength)
return;
text = GTK_TEXT(logwindow->text);
- switch (type) {
+ switch (logtext->type) {
case LOG_MSG:
color = &logwindow->msg_color;
head = "* ";
}
if (head) gtk_text_insert(text, NULL, color, NULL, head, -1);
- gtk_text_insert(text, NULL, color, NULL, str, -1);
+ gtk_text_insert(text, NULL, color, NULL, logtext->text, -1);
if (prefs_common.cliplog)
log_window_clear (GTK_WIDGET (text));
}
typedef struct _LogWindow LogWindow;
-typedef enum
-{
- LOG_NORMAL,
- LOG_MSG,
- LOG_WARN,
- LOG_ERROR
-} LogType;
-
struct _LogWindow
{
GtkWidget *window;
GdkColor msg_color;
GdkColor warn_color;
GdkColor error_color;
+
+ guint hook_id;
};
LogWindow *log_window_create(void);
void log_window_init(LogWindow *logwin);
void log_window_show(LogWindow *logwin);
-void log_window_append(const gchar *str, LogType type);
-
#endif /* __LOGWINDOW_H__ */
#include "gtkutils.h"
#include "toolbar.h"
#include "prefs_toolbar.h"
+#include "alertpanel.h"
/* elements */
#define TOOLBAR_TAG_INDEX "toolbar"
static void toolbar_set_default_compose (void);
static void toolbar_set_default_msgview (void);
-static ToolbarType detect_window(gpointer data);
-
struct ToolbarText
{
gchar *index_str;
gpointer data)
{
ToolbarParent *parent = (ToolbarParent*)data;
- MessageView *msgview;
g_return_if_fail(parent != NULL);