Commit d81bb54fa0bbcdd54b314b3b3acc7eb3cff0609e
- Diff rendering mode:
- inline
- side by side
gladeui/glade-app.c
(1 / 1)
|   | |||
| 308 | 308 | static void | |
| 309 | 309 | glade_app_show_settings_default (GladeApp *app, GladeWidget *widget, GladeProperty *property) | |
| 310 | 310 | { | |
| 311 | glade_settings_editor_show (app->priv->settings_editor, widget, property); | ||
| 311 | glade_settings_editor_show_dialog (app->priv->settings_editor, widget, property); | ||
| 312 | 312 | } | |
| 313 | 313 | ||
| 314 | 314 | static gboolean |
gladeui/glade-settings-editor.c
(82 / 48)
|   | |||
| 141 | 141 | -1); | |
| 142 | 142 | }; | |
| 143 | 143 | ||
| 144 | static void | ||
| 145 | remove_clicked (GtkButton *button, | ||
| 146 | GladeSettingsEditor *self) | ||
| 147 | { | ||
| 148 | GtkTreeIter iter; | ||
| 149 | GladeProperty *property; | ||
| 150 | GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(self->view)); | ||
| 151 | |||
| 152 | if (!gtk_tree_selection_get_selected (selection, NULL, &iter)) | ||
| 153 | return; | ||
| 154 | |||
| 155 | gtk_tree_model_get (self->data, &iter, | ||
| 156 | GLADE_SETTINGS_EDITOR_COLUMN_PROPERTY, &property, | ||
| 157 | -1); | ||
| 158 | gtk_list_store_remove (GTK_LIST_STORE (self->data), &iter); | ||
| 159 | |||
| 160 | self->property = NULL; | ||
| 161 | glade_property_set_binding (property, NULL); | ||
| 162 | }; | ||
| 163 | |||
| 164 | static void | ||
| 165 | dialog_response (GtkDialog *dialog, | ||
| 166 | GtkResponseType response, | ||
| 167 | GladeSettingsEditor *self) | ||
| 168 | { | ||
| 169 | GtkWidget *content_area = gtk_dialog_get_content_area (GTK_DIALOG (self->dialog)); | ||
| 170 | gtk_container_remove (GTK_CONTAINER (content_area), self->panel); | ||
| 171 | |||
| 172 | gtk_widget_destroy (GTK_WIDGET (dialog)); | ||
| 173 | self->dialog = NULL; | ||
| 174 | }; | ||
| 175 | |||
| 144 | 176 | void | |
| 145 | glade_settings_editor_show (GladeSettingsEditor *self, | ||
| 146 | GladeWidget *widget, | ||
| 147 | GladeProperty *property) | ||
| 177 | glade_settings_editor_show_dialog (GladeSettingsEditor *self, | ||
| 178 | GladeWidget *widget, | ||
| 179 | GladeProperty *property) | ||
| 148 | 180 | { | |
| 181 | GtkWidget *button, *action_area; | ||
| 182 | |||
| 149 | 183 | glade_settings_editor_set_widget (self, widget); | |
| 150 | 184 | glade_settings_editor_set_property (self, property); | |
| 151 | 185 | ||
| 186 | /* Dialog is already showing */ | ||
| 187 | if (self->dialog != NULL) | ||
| 188 | return; | ||
| 189 | |||
| 190 | if (gtk_widget_get_parent (self->panel) != NULL) | ||
| 191 | { | ||
| 192 | g_warning ("glade_settings_editor_show_dialog: this editor's panel widget is " | ||
| 193 | "already packed somewhere."); | ||
| 194 | return; | ||
| 195 | }; | ||
| 196 | |||
| 197 | self->dialog = gtk_dialog_new_with_buttons (_("Settings connections"), | ||
| 198 | GTK_WINDOW (glade_app_get_window ()), 0, | ||
| 199 | GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, | ||
| 200 | NULL); | ||
| 201 | gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (self->dialog))), | ||
| 202 | self->panel); | ||
| 203 | g_signal_connect (self->dialog, "response", G_CALLBACK (dialog_response), self); | ||
| 204 | |||
| 152 | 205 | gtk_widget_show_all (self->dialog); | |
| 153 | 206 | }; | |
| 154 | 207 | ||
| 208 | /* Return the widget to be packed somewhere */ | ||
| 209 | GtkWidget * | ||
| 210 | glade_settings_editor_get_widget (GladeSettingsEditor *self) | ||
| 211 | { | ||
| 212 | /* Warn if things won't work, but return the widget anyway */ | ||
| 213 | if (self->dialog != NULL) | ||
| 214 | g_warning ("glade_settings_editor_get_widget: This settings editor is showing its " | ||
| 215 | "dialog, so its widget cannot be used elsewhere."); | ||
| 216 | else if (gtk_widget_get_parent (self->panel) != NULL) | ||
| 217 | g_warning ("glade_settings_editor_get_widget: Widget is already packed somewhere."); | ||
| 218 | |||
| 219 | return self->panel; | ||
| 220 | }; | ||
| 221 | |||
| 155 | 222 | void | |
| 156 | 223 | glade_settings_editor_set_widget (GladeSettingsEditor *self, | |
| 157 | 224 | GladeWidget *widget) | |
| … | … | ||
| 307 | 307 | glade_signal_free (new_signal);*/ | |
| 308 | 308 | } | |
| 309 | 309 | ||
| 310 | static void | ||
| 311 | remove_clicked (GtkButton *button, | ||
| 312 | GladeSettingsEditor *self) | ||
| 313 | { | ||
| 314 | GtkTreeIter iter; | ||
| 315 | GladeProperty *property; | ||
| 316 | |||
| 317 | if (!gtk_tree_selection_get_selected (gtk_tree_view_get_selection (self->view), | ||
| 318 | NULL, &iter)) | ||
| 319 | return; | ||
| 320 | |||
| 321 | gtk_tree_model_get (self->data, &iter, | ||
| 322 | GLADE_SETTINGS_EDITOR_COLUMN_PROPERTY, &property, | ||
| 323 | -1); | ||
| 324 | gtk_list_store_remove (GTK_LIST_STORE (self->data), &iter); | ||
| 325 | |||
| 326 | self->property = NULL; | ||
| 327 | glade_property_set_binding (property, NULL); | ||
| 328 | }; | ||
| 329 | |||
| 330 | static void | ||
| 331 | dialog_response (GtkDialog *dialog) | ||
| 332 | { | ||
| 333 | gtk_widget_hide (GTK_WIDGET (dialog)); | ||
| 334 | }; | ||
| 335 | |||
| 336 | 310 | static GObject* | |
| 337 | 311 | glade_settings_editor_constructor (GType type, | |
| 338 | 312 | guint n_construct_properties, | |
| … | … | ||
| 316 | 316 | GObject *retval; | |
| 317 | 317 | GtkCellRenderer *cell_renderer; | |
| 318 | 318 | GtkTreeViewColumn *column; | |
| 319 | GtkWidget *frame, *alignment, *button, *action_area; | ||
| 320 | 319 | ||
| 321 | 320 | retval = G_OBJECT_CLASS (glade_settings_editor_parent_class)->constructor | |
| 322 | 321 | (type, n_construct_properties, construct_properties); | |
| … | … | ||
| 324 | 324 | self->data = GTK_TREE_MODEL (gtk_list_store_new (3, GLADE_TYPE_PROPERTY, | |
| 325 | 325 | G_TYPE_STRING, G_TYPE_STRING)); | |
| 326 | 326 | ||
| 327 | self->dialog = gtk_dialog_new_with_buttons (_("Settings connections"), | ||
| 328 | GTK_WINDOW (glade_app_get_window ()), 0, | ||
| 329 | GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, | ||
| 330 | NULL); | ||
| 331 | |||
| 332 | 327 | self->view = gtk_tree_view_new_with_model (self->data); | |
| 333 | 328 | gtk_widget_set_size_request (self->view, 200, 200); | |
| 334 | 329 | ||
| … | … | ||
| 344 | 344 | ||
| 345 | 345 | g_signal_connect (cell_renderer, "edited", G_CALLBACK (key_edited), self); | |
| 346 | 346 | ||
| 347 | gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (self->dialog))), | ||
| 348 | self->view); | ||
| 347 | self->panel = self->view; | ||
| 348 | g_object_ref_sink (self->panel); | ||
| 349 | 349 | ||
| 350 | /* Add 'remove' button to action area. */ | ||
| 351 | button = gtk_button_new_from_stock (GTK_STOCK_REMOVE); | ||
| 352 | g_signal_connect (button, "clicked", remove_clicked, self); | ||
| 353 | |||
| 354 | action_area = gtk_dialog_get_action_area (GTK_DIALOG (self->dialog)); | ||
| 355 | gtk_container_add (GTK_BOX (action_area), button); | ||
| 356 | gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (action_area), button, TRUE); | ||
| 357 | |||
| 358 | g_signal_connect (self->dialog, "response", G_CALLBACK (dialog_response), NULL); | ||
| 359 | |||
| 360 | 350 | return retval; | |
| 361 | 351 | }; | |
| 362 | 352 | ||
| … | … | ||
| 369 | 369 | static void | |
| 370 | 370 | glade_settings_editor_finalize (GObject *object) | |
| 371 | 371 | { | |
| 372 | //GladeSettingsEditor *self = GLADE_SETTINGS_EDITOR (object); | ||
| 372 | GladeSettingsEditor *self = GLADE_SETTINGS_EDITOR (object); | ||
| 373 | 373 | ||
| 374 | g_object_unref (self->panel); | ||
| 375 | if (self->dialog != NULL) | ||
| 376 | gtk_widget_destroy (self->dialog); | ||
| 377 | |||
| 374 | 378 | G_OBJECT_CLASS (glade_settings_editor_parent_class)->finalize (object); | |
| 375 | 379 | } | |
| 376 | 380 | ||
| 377 | 381 | static void | |
| 378 | 382 | glade_settings_editor_init (GladeSettingsEditor *self) | |
| 379 | 383 | { | |
| 384 | /* Editor UI */ | ||
| 385 | self->dialog = NULL; | ||
| 386 | self->panel = NULL; | ||
| 387 | |||
| 388 | /* Things being edited */ | ||
| 380 | 389 | self->widget = NULL; | |
| 381 | 390 | self->property = NULL; | |
| 382 | 391 | self->property_notify_id = 0; |
|   | |||
| 35 | 35 | GladeProperty *property; /* Currently selected property */ | |
| 36 | 36 | int property_notify_id; /* Signal handler connected to notify::settings-key */ | |
| 37 | 37 | ||
| 38 | GtkWidget *dialog, *view; | ||
| 38 | GtkWidget *dialog, *panel, *view; | ||
| 39 | 39 | GtkTreeModel *data; | |
| 40 | 40 | }; | |
| 41 | 41 | ||
| … | … | ||
| 48 | 48 | ||
| 49 | 49 | GladeSettingsEditor *glade_settings_editor_new (); | |
| 50 | 50 | ||
| 51 | void glade_settings_editor_show (GladeSettingsEditor *self, GladeWidget *widget, | ||
| 52 | GladeProperty *property); | ||
| 51 | void glade_settings_editor_show_dialog (GladeSettingsEditor *self, GladeWidget *widget, | ||
| 52 | GladeProperty *property); | ||
| 53 | GtkWidget *glade_settings_editor_get_widget (GladeSettingsEditor *self); | ||
| 53 | 54 | ||
| 54 | 55 | void glade_settings_editor_set_widget (GladeSettingsEditor *self, GladeWidget *widget); | |
| 55 | 56 | void glade_settings_editor_set_property (GladeSettingsEditor *self, GladeProperty *property); |

