static void
sensor_properties_clicked_cb(GtkButton *button,
                             gpointer data)
{
  IsPreferencesDialog *self = IS_PREFERENCES_DIALOG(data);

  gtk_dialog_response(GTK_DIALOG(self), IS_PREFERENCES_DIALOG_RESPONSE_SENSOR_PROPERTIES);
}
static void
is_preferences_dialog_get_property(GObject *object,
				   guint property_id, GValue *value, GParamSpec *pspec)
{
	IsPreferencesDialog *self = IS_PREFERENCES_DIALOG(object);
	IsPreferencesDialogPrivate *priv = self->priv;

	switch (property_id) {
	case PROP_APPLICATION:
		g_value_set_object(value, priv->application);
		break;
	default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
		break;
	}
}
static void
is_preferences_dialog_set_property(GObject *object,
                                   guint property_id, const GValue *value, GParamSpec *pspec)
{
  IsPreferencesDialog *self = IS_PREFERENCES_DIALOG(object);
  IsPreferencesDialogPrivate *priv = self->priv;
  GtkWidget *scrolled_window;
  IsManager *manager;
  IsIndicatorDisplayFlags flags;

  switch (property_id)
  {
    case PROP_APPLICATION:
      priv->application = g_object_ref(g_value_get_object(value));
      gtk_widget_set_sensitive(priv->display_icon_check_button, TRUE);
      gtk_widget_set_sensitive(priv->display_label_check_button, TRUE);
      gtk_widget_set_sensitive(priv->display_value_check_button, TRUE);

      flags = g_settings_get_int(self->priv->indicator_settings,
                                 "display-flags");
      gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(priv->display_icon_check_button),
                                   flags & IS_INDICATOR_DISPLAY_ICON);
      gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(priv->display_label_check_button),
                                   flags & IS_INDICATOR_DISPLAY_LABEL);
      gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(priv->display_value_check_button),
                                   flags & IS_INDICATOR_DISPLAY_VALUE);
      g_signal_connect(priv->display_icon_check_button, "toggled",
                       G_CALLBACK(display_icon_toggled),
                       self);
      g_signal_connect(priv->display_label_check_button, "toggled",
                       G_CALLBACK(display_label_toggled),
                       self);
      g_signal_connect(priv->display_value_check_button, "toggled",
                       G_CALLBACK(display_value_toggled),
                       self);
      g_signal_connect(priv->indicator_settings, "changed::display-flags",
                       G_CALLBACK(settings_display_flags_changed),
                       self);
      manager = is_application_get_manager(priv->application);
      g_signal_connect(manager, "row-activated",
                       G_CALLBACK(manager_row_activated), self);
      /* control properties button sensitivity */
      g_signal_connect(gtk_tree_view_get_selection(GTK_TREE_VIEW(manager)),
                       "changed", G_CALLBACK(manager_selection_changed),
                       self);
      /* set state of autostart checkbutton */
      gtk_widget_set_sensitive(priv->autostart_check_button, TRUE);
      gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(priv->autostart_check_button),
                                   is_application_get_autostart(priv->application));
      gtk_widget_set_sensitive(priv->celsius_radio_button, TRUE);
      gtk_widget_set_sensitive(priv->fahrenheit_radio_button, TRUE);

      switch (is_application_get_temperature_scale(priv->application))
      {
        case IS_TEMPERATURE_SENSOR_SCALE_CELSIUS:
          gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(priv->celsius_radio_button),
                                       TRUE);
          break;

        case IS_TEMPERATURE_SENSOR_SCALE_FAHRENHEIT:
          gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(priv->fahrenheit_radio_button),
                                       TRUE);
          break;

        case IS_TEMPERATURE_SENSOR_SCALE_INVALID:
        case NUM_IS_TEMPERATURE_SENSOR_SCALE:
        default:
          g_assert_not_reached();
      }
      g_signal_connect(priv->autostart_check_button, "toggled",
                       G_CALLBACK(autostart_toggled), priv->application);
      g_signal_connect(priv->application, "notify::autostart",
                       G_CALLBACK(application_notify_autostart),
                       priv->autostart_check_button);
      scrolled_window = gtk_scrolled_window_new(NULL, NULL);
      gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),
                                     GTK_POLICY_AUTOMATIC,
                                     GTK_POLICY_AUTOMATIC);
      gtk_container_add(GTK_CONTAINER(scrolled_window),
                        GTK_WIDGET(manager));
      gtk_widget_set_hexpand(scrolled_window, TRUE);
      gtk_widget_set_vexpand(scrolled_window, TRUE);
      gtk_grid_attach(GTK_GRID(priv->grid),
                      scrolled_window,
                      0, 4,
                      3, 1);
      break;
    default:
      G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
      break;
  }
}