pidgin/gtkwebviewtoolbar.c

changeset 35935
98e92d543d73
parent 35839
a7f91bd51911
child 35947
0c93751c7c96
equal deleted inserted replaced
35932:1c082451371d 35935:98e92d543d73
1502 gtk_toolbar_set_icon_size(GTK_TOOLBAR(priv->wide_view), 1502 gtk_toolbar_set_icon_size(GTK_TOOLBAR(priv->wide_view),
1503 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL)); 1503 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL));
1504 gtk_toolbar_set_style(GTK_TOOLBAR(priv->wide_view), GTK_TOOLBAR_ICONS); 1504 gtk_toolbar_set_style(GTK_TOOLBAR(priv->wide_view), GTK_TOOLBAR_ICONS);
1505 1505
1506 for (i = 0; i < G_N_ELEMENTS(layout); i++) { 1506 for (i = 0; i < G_N_ELEMENTS(layout); i++) {
1507 if (layout[i]) 1507 if (layout[i]) {
1508 item = GTK_TOOL_ITEM(gtk_action_create_tool_item(layout[i])); 1508 item = GTK_TOOL_ITEM(gtk_action_create_tool_item(layout[i]));
1509 else 1509 g_object_set_data_full(G_OBJECT(item), "action-name",
1510 g_strdup(gtk_action_get_name(layout[i])), g_free);
1511 } else
1510 item = gtk_separator_tool_item_new(); 1512 item = gtk_separator_tool_item_new();
1511 gtk_toolbar_insert(GTK_TOOLBAR(priv->wide_view), item, -1); 1513 gtk_toolbar_insert(GTK_TOOLBAR(priv->wide_view), item, -1);
1512 } 1514 }
1513 } 1515 }
1514 1516
1517 static inline void
1518 lean_view_add_menu_item(GtkWidget *menu, GtkAction *action)
1519 {
1520 GtkWidget *menuitem;
1521
1522 menuitem = gtk_action_create_menu_item(action);
1523 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
1524 g_object_set_data_full(G_OBJECT(menuitem), "action-name",
1525 g_strdup(gtk_action_get_name(action)), g_free);
1526 }
1527
1515 static void 1528 static void
1516 pidgin_webviewtoolbar_create_lean_view(PidginWebViewToolbar *toolbar) 1529 pidgin_webviewtoolbar_create_lean_view(PidginWebViewToolbar *toolbar)
1517 { 1530 {
1518 PidginWebViewToolbarPriv *priv = PIDGIN_WEBVIEWTOOLBAR_GET_PRIVATE(toolbar); 1531 PidginWebViewToolbarPriv *priv = PIDGIN_WEBVIEWTOOLBAR_GET_PRIVATE(toolbar);
1519 GtkWidget *label; 1532 GtkWidget *label;
1520 GtkWidget *menuitem;
1521 GtkToolItem *sep; 1533 GtkToolItem *sep;
1522 GtkToolItem *font_button; 1534 GtkToolItem *font_button;
1523 GtkWidget *font_menu; 1535 GtkWidget *font_menu;
1524 GtkToolItem *insert_button; 1536 GtkToolItem *insert_button;
1525 GtkWidget *insert_menu; 1537 GtkWidget *insert_menu;
1529 priv->lean_view = gtk_toolbar_new(); 1541 priv->lean_view = gtk_toolbar_new();
1530 gtk_toolbar_set_icon_size(GTK_TOOLBAR(priv->lean_view), 1542 gtk_toolbar_set_icon_size(GTK_TOOLBAR(priv->lean_view),
1531 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL)); 1543 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL));
1532 gtk_toolbar_set_style(GTK_TOOLBAR(priv->lean_view), GTK_TOOLBAR_BOTH_HORIZ); 1544 gtk_toolbar_set_style(GTK_TOOLBAR(priv->lean_view), GTK_TOOLBAR_BOTH_HORIZ);
1533 1545
1534 #define ADD_MENU_ITEM(menu, item) \
1535 menuitem = gtk_action_create_menu_item((item)); \
1536 gtk_menu_shell_append(GTK_MENU_SHELL((menu)), menuitem);
1537
1538 /* Fonts */ 1546 /* Fonts */
1539 font_button = gtk_toggle_tool_button_new(); 1547 font_button = gtk_toggle_tool_button_new();
1548 g_object_set_data_full(G_OBJECT(font_button), "action-name",
1549 g_strdup("font"), g_free);
1540 gtk_toolbar_insert(GTK_TOOLBAR(priv->lean_view), font_button, -1); 1550 gtk_toolbar_insert(GTK_TOOLBAR(priv->lean_view), font_button, -1);
1541 gtk_tool_item_set_is_important(font_button, TRUE); 1551 gtk_tool_item_set_is_important(font_button, TRUE);
1542 gtk_tool_button_set_stock_id(GTK_TOOL_BUTTON(font_button), GTK_STOCK_BOLD); 1552 gtk_tool_button_set_stock_id(GTK_TOOL_BUTTON(font_button), GTK_STOCK_BOLD);
1543 priv->font_label = label = gtk_label_new_with_mnemonic(_("_Font")); 1553 priv->font_label = label = gtk_label_new_with_mnemonic(_("_Font"));
1544 gtk_label_set_use_markup(GTK_LABEL(label), TRUE); 1554 gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
1545 gtk_tool_button_set_label_widget(GTK_TOOL_BUTTON(font_button), label); 1555 gtk_tool_button_set_label_widget(GTK_TOOL_BUTTON(font_button), label);
1546 1556
1547 priv->font_menu = font_menu = gtk_menu_new(); 1557 priv->font_menu = font_menu = gtk_menu_new();
1548 1558 g_object_set_data(G_OBJECT(font_button), "menu", font_menu);
1549 ADD_MENU_ITEM(font_menu, priv->bold); 1559
1550 ADD_MENU_ITEM(font_menu, priv->italic); 1560 lean_view_add_menu_item(font_menu, priv->bold);
1551 ADD_MENU_ITEM(font_menu, priv->underline); 1561 lean_view_add_menu_item(font_menu, priv->italic);
1552 ADD_MENU_ITEM(font_menu, priv->strike); 1562 lean_view_add_menu_item(font_menu, priv->underline);
1553 ADD_MENU_ITEM(font_menu, priv->larger_size); 1563 lean_view_add_menu_item(font_menu, priv->strike);
1564 lean_view_add_menu_item(font_menu, priv->larger_size);
1554 #if 0 1565 #if 0
1555 ADD_MENU_ITEM(font_menu, priv->normal_size); 1566 lean_view_add_menu_item(font_menu, priv->normal_size);
1556 #endif 1567 #endif
1557 ADD_MENU_ITEM(font_menu, priv->smaller_size); 1568 lean_view_add_menu_item(font_menu, priv->smaller_size);
1558 ADD_MENU_ITEM(font_menu, priv->font); 1569 lean_view_add_menu_item(font_menu, priv->font);
1559 ADD_MENU_ITEM(font_menu, priv->fgcolor); 1570 lean_view_add_menu_item(font_menu, priv->fgcolor);
1560 ADD_MENU_ITEM(font_menu, priv->bgcolor); 1571 lean_view_add_menu_item(font_menu, priv->bgcolor);
1561 ADD_MENU_ITEM(font_menu, priv->clear); 1572 lean_view_add_menu_item(font_menu, priv->clear);
1562 1573
1563 g_signal_connect(G_OBJECT(font_button), "toggled", 1574 g_signal_connect(G_OBJECT(font_button), "toggled",
1564 G_CALLBACK(pidgin_menu_clicked), font_menu); 1575 G_CALLBACK(pidgin_menu_clicked), font_menu);
1565 g_signal_connect_object(G_OBJECT(font_menu), "deactivate", 1576 g_signal_connect_object(G_OBJECT(font_menu), "deactivate",
1566 G_CALLBACK(pidgin_menu_deactivate), font_button, 0); 1577 G_CALLBACK(pidgin_menu_deactivate), font_button, 0);
1571 sep = gtk_separator_tool_item_new(); 1582 sep = gtk_separator_tool_item_new();
1572 gtk_toolbar_insert(GTK_TOOLBAR(priv->lean_view), sep, -1); 1583 gtk_toolbar_insert(GTK_TOOLBAR(priv->lean_view), sep, -1);
1573 1584
1574 /* Insert */ 1585 /* Insert */
1575 insert_button = gtk_toggle_tool_button_new(); 1586 insert_button = gtk_toggle_tool_button_new();
1587 g_object_set_data_full(G_OBJECT(insert_button), "action-name",
1588 g_strdup("insert"), g_free);
1576 gtk_toolbar_insert(GTK_TOOLBAR(priv->lean_view), insert_button, -1); 1589 gtk_toolbar_insert(GTK_TOOLBAR(priv->lean_view), insert_button, -1);
1577 gtk_tool_item_set_is_important(insert_button, TRUE); 1590 gtk_tool_item_set_is_important(insert_button, TRUE);
1578 gtk_tool_button_set_stock_id(GTK_TOOL_BUTTON(insert_button), 1591 gtk_tool_button_set_stock_id(GTK_TOOL_BUTTON(insert_button),
1579 PIDGIN_STOCK_TOOLBAR_INSERT); 1592 PIDGIN_STOCK_TOOLBAR_INSERT);
1580 label = gtk_label_new_with_mnemonic(_("_Insert")); 1593 label = gtk_label_new_with_mnemonic(_("_Insert"));
1581 gtk_tool_button_set_label_widget(GTK_TOOL_BUTTON(insert_button), label); 1594 gtk_tool_button_set_label_widget(GTK_TOOL_BUTTON(insert_button), label);
1582 1595
1583 priv->insert_menu = insert_menu = gtk_menu_new(); 1596 priv->insert_menu = insert_menu = gtk_menu_new();
1584 1597 g_object_set_data(G_OBJECT(insert_button), "menu", insert_menu);
1585 ADD_MENU_ITEM(insert_menu, priv->image); 1598
1586 ADD_MENU_ITEM(insert_menu, priv->link); 1599 lean_view_add_menu_item(insert_menu, priv->image);
1587 ADD_MENU_ITEM(insert_menu, priv->hr); 1600 lean_view_add_menu_item(insert_menu, priv->link);
1601 lean_view_add_menu_item(insert_menu, priv->hr);
1588 1602
1589 g_signal_connect(G_OBJECT(insert_button), "toggled", 1603 g_signal_connect(G_OBJECT(insert_button), "toggled",
1590 G_CALLBACK(pidgin_menu_clicked), insert_menu); 1604 G_CALLBACK(pidgin_menu_clicked), insert_menu);
1591 g_signal_connect_object(G_OBJECT(insert_menu), "deactivate", 1605 g_signal_connect_object(G_OBJECT(insert_menu), "deactivate",
1592 G_CALLBACK(pidgin_menu_deactivate), insert_button, 0); 1606 G_CALLBACK(pidgin_menu_deactivate), insert_button, 0);
1595 sep = gtk_separator_tool_item_new(); 1609 sep = gtk_separator_tool_item_new();
1596 gtk_toolbar_insert(GTK_TOOLBAR(priv->lean_view), sep, -1); 1610 gtk_toolbar_insert(GTK_TOOLBAR(priv->lean_view), sep, -1);
1597 1611
1598 /* Smiley */ 1612 /* Smiley */
1599 smiley_button = gtk_action_create_tool_item(priv->smiley); 1613 smiley_button = gtk_action_create_tool_item(priv->smiley);
1614 g_object_set_data_full(G_OBJECT(smiley_button), "action-name",
1615 g_strdup("smiley"), g_free);
1600 gtk_toolbar_insert(GTK_TOOLBAR(priv->lean_view), 1616 gtk_toolbar_insert(GTK_TOOLBAR(priv->lean_view),
1601 GTK_TOOL_ITEM(smiley_button), -1); 1617 GTK_TOOL_ITEM(smiley_button), -1);
1602 1618
1603 /* Sep */ 1619 /* Sep */
1604 sep = gtk_separator_tool_item_new(); 1620 sep = gtk_separator_tool_item_new();
1605 gtk_toolbar_insert(GTK_TOOLBAR(priv->lean_view), sep, -1); 1621 gtk_toolbar_insert(GTK_TOOLBAR(priv->lean_view), sep, -1);
1606 1622
1607 /* Attention */ 1623 /* Attention */
1608 attention_button = gtk_action_create_tool_item(priv->attention); 1624 attention_button = gtk_action_create_tool_item(priv->attention);
1625 g_object_set_data_full(G_OBJECT(attention_button), "action-name",
1626 g_strdup("attention"), g_free);
1609 gtk_toolbar_insert(GTK_TOOLBAR(priv->lean_view), 1627 gtk_toolbar_insert(GTK_TOOLBAR(priv->lean_view),
1610 GTK_TOOL_ITEM(attention_button), -1); 1628 GTK_TOOL_ITEM(attention_button), -1);
1611
1612 #undef ADD_MENU_ITEM
1613 } 1629 }
1614 1630
1615 static void 1631 static void
1616 pidgin_webviewtoolbar_init(PidginWebViewToolbar *toolbar) 1632 pidgin_webviewtoolbar_init(PidginWebViewToolbar *toolbar)
1617 { 1633 {
1813 break; 1829 break;
1814 } 1830 }
1815 1831
1816 gtk_action_activate(act); 1832 gtk_action_activate(act);
1817 } 1833 }
1834
1835 GtkWidget *
1836 pidgin_webviewtoolbar_get_wide_view(PidginWebViewToolbar *toolbar)
1837 {
1838 PidginWebViewToolbarPriv *priv = PIDGIN_WEBVIEWTOOLBAR_GET_PRIVATE(toolbar);
1839
1840 g_return_val_if_fail(toolbar != NULL, NULL);
1841
1842 return priv->wide_view;
1843 }
1844
1845 GtkWidget *
1846 pidgin_webviewtoolbar_get_lean_view(PidginWebViewToolbar *toolbar)
1847 {
1848 PidginWebViewToolbarPriv *priv = PIDGIN_WEBVIEWTOOLBAR_GET_PRIVATE(toolbar);
1849
1850 g_return_val_if_fail(toolbar != NULL, NULL);
1851
1852 return priv->lean_view;
1853 }

mercurial