/** * erwin - really simple html editor * Copyright (C) 1999-2005 Adrian Reber * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * $Id: erwintoolbar.c,v 1.14 2005/03/25 18:33:43 adrian Exp $ * * $Author: adrian $ * * Description: a lot of toolbars created here * * $Log: erwintoolbar.c,v $ * Revision 1.14 2005/03/25 18:33:43 adrian * use new toolbar api * * Revision 1.13 2005/01/19 21:02:07 adrian * * use new toolbar interface * * don't make it crash anymore * * Revision 1.12 2004/12/20 20:09:46 adrian * * removed USE_GTKHTML ifdefs * * started porting erwin to gtkhtml3 * * Revision 1.11 2004/09/23 20:22:46 erwin * attempt to clone the searchbar from firefox. so far so good. * * Revision 1.10 2004/06/21 21:45:19 erwin * big commit * it has been a long time without a checkout * we are close to version 0.7 * * */ #ifndef lint static const char vcid[] = "$Id: erwintoolbar.c,v 1.14 2005/03/25 18:33:43 adrian Exp $"; #endif /* lint */ #include #include #include #include #include #include "searchbar.h" GtkWidget *main_toolbar(GtkWidget * main_window) { GtkWidget *toolbar; GdkWindow *window; GtkTooltips *tooltip; GtkToolItem *tool_item; tooltip = gtk_tooltips_new (); toolbar = gtk_toolbar_new(); gtk_toolbar_set_orientation((GtkToolbar *) toolbar, GTK_ORIENTATION_VERTICAL); window = main_window->window; tool_item = gtk_tool_button_new_from_stock(GTK_STOCK_NEW); gtk_toolbar_insert(GTK_TOOLBAR(toolbar),tool_item,-1); g_signal_connect(G_OBJECT(tool_item), "clicked", G_CALLBACK(new_file), NULL); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM(tool_item),GTK_TOOLTIPS (tooltip),"Open New File","Open New File"); tool_item = gtk_tool_button_new_from_stock(GTK_STOCK_OPEN); gtk_toolbar_insert(GTK_TOOLBAR(toolbar),tool_item,-1); g_signal_connect(G_OBJECT(tool_item), "clicked", G_CALLBACK(open_file_dlg), NULL); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM(tool_item),GTK_TOOLTIPS (tooltip),"Open Existing File","Open Existing File"); tool_item = gtk_tool_button_new_from_stock(GTK_STOCK_SAVE); gtk_toolbar_insert(GTK_TOOLBAR(toolbar),tool_item,-1); g_signal_connect(G_OBJECT(tool_item), "clicked", G_CALLBACK(save_file), NULL); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM(tool_item),GTK_TOOLTIPS (tooltip),"Save File","Save File"); tool_item = gtk_tool_button_new_from_stock(GTK_STOCK_SAVE_AS); gtk_toolbar_insert(GTK_TOOLBAR(toolbar),tool_item,-1); g_signal_connect(G_OBJECT(tool_item), "clicked", G_CALLBACK(save_file_dlg), NULL); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM(tool_item),GTK_TOOLTIPS (tooltip),"Save File As...","Save File As..."); tool_item = gtk_tool_button_new_from_stock(GTK_STOCK_CLOSE); gtk_toolbar_insert(GTK_TOOLBAR(toolbar),tool_item,-1); g_signal_connect(G_OBJECT(tool_item), "clicked", G_CALLBACK(close_current_file), NULL); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM(tool_item),GTK_TOOLTIPS (tooltip),"Close File","Close File"); tool_item = gtk_tool_button_new_from_stock(GTK_STOCK_QUIT); gtk_toolbar_insert(GTK_TOOLBAR(toolbar),tool_item,-1); g_signal_connect(G_OBJECT(tool_item), "clicked", G_CALLBACK(quit_program), NULL); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM(tool_item),GTK_TOOLTIPS (tooltip),"Exit Erwin Now","Exit Erwin Now"); tool_item = gtk_separator_tool_item_new(); gtk_toolbar_insert(GTK_TOOLBAR(toolbar),tool_item,-1); tool_item = gtk_tool_button_new_from_stock(GTK_STOCK_CUT); gtk_toolbar_insert(GTK_TOOLBAR(toolbar),tool_item,-1); g_signal_connect(G_OBJECT(tool_item), "clicked", G_CALLBACK(cut_to_clipboard), NULL); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM(tool_item),GTK_TOOLTIPS (tooltip),"Cut","Cut"); tool_item = gtk_tool_button_new_from_stock(GTK_STOCK_COPY); gtk_toolbar_insert(GTK_TOOLBAR(toolbar),tool_item,-1); g_signal_connect(G_OBJECT(tool_item), "clicked", G_CALLBACK(copy_to_clipboard), NULL); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM(tool_item),GTK_TOOLTIPS (tooltip),"Copy","Copy"); tool_item = gtk_tool_button_new_from_stock(GTK_STOCK_PASTE); gtk_toolbar_insert(GTK_TOOLBAR(toolbar),tool_item,-1); g_signal_connect(G_OBJECT(tool_item), "clicked", G_CALLBACK(paste_from_clipboard), NULL); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM(tool_item),GTK_TOOLTIPS (tooltip),"Paste","Paste"); tool_item = gtk_tool_button_new_from_stock(GTK_STOCK_FIND); gtk_toolbar_insert(GTK_TOOLBAR(toolbar),tool_item,-1); g_signal_connect(G_OBJECT(tool_item), "clicked", G_CALLBACK(searchbar), NULL); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM(tool_item),GTK_TOOLTIPS (tooltip),"Open Searchbar","Open Searchbar"); tool_item = gtk_separator_tool_item_new(); gtk_toolbar_insert(GTK_TOOLBAR(toolbar),tool_item,-1); tool_item = gtk_tool_button_new_from_stock(GTK_STOCK_CONNECT); gtk_toolbar_insert(GTK_TOOLBAR(toolbar),tool_item,-1); g_signal_connect(G_OBJECT(tool_item), "clicked", G_CALLBACK(view_html), NULL); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM(tool_item),GTK_TOOLTIPS (tooltip),"View Rendered","View Rendered"); gtk_widget_show_all(toolbar); return toolbar; } GtkWidget *html_toolbar(GtkWidget * main_window) { GtkWidget *toolbar, *pixmap_wid; GtkStyle *style; GdkPixmap *pixmap; GdkBitmap *mask; GdkWindow *window; toolbar = gtk_toolbar_new(); style = gtk_widget_get_style(main_window); window = main_window->window; gtk_tooltips_set_delay(GTK_TOOLBAR(toolbar)->tooltips, 100); pixmap = gdk_pixmap_create_from_xpm_d(main_window->window, &mask, &style->bg[GTK_STATE_NORMAL], (gchar **) quick_xpm); pixmap_wid = gtk_pixmap_new(pixmap, mask); gtk_widget_show(pixmap_wid); gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), NULL, "Quickstart", NULL, pixmap_wid, GTK_SIGNAL_FUNC(body_functions), NULL); gtk_toolbar_append_space(GTK_TOOLBAR(toolbar)); gtk_tooltips_set_delay(GTK_TOOLBAR(toolbar)->tooltips, 100); pixmap = gdk_pixmap_create_from_xpm_d(main_window->window, &mask, &style->bg[GTK_STATE_NORMAL], (gchar **) tb_linebreak); pixmap_wid = gtk_pixmap_new(pixmap, mask); gtk_widget_show(pixmap_wid); gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), NULL, "
", NULL, pixmap_wid, GTK_SIGNAL_FUNC(br_functions), NULL); /* PARAGRAPH */ gtk_tooltips_set_delay(GTK_TOOLBAR(toolbar)->tooltips, 100); pixmap = gdk_pixmap_create_from_xpm_d(main_window->window, &mask, &style->bg[GTK_STATE_NORMAL], (gchar **) paragraph); pixmap_wid = gtk_pixmap_new(pixmap, mask); gtk_widget_show(pixmap_wid); gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), NULL, "

