aboutsummaryrefslogtreecommitdiff
path: root/src/statusbar.c
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-01-12 11:22:08 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-01-12 11:22:08 +0000
commitb9ca7b1ef5cd1f96ae6e28ae78d12c1e3258c23f (patch)
tree1203adec5f70af1ddd49868528d8d3a5b9004329 /src/statusbar.c
Initial import of Sylpheed (GTK2 version).
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@1 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src/statusbar.c')
-rw-r--r--src/statusbar.c125
1 files changed, 125 insertions, 0 deletions
diff --git a/src/statusbar.c b/src/statusbar.c
new file mode 100644
index 00000000..38d1377f
--- /dev/null
+++ b/src/statusbar.c
@@ -0,0 +1,125 @@
+/*
+ * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
+ * Copyright (C) 1999,2000 Hiroyuki Yamamoto
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+#include <gtk/gtkstatusbar.h>
+#include <stdarg.h>
+
+#include "intl.h"
+#include "statusbar.h"
+#include "gtkutils.h"
+#include "utils.h"
+
+#define BUFFSIZE 1024
+
+static GList *statusbar_list = NULL;
+
+GtkWidget *statusbar_create(void)
+{
+ GtkWidget *statusbar;
+
+ statusbar = gtk_statusbar_new();
+ gtk_widget_set_usize(statusbar, 1, -1);
+ statusbar_list = g_list_append(statusbar_list, statusbar);
+
+ return statusbar;
+}
+
+void statusbar_puts(GtkStatusbar *statusbar, const gchar *str)
+{
+ gint cid;
+ gchar *buf;
+
+ buf = g_strdup(str);
+ strretchomp(buf);
+ if (strlen(buf) > 76) {
+ wchar_t *wbuf;
+
+ wbuf = strdup_mbstowcs(buf);
+
+ if (wcslen(wbuf) > 60) {
+ gchar *tmp;
+
+ g_free(buf);
+ wbuf[60] = (wchar_t)0;
+ tmp = strdup_wcstombs(wbuf);
+ buf = g_strconcat(tmp, "...", NULL);
+ g_free(tmp);
+ }
+
+ g_free(wbuf);
+ }
+
+ cid = gtk_statusbar_get_context_id(statusbar, "Standard Output");
+ gtk_statusbar_pop(statusbar, cid);
+ gtk_statusbar_push(statusbar, cid, buf);
+ gtkut_widget_wait_for_draw(GTK_WIDGET(statusbar)->parent);
+
+ g_free(buf);
+}
+
+void statusbar_puts_all(const gchar *str)
+{
+ GList *cur;
+
+ for (cur = statusbar_list; cur != NULL; cur = cur->next)
+ statusbar_puts(GTK_STATUSBAR(cur->data), str);
+}
+
+void statusbar_print(GtkStatusbar *statusbar, const gchar *format, ...)
+{
+ va_list args;
+ gchar buf[BUFFSIZE];
+
+ va_start(args, format);
+ g_vsnprintf(buf, sizeof(buf), format, args);
+ va_end(args);
+
+ statusbar_puts(statusbar, buf);
+}
+
+void statusbar_print_all(const gchar *format, ...)
+{
+ va_list args;
+ gchar buf[BUFFSIZE];
+ GList *cur;
+
+ va_start(args, format);
+ g_vsnprintf(buf, sizeof(buf), format, args);
+ va_end(args);
+
+ for (cur = statusbar_list; cur != NULL; cur = cur->next)
+ statusbar_puts(GTK_STATUSBAR(cur->data), buf);
+}
+
+void statusbar_pop_all(void)
+{
+ GList *cur;
+ gint cid;
+
+ for (cur = statusbar_list; cur != NULL; cur = cur->next) {
+ cid = gtk_statusbar_get_context_id(GTK_STATUSBAR(cur->data),
+ "Standard Output");
+ gtk_statusbar_pop(GTK_STATUSBAR(cur->data), cid);
+ }
+}