コード例 #1
0
GtkWidget *
do_css_accordion (GtkWidget *do_widget)
{
  if (!window)
    {
      GtkWidget *container, *child;
      GtkStyleProvider *provider;
      GBytes *bytes;
      gsize data_size;
      const guint8 *data;

      window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
      gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW (do_widget));
      gtk_window_set_default_size (GTK_WINDOW (window), 600, 300);
      g_signal_connect (window, "destroy",
                        G_CALLBACK (gtk_widget_destroyed), &window);
      
      container = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
      gtk_widget_set_halign (container, GTK_ALIGN_CENTER);
      gtk_widget_set_valign (container, GTK_ALIGN_CENTER);
      gtk_container_add (GTK_CONTAINER (window), container);

      child = gtk_button_new_with_label ("This");
      gtk_container_add (GTK_CONTAINER (container), child);

      child = gtk_button_new_with_label ("Is");
      gtk_container_add (GTK_CONTAINER (container), child);

      child = gtk_button_new_with_label ("A");
      gtk_container_add (GTK_CONTAINER (container), child);

      child = gtk_button_new_with_label ("CSS");
      gtk_container_add (GTK_CONTAINER (container), child);

      child = gtk_button_new_with_label ("Accordion");
      gtk_container_add (GTK_CONTAINER (container), child);

      child = gtk_button_new_with_label (":-)");
      gtk_container_add (GTK_CONTAINER (container), child);

      provider = GTK_STYLE_PROVIDER (gtk_css_provider_new ());
      bytes = g_resources_lookup_data ("/css_accordion/css_accordion.css", 0, NULL);
      data = g_bytes_get_data (bytes, &data_size);

      gtk_css_provider_load_from_data (GTK_CSS_PROVIDER (provider), (gchar *)data, data_size, NULL);
      g_bytes_unref (bytes);

      apply_css (window, provider);
    }

  if (!gtk_widget_get_visible (window))
    gtk_widget_show_all (window);
  else
    {
      gtk_widget_destroy (window);
      window = NULL;
    }

  return window;
}
コード例 #2
0
static void context_apply_config(GtkWidget *console)
{
#if !GTK_CHECK_VERSION(3, 0, 0)
	gtk_widget_modify_base(console, GTK_STATE_NORMAL, &pref_vte_colour_back);
	gtk_widget_modify_cursor(console, &pref_vte_colour_fore, &pref_vte_colour_back);
#else
	GString *css_string;
	GtkStyleContext *context;
	GtkCssProvider *provider;
	gchar *css_code, *color, *background_color;

	color = gdk_rgba_to_string (&pref_vte_colour_fore);
	background_color = gdk_rgba_to_string (&pref_vte_colour_back);

	gtk_widget_set_name(console, "scope-console");
	context = gtk_widget_get_style_context(console);
	provider = gtk_css_provider_new();
	gtk_style_context_add_provider(context, GTK_STYLE_PROVIDER(provider),
		GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);

	css_string = g_string_new(NULL);
	g_string_printf(css_string, "#scope-console { color: %s; background-color: %s; }",
		color, background_color);
	css_code = g_string_free(css_string, FALSE);

	gtk_css_provider_load_from_data(GTK_CSS_PROVIDER(provider), css_code, -1, NULL);

	g_free(css_code);
	g_object_unref(provider);
#endif
	ui_widget_modify_font_from_string(console, pref_vte_font);
}
コード例 #3
0
int main(int argc, char ** argv)
{
    /* Init GTK+ */
    gtk_init( &argc, &argv );

    builder = gtk_builder_new();
    MainWindow* window = new MainWindow(GTK_BUILDER(builder));
    gtk_builder_connect_signals( GTK_BUILDER(builder), window );

    /* ============== CSS ============== */
    GtkCssProvider *provider;
    GdkDisplay *display;
    GdkScreen *screen;

    provider = gtk_css_provider_new ();
    display = gdk_display_get_default ();
    screen = gdk_display_get_default_screen (display);

    gtk_style_context_add_provider_for_screen (screen,
                                             GTK_STYLE_PROVIDER(provider),
                                             GTK_STYLE_PROVIDER_PRIORITY_USER);

    gtk_css_provider_load_from_path(GTK_CSS_PROVIDER(provider), "style.css", NULL);
    g_object_unref (provider);
    /* ============== /// ============== */

    /* Start main loop */
    gtk_main();
    return 0;
}
コード例 #4
0
ファイル: CalendarDate.cpp プロジェクト: jimline/TestProjects
CalendarDatePrivate::CalendarDatePrivate()
    : m_viewType(VIEWTYPE_DAY)
    , m_focusUnit(-1)
    , m_yearBefore(1)
    , m_weekStart(0)
    , m_isShowWeekNum(FALSE) {
    time_t tmp_time;
    time_t secs;
    struct tm * tm;
    char buffer[255];
    int i = 0;

    for (i = 0; i < 7; ++i) {
        tmp_time = (i + 3) * SEC_IN_A_DAY;
        strftime(buffer, sizeof(buffer), "%a", localtime(&tmp_time));
        m_defaultAbbreviatedDayname[i] = g_locale_to_utf8(buffer, -1, NULL, NULL, NULL);
    }

    for (i = 0; i < 12; ++i) {
        tmp_time = i * 32 * SEC_IN_A_DAY;
        strftime(buffer, sizeof(buffer), "%B", localtime(&tmp_time));
        m_defaultMonthname[i] = g_locale_to_utf8(buffer, -1, NULL, NULL, NULL);
    }

    secs = time(NULL);
    tm = localtime(&secs);

    m_selectedYear = tm->tm_year + 1900;
    m_selectedMonth = tm->tm_mon + 1;
    m_selectedDayOfMonth = tm->tm_mday;

    ComputeDays();

    m_actor = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
    gtk_widget_set_name(m_actor, "calendar");

    m_topBox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
    gtk_widget_set_name(m_topBox, "calendar-top");
    gtk_widget_set_halign(GTK_WIDGET(m_topBox), GTK_ALIGN_CENTER);

    m_mainBox = gtk_fixed_new();
    gtk_widget_set_halign(GTK_WIDGET(m_mainBox), GTK_ALIGN_CENTER);

    m_swipeBox[VIEWTYPE_DAY] = NULL;
    m_swipeBox[VIEWTYPE_MONTH] = NULL;
    m_swipeBox[VIEWTYPE_YEAR] = NULL;

    gtk_box_pack_start(GTK_BOX(m_actor), GTK_WIDGET(m_topBox), TRUE, TRUE, 0);
    gtk_box_pack_start(GTK_BOX(m_actor), GTK_WIDGET(m_mainBox), TRUE, TRUE, 0);

    m_provider = GTK_STYLE_PROVIDER(gtk_css_provider_new());
    gtk_css_provider_load_from_path(GTK_CSS_PROVIDER(m_provider), GLOBAL_RESOURCE_DIR"/testCalendar/testCalendar.css", NULL);

    buildHeader();
    updateDayView(FALSE, 0);
}
コード例 #5
0
ファイル: cc-style.c プロジェクト: zoeritic/cclient
void cc_set_css(GtkWidget*w,gchar*file)
{
    GFile *cssfile=g_file_new_for_path(file);
GtkCssProvider*provider=gtk_css_provider_new();
GtkStyleContext*context=gtk_widget_get_style_context(w);
gtk_style_context_add_provider(context,GTK_STYLE_PROVIDER(provider),GTK_STYLE_PROVIDER_PRIORITY_USER);
gtk_css_provider_load_from_file(GTK_CSS_PROVIDER(provider),cssfile,NULL);
g_object_unref(provider);

}
コード例 #6
0
ファイル: rit.c プロジェクト: g0orx/pihpsdr
static void set_button_text_color(GtkWidget *widget,char *color) {
  GtkStyleContext *style_context;
  GtkCssProvider *provider = gtk_css_provider_new ();
  gchar tmp[64];
  style_context = gtk_widget_get_style_context(widget);
  gtk_style_context_add_provider(style_context, GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
  g_snprintf(tmp, sizeof tmp, "GtkButton, GtkLabel { color: %s; }", color);
  gtk_css_provider_load_from_data(GTK_CSS_PROVIDER(provider), tmp, -1, NULL);
  g_object_unref (provider);
}
コード例 #7
0
ファイル: theme.c プロジェクト: LastAvenger/srain
void theme_init(){
    char *theme_file;

    theme_file = get_theme_file("default.css");
    if (!theme_file){
        return;
    }

    provider = GTK_STYLE_PROVIDER(gtk_css_provider_new());
    gtk_css_provider_load_from_path(
            GTK_CSS_PROVIDER(provider), theme_file, NULL);

    g_free(theme_file);
}
コード例 #8
0
ファイル: gui_stuff.c プロジェクト: longturn/freeciv-S2_5
/**************************************************************************
  Updates a gui font style.
**************************************************************************/
void gui_update_font(const char *font_name, const char *font_value)
{
  char *str;
  GtkCssProvider *provider;

  str = g_strdup_printf("#Freeciv #%s { font: %s;}", font_name, font_value);

  provider = gtk_css_provider_new();
  gtk_css_provider_load_from_data(GTK_CSS_PROVIDER(provider),
    str, -1, NULL);
  gtk_style_context_add_provider_for_screen(
    gtk_widget_get_screen(toplevel), GTK_STYLE_PROVIDER(provider),
    GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
  g_free(str);
}
コード例 #9
0
ファイル: sc-utils.c プロジェクト: ranrangor/ScreenCapturer
static void sc_button_set_style(GtkButton* button)
{

    GtkCssProvider* provider;
    GtkStyleContext*context;
    provider=gtk_css_provider_new();
    context=gtk_widget_get_style_context(GTK_WIDGET(button));

    gtk_style_context_add_provider(context,GTK_STYLE_PROVIDER(provider),GTK_STYLE_PROVIDER_PRIORITY_USER);

    gtk_css_provider_load_from_data(GTK_CSS_PROVIDER(provider),"GtkButton {border-radius:0px ;padding:0}",-1,NULL);

    g_object_unref(provider);

}
コード例 #10
0
ファイル: cc-style.c プロジェクト: zoeritic/cclient
void cc_style_setup()
{

    GtkCssProvider* provider=gtk_css_provider_new();

    GdkScreen*screen=gdk_display_get_default_screen(gdk_display_get_default());

    GFile* cssfile=g_file_new_for_path(STYLE_PATH "image.css");
    gtk_css_provider_load_from_file(GTK_CSS_PROVIDER(provider),cssfile,NULL);

    gtk_style_context_add_provider_for_screen(screen,GTK_STYLE_PROVIDER(provider),
            GTK_STYLE_PROVIDER_PRIORITY_USER);

    g_object_unref(provider);

}
コード例 #11
0
ファイル: bar.c プロジェクト: felixmulder/morun
static void style_window(GtkWidget *window, wconf_t conf)
{
        GdkDisplay      *display;
        GdkScreen       *screen;
        GtkCssProvider  *provider;
        GFile           *file;
        GError          *err;

        gtk_window_set_decorated(GTK_WINDOW(window), FALSE);
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_default_size(GTK_WINDOW(window),
                                    SEARCH_WIDTH,
                                    SEARCH_HEIGHT);
        gtk_window_set_title(GTK_WINDOW(window), "Morun");
        gtk_window_set_resizable(GTK_WINDOW(window), FALSE);


        char path[256];
        if (conf.style == NULL)
                snprintf(path, sizeof(path), "%s/.morun.css", getenv("HOME"));
        else
                snprintf(path, sizeof(path), "%s", conf.style);

        file = g_file_new_for_path(path);
        provider = gtk_css_provider_new();
        display = gdk_display_get_default();
        screen = gdk_display_get_default_screen(display);
        err = NULL;

        gtk_style_context_add_provider_for_screen(screen,
                        GTK_STYLE_PROVIDER(provider),
                        GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);

        gtk_css_provider_load_from_file(GTK_CSS_PROVIDER(provider), file, &err);

        if (err != NULL) {
                printf("Error occurred while loading style:\n%s\n", err->message);
                exit(1);
        }

        g_object_unref(provider);
}
コード例 #12
0
static void
setup_am_pm_button (CcDateTimePanel *self)
{
  CcDateTimePanelPrivate *priv = self->priv;
  GtkCssProvider *provider;
  GtkStyleContext *context;
  GtkWidget *am_pm_button;
  char *text;

  text = format_am_label ();
  priv->am_label = gtk_label_new (text);
  g_free (text);

  text = format_pm_label ();
  priv->pm_label = gtk_label_new (text);
  g_free (text);

  priv->am_pm_stack = W ("am_pm_stack");
  gtk_container_add (GTK_CONTAINER (priv->am_pm_stack), priv->am_label);
  gtk_container_add (GTK_CONTAINER (priv->am_pm_stack), priv->pm_label);
  gtk_widget_show_all (priv->am_pm_stack);
  priv->am_pm_visiblity_changed_id = g_signal_connect_swapped (priv->am_pm_stack,
                                                               "notify::visible-child",
                                                               G_CALLBACK (am_pm_stack_visible_child_changed_cb),
                                                               self);
  am_pm_stack_visible_child_changed_cb (self);

  am_pm_button = W ("am_pm_button");
  g_signal_connect (am_pm_button, "clicked",
                    G_CALLBACK (am_pm_button_clicked), self);

  provider = gtk_css_provider_new ();
  gtk_css_provider_load_from_data (GTK_CSS_PROVIDER (provider),
                                   ".gnome-control-center-ampm-toggle-button {\n"
                                   "    font-size: 150%;\n"
                                   "}", -1, NULL);
  context = gtk_widget_get_style_context (am_pm_button);
  gtk_style_context_add_provider (context,
                                  GTK_STYLE_PROVIDER (provider),
                                  GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
  g_object_unref (provider);
}
コード例 #13
0
ファイル: gtk-reftest.c プロジェクト: Distrotech/gtk2
static GtkStyleProvider *
add_extra_css (const char *testname,
               const char *extension)
{
  GtkStyleProvider *provider = NULL;
  char *css_file;
  
  css_file = get_test_file (testname, extension, TRUE);
  if (css_file == NULL)
    return NULL;

  provider = GTK_STYLE_PROVIDER (gtk_css_provider_new ());
  gtk_css_provider_load_from_path (GTK_CSS_PROVIDER (provider),
                                   css_file,
                                   NULL);
  gtk_style_context_add_provider_for_screen (gdk_screen_get_default (),
                                             provider,
                                             GTK_STYLE_PROVIDER_PRIORITY_FORCE);

  g_free (css_file);
  
  return provider;
}
コード例 #14
0
ファイル: styleexamples.c プロジェクト: BYC/gtk
int main (int argc, char *argv[])
{
  GtkWidget *window;
  GtkWidget *ebox;
  GtkStyleContext *context;
  GtkStyleProvider *provider;

  gtk_init (&argc, &argv);

  if (argc > 1)
    what = argv[1];
  else
    what = "check";

  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_window_set_has_resize_grip (GTK_WINDOW (window), FALSE);
  ebox = gtk_event_box_new ();
  gtk_event_box_set_visible_window (GTK_EVENT_BOX (ebox), TRUE);
  gtk_container_add (GTK_CONTAINER (window), ebox);
  gtk_widget_set_name (ebox, "ebox");

  context = gtk_widget_get_style_context (ebox);
  provider = (GtkStyleProvider *)gtk_css_provider_new ();
  gtk_css_provider_load_from_data (GTK_CSS_PROVIDER (provider),
                                   ".frame1 {\n"
                                   "   border-image: url('gradient1.png') 10 10 10 10 stretch;\n"
                                   "}\n"
                                   ".frame2 {\n"
                                   "   border-style: solid;\n"
                                   "   border-color: rgb(255,0,0);\n"
                                   "   border-width: 10;\n"
                                   "   border-radius: 10;\n"
                                   "}\n"
                                   ".frame3 {\n"
                                   "   border-style: solid;\n"
                                   "   border-color: rgb(0,0,0);\n"
                                   "   border-width: 2;\n"
                                   "   border-radius: 10;\n"
                                   "}\n"
                                   ".background {\n"
                                   "   border-radius: 10;\n"
                                   "   border-width: 0;\n"
                                   "   background-image: -gtk-gradient (linear, left top, right bottom, from(#ff00ff), to(#aabbcc));\n"
                                   "}\n"
                                   ".frame {\n"
                                   "   border-style: solid;\n"
                                   "   border-width: 1;\n"
                                   "   border-radius: 0;\n"
                                   "}\n", -1, NULL);
  gtk_style_context_add_provider (context, provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);

  g_signal_connect_after (ebox, "draw", G_CALLBACK (draw_cb), NULL);

  gtk_widget_show_all (window);

  gtk_main ();

  gtk_style_context_remove_provider (context, provider);

  return 0;
}
コード例 #15
0
ファイル: gdaui-bar.c プロジェクト: UIKit0/libgda
static void
gdaui_bar_init (GdauiBar *bar)
{
	GtkWidget *widget = GTK_WIDGET (bar);
	GtkWidget *content_area;
	GtkWidget *action_area;

	bar->priv = g_new0 (GdauiBarPrivate, 1);

	content_area = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
	gtk_widget_show (content_area);
	gtk_box_pack_start (GTK_BOX (bar), content_area, TRUE, TRUE, 0);

	action_area = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
	gtk_widget_show (action_area);
	gtk_box_pack_start (GTK_BOX (bar), action_area, FALSE, TRUE, 0);

	gtk_widget_set_app_paintable (widget, TRUE);
	gtk_widget_set_redraw_on_allocate (widget, TRUE);

	bar->priv->content_area = content_area;
	bar->priv->action_area = action_area;

	/* set default spacings */
	gtk_box_set_spacing (GTK_BOX (bar->priv->action_area), ACTION_AREA_DEFAULT_SPACING);
	gtk_container_set_border_width (GTK_CONTAINER (bar->priv->action_area), ACTION_AREA_DEFAULT_BORDER);
	gtk_box_set_spacing (GTK_BOX (bar->priv->content_area), CONTENT_AREA_DEFAULT_SPACING);
	gtk_container_set_border_width (GTK_CONTAINER (bar->priv->content_area), CONTENT_AREA_DEFAULT_BORDER);

	bar->priv->show_icon = FALSE;
	bar->priv->icon = gtk_image_new ();
        gtk_misc_set_alignment (GTK_MISC (bar->priv->icon), 1., 0.5);
        gtk_widget_hide (bar->priv->icon);
        gtk_box_pack_end (GTK_BOX (bar->priv->content_area), bar->priv->icon,
			  FALSE, TRUE, 0);

	bar->priv->label = gtk_label_new ("");
        gtk_label_set_selectable (GTK_LABEL (bar->priv->label), FALSE);
        gtk_misc_set_alignment (GTK_MISC (bar->priv->label), 0., 0.5);
        gtk_box_pack_end (GTK_BOX (bar->priv->content_area), bar->priv->label,
                          TRUE, TRUE, 0);
        gtk_widget_show (bar->priv->label);

	/* CSS theming */
	GtkStyleContext *context;
	if (!css_provider) {
#define CSS ".gdauibar {\n"				\
			"background-color: #b3b3b3;\n"	\
			"padding: 5px;\n"		\
			"}"				\
			".gdauibar_button {\n"			\
			"-GtkButton-default-border : 0px;\n"	\
			"-GtkButton-default-outside-border : 0px;\n"	\
			"-GtkWidget-focus-line-width : 0px;\n"		\
			"-GtkWidget-focus-padding : 0px;\n"		\
			"padding: 0px;\n"				\
			"-GtkButtonBox-child-internal-pad-x : 1px;\n"	\
			"-GtkButtonBox-child-min-width : 0px;\n"	\
			"border-style: none;\n"				\
			"}"						\
			".gdauibar_entry {\n"				\
			"-GtkWidget-focus-line-width : 0px;\n"		\
			"-GtkWidget-focus-padding : 0px;\n"		\
			"padding: 1px;\n"				\
			"-GtkButtonBox-child-internal-pad-x : 1px;\n"	\
			"-GtkButtonBox-child-min-width : 0px;\n"	\
			"border-style: solid;\n"			\
			"border-radius: 5px;\n"				\
			"}"
		css_provider = GTK_STYLE_PROVIDER (gtk_css_provider_new ());
		gtk_css_provider_load_from_data (GTK_CSS_PROVIDER (css_provider), CSS, -1, NULL);
	}
	context = gtk_widget_get_style_context (GTK_WIDGET (bar));
	gtk_style_context_add_provider (context, css_provider, G_MAXUINT);
	gtk_style_context_add_class (context, "gdauibar");
}
コード例 #16
0
ファイル: main.c プロジェクト: eldstal/sooshichef
int main(int argc, char *argv[])
{
    GtkBuilder *builder;

    gtk_init(&argc, &argv);

    builder = gtk_builder_new();
    GError *error = NULL;
    gtk_builder_add_from_file(builder, "src/ui/mainwindow.glade", &error);

    if (error != NULL)
    {
        printf("Error loading user interface: %s", error->message);
        g_error_free(error);
        return 0;
    }

    sooshi_error_t sooshi_error = 0;
    SooshiState *state = sooshi_state_new(&sooshi_error);

    if (sooshi_error)
        return -1;

    AppState *s = g_new0(AppState, 1);
    s->channel1_top    = gtk_builder_get_object(builder, "channel1_top");
    s->channel1        = gtk_builder_get_object(builder, "channel1");
    s->channel1_bottom = gtk_builder_get_object(builder, "channel1_bottom");

    s->channel2_top    = gtk_builder_get_object(builder, "channel2_top");
    s->channel2        = gtk_builder_get_object(builder, "channel2");
    s->channel2_bottom = gtk_builder_get_object(builder, "channel2_bottom");

    s->battery_level     = gtk_builder_get_object(builder, "battery_level");
    s->battery_level_str = gtk_builder_get_object(builder, "battery_level_str");

    s->trigger          = GTK_COMBO_BOX(gtk_builder_get_object(builder, "Trigger"));
    s->sample_rate      = GTK_COMBO_BOX(gtk_builder_get_object(builder, "Sample Rate"));
    s->sample_depth     = GTK_COMBO_BOX(gtk_builder_get_object(builder, "Sample Depth"));

    s->sooshi = state;

    GObject *window = gtk_builder_get_object(builder, "MainWindow");
    g_signal_connect(window, "destroy", G_CALLBACK(app_shutdown), s);

    /* Set up CSS style provider */
    GtkCssProvider *provider = gtk_css_provider_new();
    GdkDisplay *display = gdk_display_get_default();
    GdkScreen *screen = gdk_display_get_default_screen(display);

    gtk_style_context_add_provider_for_screen(screen,
            GTK_STYLE_PROVIDER(provider),
            GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);

    gtk_css_provider_load_from_path(GTK_CSS_PROVIDER(provider),
        "src/ui/style.css", &error);

    if (error != NULL)
    {
        printf("Error loading user interface style: %s", error->message);
        g_error_free(error);
        return 0;
    }

    g_object_unref(provider);

    sooshi_setup(state,
            mooshi_initialized, s,
            mooshi_scan_timed_out, s
    );

    gtk_widget_show_all(GTK_WIDGET(window));

    gtk_main();

    sooshi_state_delete(state);

    return 0;
}
コード例 #17
0
ファイル: nimf-candidate.c プロジェクト: cogniti/nimf
static gboolean
nimf_candidate_start (NimfService *service)
{
  g_debug (G_STRLOC ": %s", G_STRFUNC);

  NimfCandidate *candidate = NIMF_CANDIDATE (service);

  if (candidate->active)
    return TRUE;

  GtkCellRenderer   *renderer;
  GtkTreeViewColumn *column[N_COLUMNS];
  GtkListStore      *store;
  gint               fixed_height = 32;
  gint               horizontal_space;

  gtk_init (NULL, NULL);

  /* gtk entry */
  candidate->entry = gtk_entry_new ();
  gtk_editable_set_editable (GTK_EDITABLE (candidate->entry), FALSE);
  gtk_widget_set_no_show_all (candidate->entry, TRUE);
  g_signal_connect_after (candidate->entry, "draw",
                          G_CALLBACK (on_entry_draw), NULL);
  /* gtk tree view */
  store = gtk_list_store_new (N_COLUMNS, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING);
  candidate->treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store));
  g_object_unref (store);
  gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (candidate->treeview), FALSE);
  gtk_widget_style_get (candidate->treeview, "horizontal-separator",
                        &horizontal_space, NULL);
  candidate->cell_height = fixed_height + horizontal_space / 2;
  gtk_widget_set_size_request (candidate->treeview,
                               (gint) (candidate->cell_height * 10 / 1.6),
                               candidate->cell_height * 10);
  g_signal_connect (candidate->treeview, "row-activated",
                    (GCallback) on_tree_view_row_activated, candidate);
  /* column */
  renderer = gtk_cell_renderer_text_new ();
  g_object_set (renderer, "height", fixed_height, "font", "Sans 14", NULL);

  column[INDEX_COLUMN] = gtk_tree_view_column_new_with_attributes ("Index",
                                        renderer, "text", INDEX_COLUMN, NULL);
  column[MAIN_COLUMN]  = gtk_tree_view_column_new_with_attributes ("Main",
                                        renderer, "text", MAIN_COLUMN, NULL);
  column[EXTRA_COLUMN] = gtk_tree_view_column_new_with_attributes ("Extra",
                                        renderer, "text", EXTRA_COLUMN, NULL);
  gtk_tree_view_column_set_sizing (column[INDEX_COLUMN], GTK_TREE_VIEW_COLUMN_AUTOSIZE);
  gtk_tree_view_column_set_sizing (column[MAIN_COLUMN],  GTK_TREE_VIEW_COLUMN_AUTOSIZE);
  gtk_tree_view_column_set_sizing (column[EXTRA_COLUMN], GTK_TREE_VIEW_COLUMN_AUTOSIZE);
  gtk_tree_view_append_column (GTK_TREE_VIEW (candidate->treeview),
                               column[INDEX_COLUMN]);
  gtk_tree_view_append_column (GTK_TREE_VIEW (candidate->treeview),
                               column[MAIN_COLUMN]);
  gtk_tree_view_append_column (GTK_TREE_VIEW (candidate->treeview),
                               column[EXTRA_COLUMN]);
  /* scrollbar */
  GtkAdjustment *adjustment = gtk_adjustment_new (1.0, 1.0, 2.0, 1.0, 1.0, 1.0);
  candidate->scrollbar = gtk_scrollbar_new (GTK_ORIENTATION_VERTICAL, adjustment);
  gtk_range_set_slider_size_fixed (GTK_RANGE (candidate->scrollbar), FALSE);
  g_signal_connect (candidate->scrollbar, "change-value",
                    G_CALLBACK (on_range_change_value), candidate);
  GtkCssProvider  *provider;
  GtkStyleContext *style_context;
  provider = gtk_css_provider_new ();
  gtk_css_provider_load_from_data (GTK_CSS_PROVIDER (provider),
                       ".scrollbar {"
                       "  -GtkScrollbar-has-backward-stepper: true;"
                       "  -GtkScrollbar-has-forward-stepper:  true;"
                       "  -GtkScrollbar-has-secondary-forward-stepper:  true;"
                       "}" , -1, NULL);
  style_context = gtk_widget_get_style_context (candidate->scrollbar);
  gtk_style_context_add_provider (style_context,
                                  GTK_STYLE_PROVIDER (provider),
                                  GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
  g_object_unref (provider);

  /* gtk box */
  GtkWidget *vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
  GtkWidget *hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);

  gtk_box_pack_start (GTK_BOX (vbox), candidate->entry, TRUE, TRUE, 0);
  gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);

  gtk_box_pack_start (GTK_BOX (hbox), candidate->treeview,  TRUE,  TRUE, 0);
  gtk_box_pack_end   (GTK_BOX (hbox), candidate->scrollbar, FALSE, TRUE, 0);

  /* gtk window */
  candidate->window = gtk_window_new (GTK_WINDOW_POPUP);
  gtk_window_set_type_hint (GTK_WINDOW (candidate->window),
                            GDK_WINDOW_TYPE_HINT_POPUP_MENU);
  gtk_container_set_border_width (GTK_CONTAINER (candidate->window), 1);
  gtk_container_add (GTK_CONTAINER (candidate->window), vbox);
  gtk_widget_realize (candidate->window);

  candidate->active = TRUE;

  return TRUE;
}
コード例 #18
0
void start_GUI() {
	main_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title(GTK_WINDOW(main_window), "telerobot client");
	gtk_window_set_icon_from_file(GTK_WINDOW(main_window), "icons/PlayStation_3_gamepad.svg", NULL);

	/* gdk_window_set_icon_list(GTK_WINDOW(main_window), NULL); */
	gtk_window_set_default_size(GTK_WINDOW(main_window), 973, 309); /* actually 1024, 254 */
	gtk_window_set_position(GTK_WINDOW(main_window), GTK_WIN_POS_CENTER);
	/* gtk_widget_show(main_window); */
	left_table = gtk_table_new(6, 3, TRUE);
	gtk_table_set_row_spacings(GTK_TABLE(left_table), 2);
	gtk_table_set_col_spacings(GTK_TABLE(left_table), 2);

	provider = gtk_css_provider_new();
	/* gtk_css_provider_load_from_path(cssProvider,"./style.css", NULL); */
	gtk_css_provider_load_from_data(GTK_CSS_PROVIDER(provider), "GtkProgressBar {\n"
			"min-height: 30px;\n"
			"}\n", -1, NULL);

	display = gdk_display_get_default();
	screen = gdk_display_get_default_screen(display);
	gtk_style_context_add_provider_for_screen(screen, GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);

	g_object_unref(provider);

	progress1 = gtk_progress_bar_new();
//gtk_progress_bar_set_inverted(progress1, TRUE);
	/* this would invert progressbar direction */
	gtk_progress_bar_set_text(progress1, "L2:");
	gtk_progress_bar_set_show_text(progress1, TRUE);
	/*g_object_set(progress1, "min-height", 30, NULL);*/
	gtk_table_attach(GTK_TABLE(left_table), progress1, 0, 3, 0, 1, GTK_FILL, GTK_EXPAND, 0, 0);
	gtk_widget_set_valign(GTK_WIDGET(progress1), GTK_ALIGN_CENTER);

	progress2 = gtk_progress_bar_new();
	gtk_progress_bar_set_text(progress2, "R2:");
	gtk_progress_bar_set_show_text(progress2, TRUE);
	/*g_object_set(progress2, "min-height", 30, NULL);*/
	gtk_table_attach(GTK_TABLE(left_table), progress2, 0, 3, 1, 2, GTK_FILL, GTK_EXPAND, 0, 0);
	gtk_widget_set_valign(GTK_WIDGET(progress2), GTK_ALIGN_CENTER);

	progress3 = gtk_progress_bar_new();
	gtk_progress_bar_set_show_text(progress3, TRUE);
	gtk_table_attach(GTK_TABLE(left_table), progress3, 0, 3, 2, 3, GTK_FILL, GTK_EXPAND, 0, 0);
	gtk_widget_set_valign(GTK_WIDGET(progress3), GTK_ALIGN_CENTER);

	progress4 = gtk_progress_bar_new();
	gtk_progress_bar_set_show_text(progress4, TRUE);
	gtk_table_attach(GTK_TABLE(left_table), progress4, 0, 3, 3, 4, GTK_FILL, GTK_EXPAND, 0, 0);
	gtk_widget_set_valign(GTK_WIDGET(progress4), GTK_ALIGN_CENTER);

	progress5 = gtk_progress_bar_new();
	gtk_progress_bar_set_show_text(progress5, TRUE);
	gtk_table_attach(GTK_TABLE(left_table), progress5, 0, 3, 4, 5, GTK_FILL, GTK_EXPAND, 0, 0);
	gtk_widget_set_valign(GTK_WIDGET(progress5), GTK_ALIGN_CENTER);

	/* feedback labels */
	label_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);

	label_roll = gtk_label_new("roll (\u00B0)");
	gtk_box_pack_start(GTK_WIDGET(label_box), label_roll, FALSE, FALSE, 10);

	label_pitch = gtk_label_new("pitch (\u00B0)");
	gtk_box_pack_start(GTK_WIDGET(label_box), label_pitch, FALSE, FALSE, 10);

	label_alt = gtk_label_new("altitude (m)");
	gtk_box_pack_start(GTK_WIDGET(label_box), label_alt, FALSE, FALSE, 10);

	gtk_table_attach(GTK_TABLE(left_table), label_box, 0, 3, 5, 6, GTK_FILL, GTK_EXPAND, 0, 0);
	gtk_widget_set_valign(GTK_WIDGET(label_box), GTK_ALIGN_CENTER);

	left_frame = gtk_aspect_frame_new(NULL, /* label */
	0.5, /* horizontal position */
	0.0, /* vertical position */
	1, /* xsize/ysize = 1 */
	FALSE /* ignore child's aspect */);

	drawing_area_frame = gtk_aspect_frame_new(NULL, 0.5, 0.0, 1, TRUE /* ignore child's aspect */);
	gtk_frame_set_shadow_type(GTK_FRAME(drawing_area_frame), GTK_SHADOW_ETCHED_IN);

	GtkWidget *text_area_frame;
	text_area_frame = gtk_aspect_frame_new(NULL, 0.5, 0.0, 1, TRUE);
	gtk_frame_set_shadow_type(GTK_FRAME(text_area_frame), GTK_SHADOW_ETCHED_IN);

	drawing_area = gtk_drawing_area_new();
	gtk_widget_set_size_request(drawing_area, 320, 320);
	gtk_container_add(GTK_CONTAINER(drawing_area_frame), drawing_area);

	g_signal_connect(G_OBJECT(drawing_area), "draw", G_CALLBACK(on_draw_event), NULL);
	g_signal_connect(main_window, "destroy", G_CALLBACK(gtk_main_quit), NULL);

	gtk_frame_set_shadow_type(GTK_FRAME(left_frame), GTK_SHADOW_ETCHED_IN);
	/* draws a frame */
	gtk_container_add(GTK_CONTAINER(left_frame), left_table);
	/* places the widget inside frame */
	main_table = gtk_table_new(1, 3, FALSE);
	/* creates three column table */
	gtk_table_attach_defaults(GTK_TABLE(main_table), left_frame, 0, 1, 0, 1);
	/* places the widget inside leftmost cell of the table */
	gtk_table_attach_defaults(GTK_TABLE(main_table), drawing_area_frame, 1, 2, 0, 1);
	/* places the video/artificial horizon widget inside middle cell */

	/* prawa komórka głównej tabeli */
