comparison pidgin/gtksavedstatuses.c @ 21652:eb2d5ba2a50d

Add a utility function pidgin_dialog_add_button to add buttons to a dialog created by pidgin_create_dialog. This removes a lot of code duplication. Anyone using this branch should keep an eye on the buttons on the dialogs to make sure they are enabled/disabled/displayed/hidden/marinated correctly.
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Tue, 27 Nov 2007 00:15:49 +0000
parents 2a2496044eef
children 1690d040addd
comparison
equal deleted inserted replaced
21651:9107bb853c49 21652:eb2d5ba2a50d
609 list = create_saved_status_list(dialog); 609 list = create_saved_status_list(dialog);
610 gtk_box_pack_start(GTK_BOX(vbox), list, TRUE, TRUE, 0); 610 gtk_box_pack_start(GTK_BOX(vbox), list, TRUE, TRUE, 0);
611 611
612 /* Button box. */ 612 /* Button box. */
613 bbox = pidgin_dialog_get_action_area(GTK_DIALOG(win)); 613 bbox = pidgin_dialog_get_action_area(GTK_DIALOG(win));
614 gtk_box_set_spacing(GTK_BOX(bbox), PIDGIN_HIG_BOX_SPACE);
615 gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);
616 gtk_box_pack_end(GTK_BOX(vbox), bbox, FALSE, TRUE, 0);
617 614
618 /* Use button */ 615 /* Use button */
619 button = pidgin_pixbuf_button_from_stock(_("_Use"), GTK_STOCK_EXECUTE, 616 button = pidgin_pixbuf_button_from_stock(_("_Use"), GTK_STOCK_EXECUTE,
620 PIDGIN_BUTTON_HORIZONTAL); 617 PIDGIN_BUTTON_HORIZONTAL);
621 dialog->use_button = button; 618 dialog->use_button = button;
624 621
625 g_signal_connect(G_OBJECT(button), "clicked", 622 g_signal_connect(G_OBJECT(button), "clicked",
626 G_CALLBACK(status_window_use_cb), dialog); 623 G_CALLBACK(status_window_use_cb), dialog);
627 624
628 /* Add button */ 625 /* Add button */
629 button = gtk_button_new_from_stock(GTK_STOCK_ADD); 626 pidgin_dialog_add_button(GTK_DIALOG(win), GTK_STOCK_ADD,
630 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); 627 G_CALLBACK(status_window_add_cb), dialog);
631
632 g_signal_connect(G_OBJECT(button), "clicked",
633 G_CALLBACK(status_window_add_cb), dialog);
634 628
635 /* Modify button */ 629 /* Modify button */
636 button = gtk_button_new_from_stock(PIDGIN_STOCK_MODIFY); 630 button = pidgin_dialog_add_button(GTK_DIALOG(win), PIDGIN_STOCK_MODIFY,
631 G_CALLBACK(status_window_modify_cb), dialog);
637 dialog->modify_button = button; 632 dialog->modify_button = button;
638 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); 633
634 /* Delete button */
635 button = pidgin_dialog_add_button(GTK_DIALOG(win), GTK_STOCK_DELETE,
636 G_CALLBACK(status_window_delete_cb), dialog);
637 dialog->delete_button = button;
639 gtk_widget_set_sensitive(button, FALSE); 638 gtk_widget_set_sensitive(button, FALSE);
640 639
641 g_signal_connect(G_OBJECT(button), "clicked",
642 G_CALLBACK(status_window_modify_cb), dialog);
643
644 /* Delete button */
645 button = gtk_button_new_from_stock(GTK_STOCK_DELETE);
646 dialog->delete_button = button;
647 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
648 gtk_widget_set_sensitive(button, FALSE);
649
650 g_signal_connect(G_OBJECT(button), "clicked",
651 G_CALLBACK(status_window_delete_cb), dialog);
652
653 /* Close button */ 640 /* Close button */
654 button = gtk_button_new_from_stock(GTK_STOCK_CLOSE); 641 pidgin_dialog_add_button(GTK_DIALOG(win), GTK_STOCK_CLOSE,
655 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); 642 G_CALLBACK(status_window_close_cb), dialog);
656
657 g_signal_connect(G_OBJECT(button), "clicked",
658 G_CALLBACK(status_window_close_cb), dialog);
659 643
660 purple_signal_connect(purple_savedstatuses_get_handle(), 644 purple_signal_connect(purple_savedstatuses_get_handle(),
661 "savedstatus-changed", status_window, 645 "savedstatus-changed", status_window,
662 PURPLE_CALLBACK(current_status_changed), dialog); 646 PURPLE_CALLBACK(current_status_changed), dialog);
663 purple_signal_connect(purple_savedstatuses_get_handle(), 647 purple_signal_connect(purple_savedstatuses_get_handle(),
1258 bbox = pidgin_dialog_get_action_area(GTK_DIALOG(win)); 1242 bbox = pidgin_dialog_get_action_area(GTK_DIALOG(win));
1259 gtk_box_set_spacing(GTK_BOX(bbox), PIDGIN_HIG_BOX_SPACE); 1243 gtk_box_set_spacing(GTK_BOX(bbox), PIDGIN_HIG_BOX_SPACE);
1260 gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); 1244 gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);
1261 1245
1262 /* Cancel button */ 1246 /* Cancel button */
1263 button = gtk_button_new_from_stock(GTK_STOCK_CANCEL); 1247 pidgin_dialog_add_button(GTK_DIALOG(win), GTK_STOCK_CANCEL,
1264 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); 1248 G_CALLBACK(status_editor_cancel_cb), dialog);
1265
1266 g_signal_connect(G_OBJECT(button), "clicked",
1267 G_CALLBACK(status_editor_cancel_cb), dialog);
1268 1249
1269 /* Use button */ 1250 /* Use button */
1270 button = pidgin_pixbuf_button_from_stock(_("_Use"), GTK_STOCK_EXECUTE, 1251 button = pidgin_pixbuf_button_from_stock(_("_Use"), GTK_STOCK_EXECUTE,
1271 PIDGIN_BUTTON_HORIZONTAL); 1252 PIDGIN_BUTTON_HORIZONTAL);
1272 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); 1253 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
1273
1274 g_signal_connect(G_OBJECT(button), "clicked", 1254 g_signal_connect(G_OBJECT(button), "clicked",
1275 G_CALLBACK(status_editor_ok_cb), dialog); 1255 G_CALLBACK(status_editor_ok_cb), dialog);
1276 1256
1277 /* Save & Use button */ 1257 /* Save & Use button */
1278 button = pidgin_pixbuf_button_from_stock(_("Sa_ve & Use"), GTK_STOCK_OK, 1258 button = pidgin_pixbuf_button_from_stock(_("Sa_ve & Use"), GTK_STOCK_OK,
1279 PIDGIN_BUTTON_HORIZONTAL); 1259 PIDGIN_BUTTON_HORIZONTAL);
1280 dialog->saveanduse_button = GTK_BUTTON(button); 1260 dialog->saveanduse_button = GTK_BUTTON(button);
1281 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); 1261 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
1282 if (dialog->original_title == NULL) 1262 if (dialog->original_title == NULL)
1283 gtk_widget_set_sensitive(button, FALSE); 1263 gtk_widget_set_sensitive(button, FALSE);
1284
1285 g_signal_connect(G_OBJECT(button), "clicked", 1264 g_signal_connect(G_OBJECT(button), "clicked",
1286 G_CALLBACK(status_editor_ok_cb), dialog); 1265 G_CALLBACK(status_editor_ok_cb), dialog);
1287 1266
1288 /* Save button */ 1267 /* Save button */
1289 button = gtk_button_new_from_stock(GTK_STOCK_SAVE); 1268 button = pidgin_dialog_add_button(GTK_DIALOG(win), GTK_STOCK_SAVE,
1290 dialog->save_button = GTK_BUTTON(button); 1269 G_CALLBACK(status_editor_ok_cb), dialog);
1291 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
1292 if (dialog->original_title == NULL) 1270 if (dialog->original_title == NULL)
1293 gtk_widget_set_sensitive(button, FALSE); 1271 gtk_widget_set_sensitive(button, FALSE);
1294 1272 dialog->save_button = GTK_BUTTON(button);
1295 g_signal_connect(G_OBJECT(button), "clicked",
1296 G_CALLBACK(status_editor_ok_cb), dialog);
1297 1273
1298 gtk_widget_show_all(win); 1274 gtk_widget_show_all(win);
1299 g_object_unref(sg); 1275 g_object_unref(sg);
1300 } 1276 }
1301 1277
1442 edit_substatus(StatusEditor *status_editor, PurpleAccount *account) 1418 edit_substatus(StatusEditor *status_editor, PurpleAccount *account)
1443 { 1419 {
1444 char *tmp; 1420 char *tmp;
1445 SubStatusEditor *dialog; 1421 SubStatusEditor *dialog;
1446 GtkSizeGroup *sg; 1422 GtkSizeGroup *sg;
1447 GtkWidget *bbox;
1448 GtkWidget *button;
1449 GtkWidget *combo; 1423 GtkWidget *combo;
1450 GtkWidget *hbox; 1424 GtkWidget *hbox;
1451 GtkWidget *frame; 1425 GtkWidget *frame;
1452 GtkWidget *label; 1426 GtkWidget *label;
1453 GtkWidget *text; 1427 GtkWidget *text;
1537 frame = pidgin_create_imhtml(TRUE, &text, &toolbar, NULL); 1511 frame = pidgin_create_imhtml(TRUE, &text, &toolbar, NULL);
1538 dialog->message = GTK_IMHTML(text); 1512 dialog->message = GTK_IMHTML(text);
1539 dialog->toolbar = GTK_IMHTMLTOOLBAR(toolbar); 1513 dialog->toolbar = GTK_IMHTMLTOOLBAR(toolbar);
1540 gtk_box_pack_start(GTK_BOX(hbox), frame, TRUE, TRUE, 0); 1514 gtk_box_pack_start(GTK_BOX(hbox), frame, TRUE, TRUE, 0);
1541 1515
1542 /* Button box */
1543 bbox = pidgin_dialog_get_action_area(GTK_DIALOG(win));
1544 gtk_box_set_spacing(GTK_BOX(bbox), PIDGIN_HIG_BOX_SPACE);
1545 gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);
1546
1547 /* Cancel button */ 1516 /* Cancel button */
1548 button = gtk_button_new_from_stock(GTK_STOCK_CANCEL); 1517 pidgin_dialog_add_button(GTK_DIALOG(win), GTK_STOCK_CANCEL,
1549 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); 1518 G_CALLBACK(substatus_editor_cancel_cb), dialog);
1550
1551 g_signal_connect(G_OBJECT(button), "clicked",
1552 G_CALLBACK(substatus_editor_cancel_cb), dialog);
1553 1519
1554 /* OK button */ 1520 /* OK button */
1555 button = gtk_button_new_from_stock(GTK_STOCK_OK); 1521 pidgin_dialog_add_button(GTK_DIALOG(win), GTK_STOCK_OK,
1556 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); 1522 G_CALLBACK(substatus_editor_ok_cb), dialog);
1557
1558 g_signal_connect(G_OBJECT(button), "clicked",
1559 G_CALLBACK(substatus_editor_ok_cb), dialog);
1560 1523
1561 /* Seed the input widgets with the current values */ 1524 /* Seed the input widgets with the current values */
1562 1525
1563 /* Only look at the saved status if we can't find it in the parent status dialog's substatuses model */ 1526 /* Only look at the saved status if we can't find it in the parent status dialog's substatuses model */
1564 gtk_tree_model_get(GTK_TREE_MODEL(status_editor->model), &iter, 1527 gtk_tree_model_get(GTK_TREE_MODEL(status_editor->model), &iter,