root/gui/gtk_builder.c @ 0a0a2ff38e385234774ac3f616228931a16000fc

Revision 0a0a2ff38e385234774ac3f616228931a16000fc, 2.7 KB (checked in by Nikita Zlobin <cook60020tmp@…>, 2 years ago)

gladish: Set main window icon

  • Property mode set to 100644
Line 
1/* -*- Mode: C ; c-basic-offset: 2 -*- */
2/*
3 * LADI Session Handler (ladish)
4 *
5 * Copyright (C) 2009, 2010 Nedko Arnaudov <nedko@arnaudov.name>
6 *
7 **************************************************************************
8 * This file contains the GtkBuilder helpers
9 **************************************************************************
10 *
11 * LADI Session Handler is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation; either version 2 of the License, or
14 * (at your option) any later version.
15 *
16 * LADI Session Handler is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public License
22 * along with LADI Session Handler. If not, see <http://www.gnu.org/licenses/>
23 * or write to the Free Software Foundation, Inc.,
24 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
25 */
26
27#include "common.h"
28#include "gtk_builder.h"
29#include <sys/types.h>
30#include <sys/stat.h>
31#include <unistd.h>
32
33GtkBuilder * g_builder;
34
35void set_main_window_icon(void)
36{
37  GError * error;
38
39  gtk_window_set_icon_from_file(GTK_WINDOW(get_gtk_builder_widget("main_win")),
40                                DATA_DIR "/ladish-logo-128x128.png",
41                                &error);
42}
43
44bool init_gtk_builder(void)
45{
46  const char * path;
47  struct stat st;
48  GError * error_ptr;
49
50  path = "./gui/gladish.ui";
51  if (stat(path, &st) == 0)
52  {
53    goto found;
54  }
55
56  path = DATA_DIR "/gladish.ui";
57  if (stat(path, &st) == 0)
58  {
59    goto found;
60  }
61
62  log_error("Unable to find the gladish.ui file");
63  return false;
64
65found:
66  log_info("Loading glade from %s", path);
67
68  g_builder = gtk_builder_new();
69  if (g_builder == NULL)
70  {
71    log_error("gtk_builder_new() failed.");
72    return false;
73  }
74
75  error_ptr = NULL;
76  if (gtk_builder_add_from_file(g_builder, path, &error_ptr) == 0)
77  {
78    log_error("gtk_builder_add_from_file(\"%s\") failed: %s", path, error_ptr->message);
79    g_error_free(error_ptr);
80    g_object_unref(g_builder);
81    return false;
82  }
83
84  set_main_window_icon();
85
86  return true;
87}
88
89void uninit_gtk_builder(void)
90{
91  g_object_unref(g_builder);
92}
93
94GObject * get_gtk_builder_object(const char * name)
95{
96  GObject * ptr;
97
98  ptr = gtk_builder_get_object(g_builder, name);
99
100  if (ptr == NULL)
101  {
102    log_error("glade object with id '%s' not found", name);
103    ASSERT_NO_PASS;
104  }
105
106  return ptr;
107}
108
109GtkWidget * get_gtk_builder_widget(const char * name)
110{
111  return GTK_WIDGET(get_gtk_builder_object(name));
112}
Note: See TracBrowser for help on using the browser.