// grid method
// right_table = gtk_grid_new();
// table method
	right_table = gtk_table_new(3, 3, TRUE);

	/* prawa ramka */
	right_frame = gtk_aspect_frame_new(NULL, /* label */
	0.5, /* wyrównanie w poziomie */
	0.0, /* wyrównanie w pionie */
	1, /* xsize/ysize = 1 */
	FALSE /* ignore child's aspect */);

	/* zamiast "0" może być NULL - wtedy pole jest puste */
	label_x1 = gtk_label_new("");
	label_y1 = gtk_label_new("");
	label_x2 = gtk_label_new("");
	label_y2 = gtk_label_new("");

	/* 0 - pierwsza kolumna, 1 - druga kolumna następna (numerowane od zera) */

	/* umieszcza wskaźniki w polach tabeli */
	gtk_label_set_justify(label_x1, GTK_JUSTIFY_RIGHT);
	gtk_label_set_justify(label_y1, GTK_JUSTIFY_RIGHT);
	/* "0,2,Y,Y" oznacza że zajmują dwie komórki tabeli */

	/* typ obwiedni */
	gtk_frame_set_shadow_type(GTK_FRAME(right_frame), GTK_SHADOW_ETCHED_IN);
	/* umieszcza right_table w wskazniki */
	gtk_container_add(GTK_CONTAINER(right_frame), right_table);

	gtk_table_attach_defaults(GTK_TABLE(main_table), right_frame, 2, 3, 0, 1);
	/* umieszcza ramkę wskazniki w prawej (2,3) komórce głównej tabeli */

	/* tworzy przycisk wyłączający serwer */
	/*
	 GtkWidget *quit_icon;
	 GtkWidget *quit_button;

	 quit_icon = gtk_image_new_from_file("icons/system-shutdown.svg");
	 quit_button = gtk_button_new();
	 gtk_container_add(GTK_CONTAINER(quit_button), quit_icon);
	 g_signal_connect(quit_button, "pressed", G_CALLBACK(wyslij_przycisk_13_on), NULL);
	 g_signal_connect(quit_button, "released", G_CALLBACK(wyslij_przycisk_13_off), NULL);
	 gtk_button_set_relief(quit_button, GTK_RELIEF_NONE);
	 */

	/* Sets whether the button will grab focus when it is clicked with the mouse.
	 Making mouse clicks not grab focus is useful in places like toolbars
	 where you don't want the keyboard focus removed from the main area of the application. */
	/* gtk_button_set_focus_on_click(quit_button, 0); */

	/* regulator & servo controller buttons */
	servocontroller_enable_button = gtk_button_new_with_label("enable\nUSC-16");
	gtk_button_set_relief(servocontroller_enable_button, GTK_RELIEF_NONE);
	gtk_table_attach_defaults(GTK_TABLE(right_table), servocontroller_enable_button, 0, 1, 2, 3);

	servocontroller_disable_button = gtk_button_new_with_label("disable\nUSC-16");
	gtk_button_set_relief(servocontroller_disable_button, GTK_RELIEF_NONE);
	gtk_table_attach_defaults(GTK_TABLE(right_table), servocontroller_disable_button, 0, 1, 2, 3);

	check_button_regulator = gtk_check_button_new_with_label("50 Hz");
	gtk_toggle_button_set_active(check_button_regulator, FALSE);
	gtk_table_attach_defaults(GTK_TABLE(right_table), check_button_regulator, 1, 2, 2, 3);

	/* record buttons */
	record_start_icon = gtk_image_new_from_file("icons/media-record.svg");
	record_start_button = gtk_button_new();
	gtk_container_add(GTK_CONTAINER(record_start_button), record_start_icon);
	gtk_table_attach_defaults(GTK_TABLE(right_table), record_start_button, 2, 3, 1, 2);
	gtk_button_set_relief(GTK_BUTTON(record_start_button), GTK_RELIEF_NONE);

	record_stop_icon = gtk_image_new_from_file("icons/media-playback-stop.svg");
	record_stop_button = gtk_button_new();
	gtk_container_add(GTK_CONTAINER(record_stop_button), record_stop_icon);
	gtk_table_attach_defaults(GTK_TABLE(right_table), record_stop_button, 2, 3, 1, 2);
	gtk_button_set_relief(GTK_BUTTON(record_stop_button), GTK_RELIEF_NONE);

	/* fullscreen buttons */
	fullscreen_enable_icon = gtk_image_new_from_file("icons/view-fullscreen.svg");
	fullscreen_enable_button = gtk_button_new();
	gtk_container_add(GTK_CONTAINER(fullscreen_enable_button), fullscreen_enable_icon);
	g_signal_connect(fullscreen_enable_button, "clicked", G_CALLBACK(enable_Fullscreen), NULL);
	gtk_button_set_relief(fullscreen_enable_button, GTK_RELIEF_NONE);

	fullscreen_disable_icon = gtk_image_new_from_file("icons/view-windowed.svg");
	fullscreen_disable_button = gtk_button_new();
	gtk_container_add(GTK_CONTAINER(fullscreen_disable_button), fullscreen_disable_icon);
	g_signal_connect(fullscreen_disable_button, "clicked", G_CALLBACK(disable_Fullscreen), NULL);
	gtk_button_set_relief(fullscreen_disable_button, GTK_RELIEF_NONE);

	/* joystick button */
