root/gui/gtk_builder.c @ fa67487ea8ca6701a10256e458178aa161280964

Revision fa67487ea8ca6701a10256e458178aa161280964, 2.4 KB (checked in by Nedko Arnaudov <nedko@…>, 3 years ago)

'clear xruns and dsp load' is now also available from the menu

  • 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
35bool init_gtk_builder(void)
36{
37  const char * path;
38  struct stat st;
39  GError * error_ptr;
40
41  path = "./gui/gladish.ui";
42  if (stat(path, &st) == 0)
43  {
44    goto found;
45  }
46
47  path = DATA_DIR "/gladish.ui";
48  if (stat(path, &st) == 0)
49  {
50    goto found;
51  }
52
53  log_error("Unable to find the gladish.ui file");
54  return false;
55
56found:
57  log_info("Loading glade from %s", path);
58
59  g_builder = gtk_builder_new();
60  if (g_builder == NULL)
61  {
62    log_error("gtk_builder_new() failed.");
63    return false;
64  }
65
66  error_ptr = NULL;
67  if (gtk_builder_add_from_file(g_builder, path, &error_ptr) == 0)
68  {
69    log_error("gtk_builder_add_from_file(\"%s\") failed: %s", path, error_ptr->message);
70    g_error_free(error_ptr);
71    g_object_unref(g_builder);
72    return false;
73  }
74
75  return true;
76}
77
78void uninit_gtk_builder(void)
79{
80  g_object_unref(g_builder);
81}
82
83GObject * get_gtk_builder_object(const char * name)
84{
85  GObject * ptr;
86
87  ptr = gtk_builder_get_object(g_builder, name);
88
89  if (ptr == NULL)
90  {
91    log_error("glade object with id '%s' not found", name);
92    ASSERT_NO_PASS;
93  }
94
95  return ptr;
96}
97
98GtkWidget * get_gtk_builder_widget(const char * name)
99{
100  return GTK_WIDGET(get_gtk_builder_object(name));
101}
Note: See TracBrowser for help on using the browser.