", NULL, pixmap_wid, GTK_SIGNAL_FUNC(p_functions), NULL); /*NOBREAKING SPACE */ gtk_tooltips_set_delay(GTK_TOOLBAR(toolbar)->tooltips, 100); pixmap = gdk_pixmap_create_from_xpm_d(main_window->window, &mask, &style->bg[GTK_STATE_NORMAL], (gchar **) space); pixmap_wid = gtk_pixmap_new(pixmap, mask); gtk_widget_show(pixmap_wid); gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), NULL, " ", NULL, pixmap_wid, GTK_SIGNAL_FUNC(nbsp_functions), NULL); /* SPACE */ gtk_toolbar_append_space(GTK_TOOLBAR(toolbar)); gtk_tooltips_set_delay(GTK_TOOLBAR(toolbar)->tooltips, 100); pixmap = gdk_pixmap_create_from_xpm_d(main_window->window, &mask, &style->bg[GTK_STATE_NORMAL], (gchar **) tb_link); pixmap_wid = gtk_pixmap_new(pixmap, mask); gtk_widget_show(pixmap_wid); gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), NULL, "", NULL, pixmap_wid, GTK_SIGNAL_FUNC(href_dialog), NULL); gtk_tooltips_set_delay(GTK_TOOLBAR(toolbar)->tooltips, 100); pixmap = gdk_pixmap_create_from_xpm_d(main_window->window, &mask, &style->bg[GTK_STATE_NORMAL], (gchar **) tb_image); pixmap_wid = gtk_pixmap_new(pixmap, mask); gtk_widget_show(pixmap_wid); gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), NULL, "insert image link", NULL, pixmap_wid, GTK_SIGNAL_FUNC(img_functions), NULL); /* SPACE */ gtk_toolbar_append_space(GTK_TOOLBAR(toolbar)); /* EMPHASIS */ gtk_tooltips_set_delay(GTK_TOOLBAR(toolbar)->tooltips, 100); pixmap = gdk_pixmap_create_from_xpm_d(main_window->window, &mask, &style->bg[GTK_STATE_NORMAL], (gchar **) tb_emphasis); pixmap_wid = gtk_pixmap_new(pixmap, mask); gtk_widget_show(pixmap_wid); gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), NULL, "", NULL, pixmap_wid, GTK_SIGNAL_FUNC(em_functions), NULL); /*STRONG */ gtk_tooltips_set_delay(GTK_TOOLBAR(toolbar)->tooltips, 100); pixmap = gdk_pixmap_create_from_xpm_d(main_window->window, &mask, &style->bg[GTK_STATE_NORMAL], (gchar **) tb_strong); pixmap_wid = gtk_pixmap_new(pixmap, mask); gtk_widget_show(pixmap_wid); gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), NULL, "", NULL, pixmap_wid, GTK_SIGNAL_FUNC(strong_functions), NULL); /*SMALL */ pixmap_wid = gtk_image_new_from_file(SVG_DIR "/small.svg"); gtk_widget_show(pixmap_wid); gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), NULL, "", NULL, pixmap_wid, GTK_SIGNAL_FUNC(small_functions), NULL); /*STRIKE */ gtk_toolbar_insert_stock(GTK_TOOLBAR(toolbar), GTK_STOCK_STRIKETHROUGH, "", NULL, GTK_SIGNAL_FUNC(strike_functions), NULL, -1); /*SUB */ gtk_tooltips_set_delay(GTK_TOOLBAR(toolbar)->tooltips, 100); pixmap = gdk_pixmap_create_from_xpm_d(main_window->window, &mask, &style->bg[GTK_STATE_NORMAL], (gchar **) tb_subscript); pixmap_wid = gtk_pixmap_new(pixmap, mask); gtk_widget_show(pixmap_wid); gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), NULL, "", NULL, pixmap_wid, GTK_SIGNAL_FUNC(sub_functions), NULL); /*SUP */ gtk_tooltips_set_delay(GTK_TOOLBAR(toolbar)->tooltips, 100); pixmap = gdk_pixmap_create_from_xpm_d(main_window->window, &mask, &style->bg[GTK_STATE_NORMAL], (gchar **) tb_superscript); pixmap_wid = gtk_pixmap_new(pixmap, mask); gtk_widget_show(pixmap_wid); gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), NULL, "", NULL, pixmap_wid, GTK_SIGNAL_FUNC(sup_functions), NULL); return toolbar; } GtkWidget *font_toolbar(GtkWidget * main_window) { GtkWidget *toolbar, *pixmap_wid; GtkStyle *style; GdkPixmap *pixmap; GdkBitmap *mask; GdkWindow *window; toolbar = gtk_toolbar_new(); style = gtk_widget_get_style(main_window); window = main_window->window; /*---menus for h1...h3---*/ gtk_tooltips_set_delay(GTK_TOOLBAR(toolbar)->tooltips, 100); pixmap = gdk_pixmap_create_from_xpm_d(main_window->window, &mask, &style->bg[GTK_STATE_NORMAL], (gchar **) tb_h1); pixmap_wid = gtk_pixmap_new(pixmap, mask); pixmap_wid = gtk_image_new_from_file(SVG_DIR "/h11.svg"); gtk_widget_show(pixmap_wid); gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), NULL, "