// https://commons.wikimedia.org/wiki/File:PlayStation_3_gamepad.svg
	joystick_icon = gtk_image_new_from_file("icons/PlayStation_3_gamepad.svg");
	check_button_joystick = gtk_check_button_new();
	/* gtk_container_add (GTK_CONTAINER (check_button_joystick), joystick_icon); */
	/* łączenie sygnału przeniesione za pierwsze wykrycie joysticka */

	/* video button */
	video_icon = gtk_image_new_from_file("icons/camera-web.svg");
	check_button_video = gtk_check_button_new();
	gtk_toggle_button_set_active(check_button_video, TRUE);

	/* reconnect button */
	reconnect_icon = gtk_image_new_from_file("icons/gnome-modem.svg");
	reconnect_button = gtk_button_new();
	gtk_container_add(GTK_CONTAINER(reconnect_button), reconnect_icon);
	gtk_button_set_relief(reconnect_button, GTK_RELIEF_NONE);

	/* table method */
	gtk_table_attach_defaults(GTK_TABLE(right_table), label_x1, 0, 1, 0, 1);
	gtk_table_attach(GTK_TABLE(right_table), label_y1, 0, 1, 1, 2, GTK_FILL, GTK_FILL, 0, 20);
	gtk_table_attach_defaults(GTK_TABLE(right_table), label_x2, 1, 2, 0, 1);
	gtk_table_attach(GTK_TABLE(right_table), label_y2, 1, 2, 1, 2, GTK_FILL, GTK_FILL, 0, 20);
	gtk_table_attach_defaults(GTK_TABLE(right_table), reconnect_button, 2, 3, 3, 4);
	gtk_table_attach_defaults(GTK_TABLE(right_table), fullscreen_enable_button, 2, 3, 2, 3);
	gtk_table_attach_defaults(GTK_TABLE(right_table), fullscreen_disable_button, 2, 3, 2, 3);
	gtk_table_attach_defaults(GTK_TABLE(right_table), video_icon, 1, 2, 3, 4);
	gtk_table_attach_defaults(GTK_TABLE(right_table), check_button_video, 1, 2, 3, 4);
	gtk_table_attach_defaults(GTK_TABLE(right_table), joystick_icon, 0, 1, 3, 4);
	gtk_table_attach_defaults(GTK_TABLE(right_table), check_button_joystick, 0, 1, 3, 4);

	/* grid method */
