Patch Minimo in mozilla-source-1.7.3.tar.bz2
João Leite <[email protected]> Thu, 23 Dec 2004 15:23:02 -0400
| Newsgroups | gmane.comp.mozilla.devel.small-devices |
|---|---|
| Message-ID | <[email protected]> |
Hi all, In this patch we've inserted on Minimo.cpp the notebook struct and new toolbar, that is located on botton window, for use notebook buttons and new other functions, which you can make. We are using mozilla-source-1.7.3.tar.bz2. We need help to connect the find function, because we try to do this. Best Regards --
patch_10LE_minimo.diff
(text/x-patch, 12.6 KB)
diff -urN mozilla/embedding/minimo/app/icons.h mozilla_10LE/embedding/minimo/app/icons.h
--- mozilla/embedding/minimo/app/icons.h 2004-01-30 03:36:31.000000000 -0400
+++ mozilla_10LE/embedding/minimo/app/icons.h 2004-12-23 14:47:10.000000000 -0400
@@ -347,3 +347,69 @@
" .oooOooOooo. ",
" .oooooooo. ",
" ........ "};
+
+/* XPM */
+static char * show_notebook_xpm[] = {
+"16 16 2 1",
+" c None",
+". c #000000",
+" ",
+" .............. ",
+" .............. ",
+" .. .. .. ",
+" .. .. .. ",
+" .. .. .. ",
+" .. .. .. ",
+" .. .. .. ",
+" .. .. .. ",
+" .. .. .. ",
+" .. .. .. ",
+" .. .. .. ",
+" .. .. .. ",
+" .............. ",
+" .............. ",
+" "};
+
+/* XPM */
+static char * add_notebook_xpm[] = {
+"16 16 2 1",
+" c None",
+". c #000000",
+" ",
+" .............. ",
+" .............. ",
+" .. .. .. ",
+" .. .. .. ",
+" .. .. .. ",
+" ........ .. ",
+" ....... .. ",
+" .. . .. ",
+" .. . .. ",
+" .. ..... .. ",
+" .. . .. ",
+" .. . .. ",
+" .............. ",
+" .............. ",
+" "};
+
+/* XPM */
+static char * rm_notebook_xpm[] = {
+"16 16 2 1",
+" c None",
+". c #000000",
+" ",
+" .............. ",
+" .............. ",
+" .. .. .. ",
+" .. .. .. ",
+" .. .. .. ",
+" ........ .. ",
+" ....... .. ",
+" .. .. ",
+" .. .. ",
+" .. ..... .. ",
+" .. .. ",
+" .. .. ",
+" .............. ",
+" .............. ",
+" "};
diff -urN mozilla/embedding/minimo/app/Minimo.cpp mozilla_10LE/embedding/minimo/app/Minimo.cpp
--- mozilla/embedding/minimo/app/Minimo.cpp 2004-02-01 01:22:51.000000000 -0400
+++ mozilla_10LE/embedding/minimo/app/Minimo.cpp 2004-12-23 15:02:52.000000000 -0400
@@ -20,6 +20,16 @@
* Doug Turner <[email protected]> Branched from TestGtkEmbed.cpp
*/
+
+/* This file was modified by 10LE Lab
+ * Carlos Aguiar <[email protected]>
+ * Afonso Costa <[email protected]>
+ * Diego Gonzalez <[email protected]>
+ * Joao Leite <[email protected]>
+ * Raoni Novellino <[email protected]>
+ * Claudia Roessing <[email protected]>
+ */
+
#include "icons.h"
#include "gtkmozembed.h"
#include <gtk/gtk.h>
@@ -66,6 +76,20 @@
GtkWidget *stopIcon[MINIMO_THROBBER_ICON_MAX];
GtkWidget *stopReloadIcon;
+/*
+ * Variables which are used in Notebook and Toolbar down
+ */
+
+ gboolean show_tabs;
+ GtkWidget *notebook;
+ GtkWidget *label_notebook;
+ GtkWidget *active_page;
+ GtkWidget *expander;
+ GtkWidget *toolbar_down;
+ GtkWidget *tab_button;
+ GtkWidget *btaddtab;
+ GtkWidget *btclosetab;
+
const char *statusMessage;
int loadPercent;
int bytesLoaded;
@@ -150,6 +174,19 @@
MinimoBrowser *browser);
static gint dom_mouse_out_cb (GtkMozEmbed *embed, nsIDOMMouseEvent *event,
MinimoBrowser *browser);
+
+/*
+ * Insert functions for notebook control
+ */
+
+
+GtkWidget *get_active_tab (MinimoBrowser *browser);
+void open_new_tab_cb (GtkButton *button, MinimoBrowser *browser);
+void close_current_tab_cb (GtkMenuItem *menuitem, MinimoBrowser *browser);
+void show_hide_tabs_cb (GtkButton *button, MinimoBrowser *browser);
+void switch_page_cb (GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, MinimoBrowser *browser);
+void update_ui (MinimoBrowser *browser);
+
// callbacks from the singleton object
static void new_window_orphan_cb (GtkMozEmbedSingle *embed,
@@ -202,7 +239,7 @@
full_path = g_strdup_printf("%s/%s", home_path, ".Minimo");
gtk_moz_embed_set_profile_path(full_path, "Minimo");
-
+
MinimoBrowser *browser = new_gtk_browser(GTK_MOZ_EMBED_FLAG_DEFAULTCHROME);
// set our minimum size
@@ -226,7 +263,7 @@
gtk_signal_connect(GTK_OBJECT(single), "new_window_orphan",
GTK_SIGNAL_FUNC(new_window_orphan_cb), NULL);
-
+
gtk_main();
}
@@ -251,6 +288,9 @@
{
guint32 actualChromeMask = chromeMask;
MinimoBrowser *browser = 0;
+
+ GtkTooltips *tooltips;
+ tooltips = gtk_tooltips_new();
num_browsers++;
@@ -315,7 +355,10 @@
browser->forwardIcon = NewIconFromXPM(browser->toolbar, forward_xpm);
browser->homeIcon = NewIconFromXPM(browser->toolbar, home_xpm);
browser->reloadIcon = NewIconFromXPM(browser->toolbar, reload_xpm);
-
+ browser->tab_button = NewIconFromXPM(browser->toolbar, show_notebook_xpm);
+ browser->btaddtab = NewIconFromXPM(browser->toolbar, add_notebook_xpm);
+ browser->btclosetab = NewIconFromXPM(browser->toolbar, rm_notebook_xpm);
+
browser->throbberID = 0;
browser->stopIcon[0] = NewIconFromXPM(browser->toolbar, stop_1_xpm);
browser->stopIcon[1] = NewIconFromXPM(browser->toolbar, stop_2_xpm);
@@ -376,18 +419,42 @@
g_signal_connect(G_OBJECT(browser->urlEntry), "focus-out-event",
G_CALLBACK(urlEntry_focus_out), browser);
+/*
+ * Create the Notebook
+ */
+
+ browser->notebook = gtk_notebook_new ();
+ gtk_box_pack_start (GTK_BOX (browser->topLevelVBox), browser->notebook, TRUE, TRUE, 0);
+ browser->show_tabs = FALSE;
+ gtk_notebook_set_show_tabs (GTK_NOTEBOOK(browser->notebook), browser->show_tabs);
+ gtk_notebook_set_tab_pos (GTK_NOTEBOOK (browser->notebook), GTK_POS_LEFT);
+ gtk_widget_show (browser->notebook);
+
// add it to the hbox
gtk_box_pack_start(GTK_BOX(browser->toolbarHBox), browser->urlEntry,
TRUE, // expand
TRUE, // fill
0); // padding
+
+
// create our new gtk moz embed widget
browser->mozEmbed = gtk_moz_embed_new();
// add it to the toplevel vbox
- gtk_box_pack_start(GTK_BOX(browser->topLevelVBox), browser->mozEmbed,
+ /*gtk_box_pack_start(GTK_BOX(browser->topLevelVBox), browser->mozEmbed,
TRUE, // expand
TRUE, // fill
0); // padding
+ */
+
+ /*
+ * Create the notebook label
+ */
+
+ browser->label_notebook = gtk_label_new ("1");
+ gtk_notebook_append_page (GTK_NOTEBOOK (browser->notebook), browser->mozEmbed, browser->label_notebook);
+ gtk_notebook_set_tab_label_packing (GTK_NOTEBOOK (browser->notebook), browser->mozEmbed, FALSE, FALSE, GTK_PACK_START);
+
+
// create the new hbox for the progress area
browser->progressAreaHBox = gtk_hbox_new(FALSE, 0);
@@ -417,6 +484,67 @@
gtk_widget_set_sensitive(browser->backButton, FALSE);
gtk_widget_set_sensitive(browser->forwardButton, FALSE);
+/*
+ * Create expander area for use toolbar down with notebook buttons
+ */
+
+ browser->expander = gtk_expander_new (NULL);
+ gtk_widget_show (browser->expander);
+ gtk_box_pack_start (GTK_BOX (browser->topLevelVBox), browser->expander, FALSE, TRUE, 0);
+
+ browser->toolbar_down = gtk_toolbar_new ();
+ gtk_widget_show (browser->toolbar_down);
+ gtk_container_add (GTK_CONTAINER (browser->expander), browser->toolbar_down);
+ gtk_widget_set_size_request (browser->toolbar_down, -1, 20);
+ gtk_toolbar_set_style (GTK_TOOLBAR (browser->toolbar_down), GTK_TOOLBAR_ICONS);
+ gtk_toolbar_set_show_arrow (GTK_TOOLBAR (browser->toolbar_down), FALSE);
+
+/*
+ * Show or hide notebooks
+ */
+
+ browser->tab_button =
+ gtk_toolbar_append_item(GTK_TOOLBAR(browser->toolbar_down),
+ "Tab Button",
+ "Show/Hide Tabs",
+ "Show/Hide Tabs",
+ browser->tab_button,
+ GTK_SIGNAL_FUNC(show_hide_tabs_cb),
+ browser);
+
+ gtk_widget_set_size_request (browser->tab_button,16, 16);
+
+/*
+ * Add new notebook
+ */
+
+ browser->btaddtab =
+ gtk_toolbar_append_item(GTK_TOOLBAR(browser->toolbar_down),
+ "Add Tab",
+ "Add Tab",
+ "Add Tab",
+ browser->btaddtab,
+ GTK_SIGNAL_FUNC(open_new_tab_cb),
+ browser);
+
+ gtk_widget_set_size_request (browser->btaddtab, 16, 16);
+
+/*
+ * Close active notebook
+ */
+
+ browser->btclosetab =
+ gtk_toolbar_append_item(GTK_TOOLBAR(browser->toolbar_down),
+ "Close Tab",
+ "Close Tab",
+ "Close Tab",
+ browser->btclosetab,
+ GTK_SIGNAL_FUNC(close_current_tab_cb),
+ browser);
+
+ gtk_widget_set_size_request (browser->btclosetab, 16, 16);
+
+
// catch the destruction of the toplevel window
gtk_signal_connect(GTK_OBJECT(browser->topLevelWindow), "delete_event",
GTK_SIGNAL_FUNC(delete_cb), browser);
@@ -494,10 +622,15 @@
gtk_signal_connect(GTK_OBJECT(browser->mozEmbed), "destroy",
GTK_SIGNAL_FUNC(destroy_cb), browser);
+ /*gtk_signal_connect (GTK_OBJECT (browser->notebook), "switch-page",
+ GTK_SIGNAL_FUNC (switch_page_cb), browser);*/
+
// set the chrome type so it's stored in the object
gtk_moz_embed_set_chrome_mask(GTK_MOZ_EMBED(browser->mozEmbed),
actualChromeMask);
-
+
+ browser->active_page = get_active_tab (browser);
+
return browser;
}
@@ -552,7 +685,7 @@
void
forward_clicked_cb (GtkButton *button, MinimoBrowser *browser)
{
- gtk_moz_embed_go_forward(GTK_MOZ_EMBED(browser->mozEmbed));
+ gtk_moz_embed_go_forward (GTK_MOZ_EMBED(browser->mozEmbed));
}
void
@@ -581,6 +714,7 @@
num_browsers--;
tmp_list = g_list_find(browser_list, browser);
browser_list = g_list_remove_link(browser_list, tmp_list);
+
if (browser->tempMessage)
g_free(browser->tempMessage);
if (num_browsers == 0)
@@ -952,3 +1086,100 @@
gtk_widget_set_sensitive(browser->forwardButton, FALSE);
}
+GtkWidget *get_active_tab (MinimoBrowser *browser)
+{
+
+ GtkWidget *active_page;
+ gint current_page;
+ current_page = gtk_notebook_get_current_page (GTK_NOTEBOOK (browser->notebook));
+ active_page = gtk_notebook_get_nth_page (GTK_NOTEBOOK (browser->notebook), current_page);
+
+ return active_page;
+
+}
+
+void open_new_tab_cb (GtkButton *button, MinimoBrowser *browser)
+{
+
+ GtkWidget *page_label;
+ gint num_pages;
+ gchar *page_title;
+ gint current_page;
+
+ num_pages = gtk_notebook_get_n_pages (GTK_NOTEBOOK (browser->notebook));
+ sprintf(page_title,"%d",num_pages+1);
+
+ page_label = gtk_label_new (page_title);
+
+ browser->mozEmbed = gtk_moz_embed_new();
+ gtk_moz_embed_load_url(GTK_MOZ_EMBED(browser->mozEmbed), "about:blank");
+ gtk_editable_delete_text(GTK_EDITABLE (browser->urlEntry), 0, -1);
+ gtk_notebook_append_page (GTK_NOTEBOOK (browser->notebook), browser->mozEmbed, page_label);
+ gtk_notebook_set_tab_label_packing (GTK_NOTEBOOK (browser->notebook), browser->mozEmbed, FALSE, FALSE, GTK_PACK_START);
+ gtk_widget_show (browser->mozEmbed);
+
+ current_page = gtk_notebook_page_num (GTK_NOTEBOOK (browser->notebook), browser->mozEmbed);
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (browser->notebook), current_page);
+ browser->active_page = gtk_notebook_get_nth_page (GTK_NOTEBOOK (browser->notebook), current_page);
+
+ gtk_signal_connect(GTK_OBJECT(browser->active_page), "location",GTK_SIGNAL_FUNC(location_changed_cb), browser);
+ gtk_signal_connect(GTK_OBJECT(browser->active_page), "net_start",GTK_SIGNAL_FUNC(load_started_cb), browser);
+ gtk_signal_connect(GTK_OBJECT(browser->active_page), "net_stop",GTK_SIGNAL_FUNC(load_finished_cb), browser);
+
+}
+
+void close_current_tab_cb (GtkMenuItem *menuitem, MinimoBrowser *browser)
+{
+ gint current_page, num_pages;
+
+ num_pages = gtk_notebook_get_n_pages (GTK_NOTEBOOK (browser->notebook));
+
+ if (num_pages >1) {
+ current_page = gtk_notebook_get_current_page (GTK_NOTEBOOK (browser->notebook));
+ gtk_notebook_remove_page (GTK_NOTEBOOK (browser->notebook), current_page);
+ num_pages = gtk_notebook_get_n_pages (GTK_NOTEBOOK (browser->notebook));
+ if (num_pages == 1) gtk_notebook_set_show_tabs (GTK_NOTEBOOK (browser->notebook), FALSE);
+ }
+
+}
+
+void switch_page_cb (GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, MinimoBrowser *browser)
+{
+
+ browser->active_page = gtk_notebook_get_nth_page (GTK_NOTEBOOK (browser->notebook), page_num);
+ update_ui (browser);
+
+}
+
+void show_hide_tabs_cb (GtkButton *button, MinimoBrowser *browser)
+{
+
+ if (browser->show_tabs == TRUE) {
+ gtk_notebook_set_show_tabs (GTK_NOTEBOOK(browser->notebook), FALSE);
+ browser->show_tabs = FALSE;
+ }
+ else {
+ gtk_notebook_set_show_tabs (GTK_NOTEBOOK(browser->notebook), TRUE);
+ browser->show_tabs = TRUE;
+ }
+
+}
+
+void update_ui (MinimoBrowser *browser)
+{
+
+ gchar *tmp;
+ int newPosition = 0;
+ int x=0;
+ char *url;
+
+ tmp = gtk_moz_embed_get_title (GTK_MOZ_EMBED (browser->active_page));
+
+ if (tmp) x = strlen (tmp);
+ if (x == 0) tmp = "Minimo";
+ gtk_window_set_title (GTK_WINDOW(browser->topLevelWindow), tmp);
+ gtk_editable_delete_text (GTK_EDITABLE (browser->urlEntry), 0, -1);
+ url = gtk_moz_embed_get_location (GTK_MOZ_EMBED (browser->active_page));
+ gtk_editable_insert_text (GTK_EDITABLE (browser->urlEntry), url, strlen (url), &newPosition);
+
+}