", NULL, pixmap_wid, GTK_SIGNAL_FUNC(h1_functions), NULL); gtk_tooltips_set_delay(GTK_TOOLBAR(toolbar)->tooltips, 100); pixmap = gdk_pixmap_create_from_xpm_d(main_window->window, &mask, &style->bg[GTK_STATE_NORMAL], (gchar **) tb_h2); pixmap_wid = gtk_pixmap_new(pixmap, mask); pixmap_wid = gtk_image_new_from_file(SVG_DIR "/h22.svg"); gtk_widget_show(pixmap_wid); gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), NULL, "

", NULL, pixmap_wid, GTK_SIGNAL_FUNC(h2_functions), NULL); gtk_tooltips_set_delay(GTK_TOOLBAR(toolbar)->tooltips, 100); pixmap = gdk_pixmap_create_from_xpm_d(main_window->window, &mask, &style->bg[GTK_STATE_NORMAL], (gchar **) tb_h3); pixmap_wid = gtk_pixmap_new(pixmap, mask); pixmap_wid = gtk_image_new_from_file(SVG_DIR "/h33.svg"); gtk_widget_show(pixmap_wid); gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), NULL, "

", NULL, pixmap_wid, GTK_SIGNAL_FUNC(h3_functions), NULL); /*Space in the toolbar */ gtk_toolbar_append_space(GTK_TOOLBAR(toolbar)); /*center button */ gtk_toolbar_insert_stock(GTK_TOOLBAR(toolbar), GTK_STOCK_JUSTIFY_CENTER, "
", NULL, GTK_SIGNAL_FUNC(center_functions), NULL, -1); /*Space in the toolbar */ gtk_toolbar_append_space(GTK_TOOLBAR(toolbar)); /*bold button */ gtk_toolbar_insert_stock(GTK_TOOLBAR(toolbar), GTK_STOCK_BOLD, "", NULL, GTK_SIGNAL_FUNC(bold_functions), NULL, -1); /*italic button */ gtk_toolbar_insert_stock(GTK_TOOLBAR(toolbar), GTK_STOCK_ITALIC, "", NULL, GTK_SIGNAL_FUNC(italic_functions), NULL, -1); /*underline button */ gtk_toolbar_insert_stock(GTK_TOOLBAR(toolbar), GTK_STOCK_UNDERLINE, "", NULL, GTK_SIGNAL_FUNC(underline_functions), NULL, -1); /*Space in the toolbar */ gtk_toolbar_append_space(GTK_TOOLBAR(toolbar)); /*fontface button */ gtk_toolbar_insert_stock(GTK_TOOLBAR(toolbar), GTK_STOCK_SELECT_FONT, "window; /*table wizard button */ gtk_tooltips_set_delay(GTK_TOOLBAR(toolbar)->tooltips, 100); pixmap = gdk_pixmap_create_from_xpm_d(main_window->window, &mask, &style->bg[GTK_STATE_NORMAL], (gchar **) html_table_xpm); pixmap_wid = gtk_pixmap_new(pixmap, mask); gtk_widget_show(pixmap_wid); gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), NULL, "TABLE-WIZARD", NULL, pixmap_wid, GTK_SIGNAL_FUNC(table_wizard), NULL); /*Space in the toolbar */ gtk_toolbar_append_space(GTK_TOOLBAR(toolbar)); /*Table button */ gtk_tooltips_set_delay(GTK_TOOLBAR(toolbar)->tooltips, 100); pixmap = gdk_pixmap_create_from_xpm_d(main_window->window, &mask, &style->bg[GTK_STATE_NORMAL], (gchar **) tbl_xpm); pixmap_wid = gtk_pixmap_new(pixmap, mask); gtk_widget_show(pixmap_wid); gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), NULL, "", NULL, pixmap_wid, GTK_SIGNAL_FUNC(table_functions), NULL); /*th button */ gtk_tooltips_set_delay(GTK_TOOLBAR(toolbar)->tooltips, 100); pixmap = gdk_pixmap_create_from_xpm_d(main_window->window, &mask, &style->bg[GTK_STATE_NORMAL], (gchar **) th_xpm); pixmap_wid = gtk_pixmap_new(pixmap, mask); gtk_widget_show(pixmap_wid); gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), NULL, "", NULL, pixmap_wid, GTK_SIGNAL_FUNC(tr_functions), NULL); /*td button */ gtk_tooltips_set_delay(GTK_TOOLBAR(toolbar)->tooltips, 100); pixmap = gdk_pixmap_create_from_xpm_d(main_window->window, &mask, &style->bg[GTK_STATE_NORMAL], (gchar **) td_xpm); pixmap_wid = gtk_pixmap_new(pixmap, mask); gtk_widget_show(pixmap_wid); gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), NULL, "
", NULL, pixmap_wid, GTK_SIGNAL_FUNC(th_functions), NULL); /*TR button */ gtk_tooltips_set_delay(GTK_TOOLBAR(toolbar)->tooltips, 100); pixmap = gdk_pixmap_create_from_xpm_d(main_window->window, &mask, &style->bg[GTK_STATE_NORMAL], (gchar **) tr_xpm); pixmap_wid = gtk_pixmap_new(pixmap, mask); gtk_widget_show(pixmap_wid); gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), NULL, "
", NULL, pixmap_wid, GTK_SIGNAL_FUNC(td_functions), NULL); /*Space in the toolbar */ gtk_toolbar_append_space(GTK_TOOLBAR(toolbar)); /*OL button */ gtk_tooltips_set_delay(GTK_TOOLBAR(toolbar)->tooltips, 100); pixmap = gdk_pixmap_create_from_xpm_d(main_window->window, &mask, &style->bg[GTK_STATE_NORMAL], (gchar **) orderedlist); pixmap_wid = gtk_pixmap_new(pixmap, mask); gtk_widget_show(pixmap_wid); gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), NULL, "Ordered List
    ", NULL, pixmap_wid, GTK_SIGNAL_FUNC(ol_functions), NULL); /*UL button */ gtk_tooltips_set_delay(GTK_TOOLBAR(toolbar)->tooltips, 100); pixmap = gdk_pixmap_create_from_xpm_d(main_window->window, &mask, &style->bg[GTK_STATE_NORMAL], (gchar **) unorderedlist); pixmap_wid = gtk_pixmap_new(pixmap, mask); gtk_widget_show(pixmap_wid); gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), NULL, "Unordered List
      ", NULL, pixmap_wid, GTK_SIGNAL_FUNC(ul_functions), NULL); /*LI button */ gtk_tooltips_set_delay(GTK_TOOLBAR(toolbar)->tooltips, 100); pixmap = gdk_pixmap_create_from_xpm_d(main_window->window, &mask, &style->bg[GTK_STATE_NORMAL], (gchar **) listitem); pixmap_wid = gtk_pixmap_new(pixmap, mask); gtk_widget_show(pixmap_wid); gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), NULL, "Listitem
    • ", NULL, pixmap_wid, GTK_SIGNAL_FUNC(li_functions), NULL); return toolbar; }