/* Katoob * Copyright (c) 2002,2003 Arabeyes, Mohammed Sameer. * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifdef HAVE_CONFIG_H #include #endif #include "katoob.h" #include #include "katoobstatusbar.h" extern conf *config; struct _KatoobStatusbarPrivate { GtkWidget *label; GtkWidget *encoding_label; GtkWidget *statusbar; GtkWidget *red; GtkWidget *green; gboolean visible; }; static void katoob_statusbar_class_init (KatoobStatusbarClass * class); static void katoob_statusbar_init (KatoobStatusbar * sbar); static GtkHBoxClass *parent_class; GType katoob_statusbar_get_type (void) { static GType statusbar_type = 0; katoob_debug (__FUNCTION__); if (!statusbar_type) { static const GTypeInfo statusbar_info = { sizeof (KatoobStatusbarClass), NULL, NULL, (GClassInitFunc) katoob_statusbar_class_init, NULL, NULL, sizeof (KatoobStatusbar), 0, (GInstanceInitFunc) katoob_statusbar_init, }; statusbar_type = g_type_register_static (GTK_TYPE_HBOX, "KatoobStatusbar", &statusbar_info, 0); } return statusbar_type; } static void katoob_statusbar_class_init (KatoobStatusbarClass * klass) { katoob_debug (__FUNCTION__); parent_class = g_type_class_peek_parent (klass); } static void katoob_statusbar_init (KatoobStatusbar * sbar) { gchar *_tmp; katoob_debug (__FUNCTION__); sbar->priv = g_new0 (KatoobStatusbarPrivate, 1); gtk_widget_set_direction (GTK_WIDGET (sbar), GTK_TEXT_DIR_LTR); sbar->priv->statusbar = gtk_statusbar_new (); sbar->priv->label = gtk_label_new (""); sbar->priv->encoding_label = gtk_label_new (""); _tmp = g_strdup_printf ("%s/red.png", PACKAGE_DATA_DIR); sbar->priv->red = gtk_image_new_from_file (_tmp); g_free (_tmp); _tmp = g_strdup_printf ("%s/green.png", PACKAGE_DATA_DIR); sbar->priv->green = gtk_image_new_from_file (_tmp); g_free (_tmp); gtk_box_pack_start (GTK_BOX (sbar), sbar->priv->green, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (sbar), sbar->priv->red, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (sbar), sbar->priv->label, TRUE, TRUE, 10); gtk_box_pack_start (GTK_BOX (sbar), sbar->priv->encoding_label, TRUE, TRUE, 10); gtk_box_pack_start (GTK_BOX (sbar), sbar->priv->statusbar, FALSE, FALSE, 0); gtk_widget_set_size_request (sbar->priv->encoding_label, 100, -1); gtk_widget_set_size_request (sbar->priv->statusbar, 150, -1); katoob_statusbar_set_cursor_position (sbar, 1, 1); } GtkWidget * katoob_statusbar_new () { katoob_debug (__FUNCTION__); return g_object_new (KATOOB_TYPE_STATUSBAR, NULL); } void katoob_statusbar_set_modified (KatoobStatusbar * sbar, gboolean modified) { katoob_debug (__FUNCTION__); if (modified) { gtk_widget_hide (sbar->priv->green); gtk_widget_show (sbar->priv->red); } else { gtk_widget_hide (sbar->priv->red); gtk_widget_show (sbar->priv->green); } } void katoob_statusbar_set_cursor_position (KatoobStatusbar * sbar, gint col, gint row) { gchar *_tmp; katoob_debug (__FUNCTION__); _tmp = g_strdup_printf (_("L: %d, C: %d"), row, col); gtk_statusbar_push (GTK_STATUSBAR (sbar->priv->statusbar), 0, _tmp); g_free (_tmp); } void katoob_statusbar_show_hint (KatoobStatusbar * sbar, gchar * text) { katoob_debug (__FUNCTION__); /* TODO: implement me */ } void katoob_statusbar_hide_hint (KatoobStatusbar * sbar) { katoob_debug (__FUNCTION__); /* TODO: implement me */ } void katoob_statusbar_show (KatoobStatusbar * sbar) { katoob_debug (__FUNCTION__); gtk_widget_show (GTK_WIDGET (sbar)); } void katoob_statusbar_hide (KatoobStatusbar * sbar) { katoob_debug (__FUNCTION__); gtk_widget_hide (GTK_WIDGET (sbar)); } void katoob_statusbar_set_encoding (KatoobStatusbar * sbar, gint encoding) { katoob_debug (__FUNCTION__); gtk_label_set_label (GTK_LABEL (sbar->priv->encoding_label), katoob_encodings_get_name_by_number (encoding)); }