Contents of /trunk/src/statusbar.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (hide annotations)
Tue Dec 9 20:06:06 2008 UTC (15 years, 5 months ago) by harbaum
Original Path: src/statusbar.c
File MIME type: text/plain
File size: 2398 byte(s)
Initial import
1 harbaum 1 /*
2     * Copyright (C) 2008 Till Harbaum <till@harbaum.org>.
3     *
4     * This file is part of OSM2Go.
5     *
6     * OSM2Go is free software: you can redistribute it and/or modify
7     * it under the terms of the GNU General Public License as published by
8     * the Free Software Foundation, either version 3 of the License, or
9     * (at your option) any later version.
10     *
11     * OSM2Go is distributed in the hope that it will be useful,
12     * but WITHOUT ANY WARRANTY; without even the implied warranty of
13     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14     * GNU General Public License for more details.
15     *
16     * You should have received a copy of the GNU General Public License
17     * along with OSM2Go. If not, see <http://www.gnu.org/licenses/>.
18     */
19    
20     #include "appdata.h"
21    
22     void statusbar_highlight(appdata_t *appdata, gboolean highlight) {
23     if(highlight) {
24     GdkColor color;
25     gdk_color_parse("red", &color);
26     gtk_widget_modify_bg(appdata->statusbar->eventbox, GTK_STATE_NORMAL, &color);
27     gtk_widget_modify_base(appdata->statusbar->eventbox, GTK_STATE_NORMAL, &color);
28     gtk_widget_modify_fg(appdata->statusbar->eventbox, GTK_STATE_NORMAL, &color);
29     } else
30     gtk_widget_modify_bg(appdata->statusbar->eventbox, GTK_STATE_NORMAL, NULL);
31     }
32    
33     void statusbar_set(appdata_t *appdata, const char *msg, gboolean highlight) {
34     statusbar_highlight(appdata, highlight);
35    
36     printf("statusbar set: %s\n", msg);
37    
38     static guint mid = 0;
39     if(mid)
40     gtk_statusbar_pop(GTK_STATUSBAR(appdata->statusbar->widget),
41     appdata->statusbar->cid);
42    
43     if(msg)
44     mid = gtk_statusbar_push(GTK_STATUSBAR(appdata->statusbar->widget),
45     appdata->statusbar->cid, msg);
46     }
47    
48     GtkWidget *statusbar_new(appdata_t *appdata) {
49     appdata->statusbar = (statusbar_t*)g_new0(statusbar_t, 1);
50    
51     appdata->statusbar->eventbox = gtk_event_box_new();
52     appdata->statusbar->widget = gtk_statusbar_new();
53    
54     #ifdef USE_HILDON
55     /* why the heck does hildon show this by default? It's useless!! */
56     g_object_set(appdata->statusbar->widget,
57     "has-resize-grip", FALSE,
58     NULL );
59     #endif
60     gtk_container_add(GTK_CONTAINER(appdata->statusbar->eventbox),
61     appdata->statusbar->widget);
62    
63     appdata->statusbar->cid = gtk_statusbar_get_context_id(
64     GTK_STATUSBAR(appdata->statusbar->widget), "Msg");
65    
66     return appdata->statusbar->eventbox;
67     }
68    
69     void statusbar_free(statusbar_t *statusbar) {
70     if(statusbar)
71     g_free(statusbar);
72     }