girara an interface library

#include <stdio.h>
#include <stdlib.h>

#include <girara/girara.h>

void setting_cb(girara_session_t* session, const char* name,
    girara_setting_type_t type, void* value, void* data)
{
  fprintf(stderr, "Setting '%s' has been changed\n", name);
}

int main(int argc, char *argv[])
{
  gtk_init(&argc, &argv);

  /* create girara session */
  girara_session_t* session = girara_session_create();

  if (session == NULL) {
    return -1;
  }

  if (girara_session_init(session, NULL) == false) {
    girara_session_destroy(session);
    return -1;
  }

  /* enable tabs */
  girara_tabs_enable(session);

  /* create tabs */
  for (unsigned int i = 0; i < 5; i++) {
    /* create widget that should be display in the tab */
    GtkWidget* tab = gtk_text_view_new();
    if (tab == NULL) {
      continue;
    }

    /* add and insert tab */
    gchar* text = g_strdup_printf("Tab %d", i + 1);
    girara_tab_new(session, text, tab, false, NULL);
    g_free(text);
  }

  /* add some settings */
  int test_val_int = 0;
  girara_setting_add(session, "test-val-int", &test_val_int, INT, FALSE, NULL,
      setting_cb, NULL);
  test_val_int = 42;
  girara_setting_set(session, "test-val-int", &test_val_int);

  /* add a statusbar entry */
  girara_statusbar_item_t* item =
    girara_statusbar_item_add(session, TRUE, TRUE, TRUE, NULL);

  if (item != NULL) {
    girara_statusbar_item_set_text(session, item, "girara-left");
  }

  /* parse configuration file */
  girara_config_parse(session, "~/.config/girara/config");

  /* read settings */
  int tmp_val_int = 0;
  if (girara_setting_get(session, "window-width", &tmp_val_int) == true) {
    fprintf(stderr, "Window width: %d\n", tmp_val_int);
  } else {
    fprintf(stderr, "Window width: (not set)\n");
  }


  /* start gtk main loop */
  gtk_main();

  /* clean up */
  girara_session_destroy(session);

  return 0;
}