// FIXME: works only with GTK+ 3.0
	/*
	 gtk_grid_attach(GTK_GRID(right_table), label_x, 0, 0, 2, 1);
	 gtk_grid_attach(GTK_GRID(right_table), label_y, 0, 1, 2, 1);
	 gtk_grid_attach(GTK_GRID(right_table), label_x2, 1, 0, 2, 1);
	 gtk_grid_attach(GTK_GRID(right_table), label_y2, 1, 1, 2, 1);
	 gtk_grid_attach(GTK_GRID(right_table), fullscreen_enable_button, 2, 2, 1, 1);
	 gtk_grid_attach(GTK_GRID(right_table), fullscreen_disable_button, 2, 2, 1, 1);
	 gtk_grid_attach(GTK_GRID(right_table), video_icon, 1, 3, 1, 1);
	 gtk_grid_attach(GTK_GRID(right_table), check_button_video, 1, 3, 1, 1);
	 gtk_grid_attach(GTK_GRID(right_table), joystick_icon, 0, 3, 1, 1);
	 gtk_grid_attach(GTK_GRID(right_table), check_button_joystick, 0, 3, 1, 1);
	 gtk_grid_attach(GTK_GRID(right_table), check_button_serwokontroler, 0, 2, 1, 1);
	 gtk_grid_attach(GTK_GRID(right_table), check_button_regulator, 1, 2, 1, 1);
	 gtk_grid_attach(GTK_GRID(right_table), quit_button, 2, 3, 1, 1);
	 */

	statusbar = gtk_statusbar_new();
	context_id = gtk_statusbar_get_context_id(GTK_STATUSBAR(statusbar), "Statusbar example");

	/* pakowanie głównych elementów okna programu: */
	vbox = gtk_vbox_new(FALSE, 2);

	/* ustawianie szerokości marginesu wokół elementu */
	gtk_box_pack_start(GTK_BOX(vbox), main_table, TRUE, TRUE, 1);
	gtk_box_pack_start(GTK_BOX(vbox), statusbar, FALSE, TRUE, 1);

	gtk_container_set_border_width(GTK_CONTAINER(main_table), 5);

	gtk_container_add(GTK_CONTAINER(main_window), vbox);
}
コード例 #19
0
static void
setup_datetime_dialog (CcDateTimePanel *self)
{
  CcDateTimePanelPrivate *priv = self->priv;
  GtkAdjustment *adjustment;
  GdkScreen *screen;
  GtkCssProvider *provider;
  GtkWidget *dialog;
  guint num_days;

  setup_am_pm_button (self);

  /* Big time buttons */
  provider = gtk_css_provider_new ();
  gtk_css_provider_load_from_data (GTK_CSS_PROVIDER (provider),
                                   ".gnome-control-center-datetime-setup-time>spinbutton,\n"
                                   ".gnome-control-center-datetime-setup-time>label {\n"
                                   "    font-size: 250%;\n"
                                   "}\n"
                                   ".gnome-control-center-datetime-setup-time>spinbutton>entry {\n"
                                   "    padding: 8px 13px;\n"
                                   "}", -1, NULL);
  screen = gdk_screen_get_default ();
  gtk_style_context_add_provider_for_screen (screen,
                                             GTK_STYLE_PROVIDER (provider),
                                             GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
  g_object_unref (provider);

  dialog = W ("datetime-dialog");
  g_signal_connect (dialog, "delete-event",
                    G_CALLBACK (gtk_widget_hide_on_delete), NULL);

  /* Force the direction for the time, so that the time
   * is presented correctly for RTL languages */
  gtk_widget_set_direction (W ("time_grid"), GTK_TEXT_DIR_LTR);

  /* Month */
  gtk_combo_box_set_active (GTK_COMBO_BOX (W ("month-combobox")),
                            g_date_time_get_month (priv->date) - 1);
  g_signal_connect (G_OBJECT (W("month-combobox")), "changed",
                    G_CALLBACK (month_year_changed), self);

  /* Day */
  num_days = g_date_get_days_in_month (g_date_time_get_month (priv->date),
                                       g_date_time_get_year (priv->date));
  adjustment = (GtkAdjustment*) gtk_adjustment_new (g_date_time_get_day_of_month (priv->date), 1,
                                                    num_days + 1, 1, 10, 1);
  gtk_spin_button_set_adjustment (GTK_SPIN_BUTTON (W ("day-spinbutton")),
                                  adjustment);
  g_signal_connect (G_OBJECT (W ("day-spinbutton")), "value-changed",
                    G_CALLBACK (day_changed), self);

  /* Year */
  adjustment = (GtkAdjustment*) gtk_adjustment_new (g_date_time_get_year (priv->date),
                                                    1, G_MAXDOUBLE, 1,
                                                    10, 1);
  gtk_spin_button_set_adjustment (GTK_SPIN_BUTTON (W ("year-spinbutton")),
                                  adjustment);
  g_signal_connect (G_OBJECT (W ("year-spinbutton")), "value-changed",
                    G_CALLBACK (month_year_changed), self);

  /* Hours and minutes */
  g_signal_connect (W ("h_spinbutton"), "output",
                    G_CALLBACK (format_hours_combobox), self);
  g_signal_connect (W ("m_spinbutton"), "output",
                    G_CALLBACK (format_minutes_combobox), self);

  gtk_spin_button_set_increments (GTK_SPIN_BUTTON (W ("h_spinbutton")), 1, 0);
  gtk_spin_button_set_increments (GTK_SPIN_BUTTON (W ("m_spinbutton")), 1, 0);

  gtk_spin_button_set_range (GTK_SPIN_BUTTON (W ("h_spinbutton")), 0, 23);
  gtk_spin_button_set_range (GTK_SPIN_BUTTON (W ("m_spinbutton")), 0, 59);

  g_signal_connect_swapped (W ("h_spinbutton"), "value-changed",
                            G_CALLBACK (change_time), self);
  g_signal_connect_swapped (W ("m_spinbutton"), "value-changed",
                            G_CALLBACK (change_time), self);
}