Minimo Linux changes from INDT.

**  it removes 'icons.h' , 'preference.h' and 'history.h' -> they were not being used anymore.
** it restrutures Minimo.cpp , minimo_callbacks files -> In some places of the source code, there were methods in the wrong file, and so on.
** it changes the varibles and methods naming in all files (gFILENAME_NAME e.g. gPreferenceStruct)
** it creates a new file (minimo_support), and add the respective line in the Makefile.in file.
** it improves the bookmark manager, and also adds the FIND feature into its gtk_tree_view.
** it fixes some small bugs.

r=antonio.gomes@indt.org.br.


git-svn-id: svn://10.0.0.236/trunk@177874 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
dougt%meer.net 2005-08-16 19:33:31 +00:00
parent 3cfc488a7b
commit 22fb22a1b9
16 changed files with 3467 additions and 2955 deletions

View File

@ -79,6 +79,7 @@ REQUIRES += tracemalloc
endif
CPPSRCS = Minimo.cpp \
minimo_support.cpp \
minimo_bookmark.cpp \
minimo_history.cpp \
minimo_callbacks.cpp \

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,66 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is
* Christopher Blizzard. Portions created by Christopher Blizzard are Copyright (C) Christopher Blizzard. All Rights Reserved.
* Portions created by the Initial Developer are Copyright (C) 2001
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Christopher Blizzard <blizzard@mozilla.org>
* Doug Turner <dougt@meer.net> Branched from TestGtkEmbed.cpp
*
* The 10LE Team (in alphabetical order)
* -------------------------------------
*
* Ilias Biris <ext-ilias.biris@indt.org.br> - Coordinator
* Afonso Costa <afonso.costa@indt.org.br>
* Antonio Gomes <antonio.gomes@indt.org.br>
* Diego Gonzalez <diego.gonzalez@indt.org.br>
* Raoni Novellino <raoni.novellino@indt.org.br>
* Andre Pedralho <andre.pedralho@indt.org.br>
*
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/* METHODS HEADERS */
/* Minimo's global types */
#include "minimo_types.h"
GtkWidget* create_minimo_progress (MinimoBrowser* browser);
/* Building the Minimo Browser */
MinimoBrowser *new_gtk_browser(guint32 chromeMask);
//void new_window_cb(GtkMozEmbed *embed, GtkMozEmbed **retval, guint chromemask, MinimoBrowser *browser);
void setup_toolbar(MinimoBrowser* browser);
GtkWidget *get_active_tab (MinimoBrowser *browser);
/* callbacks from the widget */
void update_ui (MinimoBrowser *browser);
void destroy_cb(GtkWidget *widget, MinimoBrowser *browser);

File diff suppressed because it is too large Load Diff

View File

@ -62,30 +62,41 @@
#include "gtkmozembed.h"
/* Callbacks from the UI */
void initialize_bookmark(GtkWidget *embed);
void open_bookmark(void);
void show_bookmark(void);
void read_bookmark(void);
void generate_bookmark_ctree(GNode *node, BookmarkCTreeData *ctree_data);
void add_bookmark_cb(GtkWidget *menu_item,GtkWidget *min);
void on_bookmark_add_button_clicked(GtkWidget *button,BookmarkWindow *bwin);
void on_bookmark_edit_button_clicked(GtkWidget *button,BookmarkWindow *bwin);
void on_bookmark_ok_button_clicked(GtkWidget *button,BookmarkWindow *bwin);
void on_bookmark_cancel_button_clicked(GtkWidget *button,BookmarkWindow *bwin);
void on_bookmark_go_button_clicked(GtkButton *button,BookmarkWindow *bwin);
void on_bookmark_remove_button_clicked(GtkWidget *button,BookmarkWindow *bwin);
void export_bookmarks(GtkButton *button,BookmarkWindow *bwin);
typedef enum
{
NS_SITE,
NS_NOTES,
NS_FOLDER,
NS_FOLDER_END,
NS_SEPARATOR,
NS_UNKNOWN
} NSItemType;
/* Callbacks from widgets*/
void on_bookmark_ctree_select_row(GtkWidget *ctree,GtkCTreeNode *node,gint col,BookmarkWindow *bwin);
void on_bookmark_ctree_unselect_row(GtkWidget *ctree,GtkCTreeNode *node,gint col,BookmarkWindow *bwin);
void on_bookmark_ctree_move(GtkWidget *ctree,GtkCTreeNode *node,GtkCTreeNode *parent,GtkCTreeNode *sibling,BookmarkWindow *bwin);
void move_folder(GNode *old_node, GNode *new_parent_node);
void print_bookmarks ();
void print_node_data (GNode *node,FILE *file);
void clear_entries(BookmarkWindow *bwin);
void close_bookmark_window(BookmarkWindow *bwin);
gboolean url_exists(BookmarkData *data);
void bookmark_moz_embed_initialize (GtkWidget *);
void bookmark_create_dialog ();
void bookmark_open_file ();
void bookmark_load_from_file (BookmarkTreeVData *);
gboolean bookmark_search_function(GtkTreeModel *, gint, const gchar *, GtkTreeIter *,void *);
void bookmark_insert_folder_on_treeview (BookmarkData *, BookmarkTreeVData *);
void bookmark_insert_item_on_treeview (BookmarkData *, BookmarkTreeVData *);
void bookmark_on_treev_select_row_cb (GtkTreeView *, BookmarkWindow *);
void bookmark_add_button_cb (GtkWidget *,BookmarkWindow *);
void bookmark_edit_button_cb (GtkWidget * ,BookmarkWindow *);
void bookmark_go_button_cb (GtkButton * ,BookmarkWindow *);
void bookmark_ok_button_cb (GtkWidget * ,BookmarkWindow *);
void bookmark_cancel_button_cb (GtkWidget * ,BookmarkWindow *);
void bookmark_remove_button_cb (GtkWidget * ,BookmarkWindow *);
void bookmark_write_on_file (BookmarkWindow *);
void bookmark_write_node_data_on_file (GtkTreeModel *, GtkTreeIter *);
void bookmark_clear_all_entries (BookmarkWindow *);
void bookmark_close_dialog (BookmarkWindow *);
void bookmark_import_cb (GtkButton *,BookmarkWindow *);
NSItemType bookmark_get_ns_item (FILE *, GString *, GString *);
gchar * bookmark_read_line_from_html_file (FILE *);
const gchar *bookmark_string_strcasestr (const gchar *, const gchar *);
char * bookmark_ns_parse_item (GString *);
void bookmark_export_cb (GtkButton *,BookmarkWindow *);
void bookmark_export_items (FILE *, BookmarkData *, gboolean );
void bookmark_add_url_directly_cb (GtkWidget *,GtkWidget *);
#endif

File diff suppressed because it is too large Load Diff

View File

@ -54,39 +54,53 @@
#include "minimo_types.h"
#include "minimo_preference.h"
#include "minimo_bookmark.h"
#include "Minimo.h"
/* context menu callbacks */
void browse_in_window_from_popup(GtkWidget *menuitem, MinimoBrowser *browser);
void download_link_from_popup(GtkWidget *menuitem, MinimoBrowser *browser);
void minimo_load_url(gchar *url, MinimoBrowser *browser);
void make_tab_from_popup(GtkWidget *menuitem, MinimoBrowser *browser);
void open_new_tab_cb (GtkMenuItem *button, MinimoBrowser *browser);
void close_current_tab_cb (GtkMenuItem *button, MinimoBrowser *browser);
void browse_in_window_from_popup(GtkWidget *, MinimoBrowser *);
void download_link_from_popup(GtkWidget *, MinimoBrowser *);
void minimo_load_url(gchar *, MinimoBrowser *);
void make_tab_from_popup(GtkWidget *, MinimoBrowser *);
void open_new_tab_cb (GtkMenuItem *, MinimoBrowser *);
void close_current_tab_cb (GtkMenuItem *, MinimoBrowser *);
/* menu bar callbacks */
void open_bookmark_window_cb (GtkMenuItem *button,MinimoBrowser *browser);
void back_clicked_cb(GtkButton *button, MinimoBrowser *browser);
void reload_clicked_cb(GtkButton *button, MinimoBrowser *browser);
void forward_clicked_cb(GtkButton *button, MinimoBrowser *browser);
void stop_clicked_cb(GtkButton *button, MinimoBrowser *browser);
void open_bookmark_window_cb (GtkMenuItem *,MinimoBrowser *);
void back_clicked_cb(GtkButton *, MinimoBrowser *);
void reload_clicked_cb(GtkButton *, MinimoBrowser *);
void forward_clicked_cb(GtkButton *, MinimoBrowser *);
void stop_clicked_cb(GtkButton *, MinimoBrowser *);
/* callbacks from the UI */
gboolean delete_cb(GtkWidget *widget, GdkEventAny *event, MinimoBrowser *browser);
gboolean delete_cb(GtkWidget *, GdkEventAny *, MinimoBrowser *);
/* callbacks from the widget */
void pref_clicked_cb(GtkButton *button, MinimoBrowser *browser);
void quick_message(gchar* message);
GtkWidget* create_minimo_progress (MinimoBrowser* browser);
void net_state_change_cb(GtkMozEmbed *embed, gint flags, guint status, GtkLabel* label);
void progress_change_cb(GtkMozEmbed *embed, gint cur, gint max, MinimoBrowser* browser);
void title_changed_cb(GtkMozEmbed *embed, MinimoBrowser *browser);
void load_started_cb(GtkMozEmbed *embed, MinimoBrowser *browser);
void load_finished_cb(GtkMozEmbed *embed, MinimoBrowser *browser);
void location_changed_cb(GtkMozEmbed *embed, GtkLabel* label);
void create_save_document(GtkMenuItem *button, MinimoBrowser *browser, gchar *location);
void on_save_ok_cb(GtkWidget *button, OpenDialogParams *fs);
void save_image_from_popup(GtkWidget *menuitem, MinimoBrowser *browser);
void visibility_cb(GtkMozEmbed *embed, gboolean visibility, MinimoBrowser *browser);
void set_browser_visibility(MinimoBrowser *browser, gboolean visibility);
gint open_uri_cb(GtkMozEmbed *embed, const char *uri, MinimoBrowser *browser);
void size_to_cb(GtkMozEmbed *embed, gint width, gint height, MinimoBrowser *browser);
void pref_clicked_cb(GtkButton *, MinimoBrowser *);
void quick_message(gchar* );
/*callbacks from the menuToolButton */
void show_hide_tabs_cb (GtkMenuItem *, MinimoBrowser *);
void open_history_window (GtkButton *, MinimoBrowser *);
void create_find_dialog (GtkWidget *, MinimoBrowser *);
void create_open_document_from_file (GtkMenuItem *, MinimoBrowser *);
void increase_font_size_cb (GtkMenuItem *, MinimoBrowser *);
void decrease_font_size_cb (GtkMenuItem *, MinimoBrowser *);
void full_screen_cb (GtkMenuItem *, MinimoBrowser *);
void unfull_screen_cb (GtkMenuItem *, MinimoBrowser *);
void info_clicked_cb(GtkButton *, MinimoBrowser *);
void open_url_dialog_input_cb (GtkButton *, MinimoBrowser *);
void net_state_change_cb(GtkMozEmbed *, gint , guint , GtkLabel* label);
void progress_change_cb(GtkMozEmbed *, gint , gint , MinimoBrowser* );
void title_changed_cb(GtkMozEmbed *, MinimoBrowser *);
void load_started_cb(GtkMozEmbed *, MinimoBrowser *);
void load_finished_cb(GtkMozEmbed *, MinimoBrowser *);
void location_changed_cb(GtkMozEmbed *embed, GtkLabel *);
void create_save_document_dialog (GtkMenuItem *, MinimoBrowser *, gchar *);
void on_save_ok_cb(GtkWidget *, OpenDialogParams *);
void save_image_from_popup(GtkWidget *, MinimoBrowser *);
void visibility_cb(GtkMozEmbed *, gboolean , MinimoBrowser *);
void set_browser_visibility(MinimoBrowser *, gboolean );
gint open_uri_cb(GtkMozEmbed *, const char *, MinimoBrowser *);
void size_to_cb(GtkMozEmbed *, gint , gint , MinimoBrowser *);
void link_message_cb (GtkWidget *, MinimoBrowser *);
/* callbacks from buttons (mouse or stylus) clicks */
@ -95,3 +109,4 @@ gint on_button_pressed_cb(GtkWidget *, MinimoBrowser *);
gint on_button_released_cb(GtkWidget *, gpointer *, MinimoBrowser *);
#endif

View File

@ -51,251 +51,262 @@
#include "minimo_callbacks.h"
#include "minimo_bookmark.h"
void on_menu_destroy(GtkWidget *menu, gchar *name)
RightButtonClick *gContextRightButtonClick; /* Emulating right button clicks */
void context_initialize_timer()
{
gchar *free_href, *free_img, *free_linktext, *free_name;
free_href = (gchar *) g_object_get_data(G_OBJECT(menu), "freehref");
if (free_href) g_free(free_href);
free_img = (gchar *) g_object_get_data(G_OBJECT(menu), "freeimg");
if (free_img) g_free(free_img);
free_linktext = (gchar *) g_object_get_data(G_OBJECT(menu), "freelinktext");
if (free_linktext) g_free(free_linktext);
free_name = (gchar *) g_object_get_data(G_OBJECT(menu), "freename");
if (free_name) g_free(free_name);
return;
/* right button click emulation initialization */
gContextRightButtonClick = g_new0(RightButtonClick,1);
gContextRightButtonClick->sig_handler= 0;
gContextRightButtonClick->pressing_timer= g_timer_new();
g_timer_reset(gContextRightButtonClick->pressing_timer);
}
GtkWidget * get_link_popup_menu (MinimoBrowser *browser, gchar *href, gchar *linktext)
GtkWidget * context_click_on_link (MinimoBrowser *browser, gchar *href, gchar *linktext)
{
GtkWidget *menu, *m1, *m2, *m3;
if (browser->link_menu) gtk_widget_destroy(browser->link_menu);
menu = gtk_menu_new();
g_object_set_data(G_OBJECT(menu), "freehref", href);
g_object_set_data(G_OBJECT(menu), "freelinktext", linktext);
/* Open in this Window */
m1 = gtk_image_menu_item_new_with_mnemonic("_Open link ...");
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(m1),
gtk_image_new_from_stock(GTK_STOCK_OPEN,GTK_ICON_SIZE_MENU));
g_signal_connect(G_OBJECT(m1), "activate", G_CALLBACK(browse_in_window_from_popup), browser);
g_object_set_data(G_OBJECT(m1), "link", href);
gtk_menu_append(GTK_MENU(menu), m1);
/* Open in a new Tab */
m2 = gtk_image_menu_item_new_with_mnemonic("Open in a new _tab");
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(m2),
gtk_image_new_from_stock(GTK_STOCK_NEW,GTK_ICON_SIZE_MENU));
gtk_menu_append(GTK_MENU(menu), m2);
g_object_set_data(G_OBJECT(m2), "link", href);
g_signal_connect(G_OBJECT(m2), "activate", G_CALLBACK(make_tab_from_popup), browser);
/* Download link */
m3 = gtk_image_menu_item_new_with_mnemonic("_Save link as ...");
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(m3),
gtk_image_new_from_stock(GTK_STOCK_SAVE, GTK_ICON_SIZE_MENU));
g_signal_connect(G_OBJECT(m3), "activate", G_CALLBACK(download_link_from_popup), browser);
g_object_set_data(G_OBJECT(m3), "link", href);
gtk_menu_append(GTK_MENU(menu), m3);
gtk_widget_show_all(menu);
browser->link_menu = menu;
return (menu);
GtkWidget *menu, *m1, *m2, *m3;
if (browser->link_menu) gtk_widget_destroy(browser->link_menu);
menu = gtk_menu_new();
g_object_set_data(G_OBJECT(menu), "freehref", href);
g_object_set_data(G_OBJECT(menu), "freelinktext", linktext);
/* Open in this Window */
m1 = gtk_image_menu_item_new_with_mnemonic("_Open link ...");
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(m1),
gtk_image_new_from_stock(GTK_STOCK_OPEN,GTK_ICON_SIZE_MENU));
g_signal_connect(G_OBJECT(m1), "activate", G_CALLBACK(browse_in_window_from_popup), browser);
g_object_set_data(G_OBJECT(m1), "link", href);
gtk_menu_append(GTK_MENU(menu), m1);
/* Open in a new Tab */
m2 = gtk_image_menu_item_new_with_mnemonic("Open in a new _tab");
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(m2),
gtk_image_new_from_stock(GTK_STOCK_NEW,GTK_ICON_SIZE_MENU));
gtk_menu_append(GTK_MENU(menu), m2);
g_object_set_data(G_OBJECT(m2), "link", href);
g_signal_connect(G_OBJECT(m2), "activate", G_CALLBACK(make_tab_from_popup), browser);
/* Download link */
m3 = gtk_image_menu_item_new_with_mnemonic("_Save link as ...");
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(m3),
gtk_image_new_from_stock(GTK_STOCK_SAVE, GTK_ICON_SIZE_MENU));
g_signal_connect(G_OBJECT(m3), "activate", G_CALLBACK(download_link_from_popup), browser);
g_object_set_data(G_OBJECT(m3), "link", href);
gtk_menu_append(GTK_MENU(menu), m3);
gtk_widget_show_all(menu);
browser->link_menu = menu;
return (menu);
}
GtkWidget * get_image_popup_menu(MinimoBrowser *browser, gchar *img)
GtkWidget * context_click_on_image (MinimoBrowser *browser, gchar *img)
{
GtkWidget *menu, *m1, *m2, *m3, *m4, *sep;
gchar *lbl, *name, *aux_string;
G_CONST_RETURN gchar *img_basename;
if (browser->image_menu)
gtk_widget_destroy(browser->image_menu);
aux_string = (gchar *)g_malloc(1024);
strcpy (aux_string, "");
img_basename = g_basename(img);
name = g_strdup(img_basename);
menu = gtk_menu_new();
g_object_set_data(G_OBJECT(menu), "freeimg", img);
g_object_set_data(G_OBJECT(menu), "freename", name);
/* View Image */
m1 = gtk_image_menu_item_new_with_mnemonic ("_View image");
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(m1),
gtk_image_new_from_stock(GTK_STOCK_OPEN, GTK_ICON_SIZE_MENU));
g_signal_connect(G_OBJECT(m1), "activate", G_CALLBACK(browse_in_window_from_popup), browser);
g_object_set_data(G_OBJECT(m1), "link", img);
gtk_menu_append(GTK_MENU(menu), m1);
/* Separator */
sep = gtk_menu_item_new();
gtk_menu_append(GTK_MENU(menu), sep);
/* Save as */
m2 = gtk_image_menu_item_new_with_mnemonic ("_Save image as ...");
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(m2),
gtk_image_new_from_stock(GTK_STOCK_SAVE, GTK_ICON_SIZE_MENU));
g_signal_connect(G_OBJECT(m2), "activate", G_CALLBACK(download_link_from_popup), browser);
g_object_set_data(G_OBJECT(m2), "link", img);
g_object_set_data(G_OBJECT(m2), "name", aux_string);
gtk_menu_append(GTK_MENU(menu), m2);
/* Save */
lbl = g_strdup_printf("%s %s","Sa_ve image as ",img_basename);
m3 = gtk_image_menu_item_new_with_mnemonic (lbl);
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(m3),
gtk_image_new_from_stock(GTK_STOCK_SAVE, GTK_ICON_SIZE_MENU));
g_signal_connect(G_OBJECT(m3), "activate", G_CALLBACK(save_image_from_popup), browser);
g_object_set_data(G_OBJECT(m3), "link", img);
g_object_set_data(G_OBJECT(m3), "name", name);
gtk_menu_append(GTK_MENU(menu), m3);
/* Separator */
sep = gtk_menu_item_new();
gtk_menu_append(GTK_MENU(menu), sep);
/* Save page as */
m4 = gtk_image_menu_item_new_with_mnemonic("Save page _as ... ");
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(m4),
gtk_image_new_from_stock(GTK_STOCK_COPY, GTK_ICON_SIZE_MENU));
g_signal_connect(G_OBJECT(m4), "activate", G_CALLBACK(download_link_from_popup), browser);
g_object_set_data(G_OBJECT(m4), "link", gtk_moz_embed_get_location(GTK_MOZ_EMBED (browser->mozEmbed)));
gtk_menu_append(GTK_MENU(menu), m4);
gtk_widget_show_all(menu);
gtk_widget_show_all(menu);
g_free(aux_string);
g_free(lbl);
browser->image_menu = menu;
return (menu);
GtkWidget *menu, *m1, *m2, *m3, *m4, *sep;
gchar *lbl, *name, *aux_string;
G_CONST_RETURN gchar *img_basename;
if (browser->image_menu)
gtk_widget_destroy(browser->image_menu);
aux_string = (gchar *)g_malloc(1024);
strcpy (aux_string, "");
img_basename = g_basename(img);
name = g_strdup(img_basename);
menu = gtk_menu_new();
g_object_set_data(G_OBJECT(menu), "freeimg", img);
g_object_set_data(G_OBJECT(menu), "freename", name);
/* View Image */
m1 = gtk_image_menu_item_new_with_mnemonic ("_View image");
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(m1),
gtk_image_new_from_stock(GTK_STOCK_OPEN, GTK_ICON_SIZE_MENU));
g_signal_connect(G_OBJECT(m1), "activate", G_CALLBACK(browse_in_window_from_popup), browser);
g_object_set_data(G_OBJECT(m1), "link", img);
gtk_menu_append(GTK_MENU(menu), m1);
/* Separator */
sep = gtk_menu_item_new();
gtk_menu_append(GTK_MENU(menu), sep);
/* Save as */
m2 = gtk_image_menu_item_new_with_mnemonic ("_Save image as ...");
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(m2),
gtk_image_new_from_stock(GTK_STOCK_SAVE, GTK_ICON_SIZE_MENU));
g_signal_connect(G_OBJECT(m2), "activate", G_CALLBACK(download_link_from_popup), browser);
g_object_set_data(G_OBJECT(m2), "link", img);
g_object_set_data(G_OBJECT(m2), "name", aux_string);
gtk_menu_append(GTK_MENU(menu), m2);
/* Save */
lbl = g_strdup_printf("%s %s","Sa_ve image as ",img_basename);
m3 = gtk_image_menu_item_new_with_mnemonic (lbl);
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(m3),
gtk_image_new_from_stock(GTK_STOCK_SAVE, GTK_ICON_SIZE_MENU));
g_signal_connect(G_OBJECT(m3), "activate", G_CALLBACK(save_image_from_popup), browser);
g_object_set_data(G_OBJECT(m3), "link", img);
g_object_set_data(G_OBJECT(m3), "name", name);
gtk_menu_append(GTK_MENU(menu), m3);
/* Separator */
sep = gtk_menu_item_new();
gtk_menu_append(GTK_MENU(menu), sep);
/* Save page as */
m4 = gtk_image_menu_item_new_with_mnemonic("Save page _as ... ");
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(m4),
gtk_image_new_from_stock(GTK_STOCK_COPY, GTK_ICON_SIZE_MENU));
g_signal_connect(G_OBJECT(m4), "activate", G_CALLBACK(download_link_from_popup), browser);
g_object_set_data(G_OBJECT(m4), "link", gtk_moz_embed_get_location(GTK_MOZ_EMBED (browser->mozEmbed)));
gtk_menu_append(GTK_MENU(menu), m4);
gtk_widget_show_all(menu);
gtk_widget_show_all(menu);
g_free(aux_string);
g_free(lbl);
browser->image_menu = menu;
return (menu);
}
GtkWidget * get_doc_popup_menu(MinimoBrowser *browser, gchar *href)
GtkWidget * context_click_doc (MinimoBrowser *browser, gchar *href)
{
GtkWidget *menu, *m1,*m2,*m3, *m4, *m5, *m6, *sep;
if (browser->doc_menu) gtk_widget_destroy(browser->doc_menu);
menu = gtk_menu_new();
g_object_set_data(G_OBJECT(menu), "freehref", href);
m1 = gtk_image_menu_item_new_from_stock(GTK_STOCK_GO_BACK,NULL);
g_signal_connect(G_OBJECT(m1), "activate", G_CALLBACK(back_clicked_cb), browser);
gtk_widget_set_sensitive(m1, gtk_moz_embed_can_go_back(GTK_MOZ_EMBED(browser->mozEmbed)));
gtk_menu_append(GTK_MENU(menu), m1);
m2 = gtk_image_menu_item_new_from_stock(GTK_STOCK_GO_FORWARD,NULL);
gtk_menu_append(GTK_MENU(menu), m2);
g_signal_connect(G_OBJECT(m2), "activate", G_CALLBACK(forward_clicked_cb), browser);
gtk_widget_set_sensitive(m2, gtk_moz_embed_can_go_forward(GTK_MOZ_EMBED(browser->mozEmbed)));
m3 = gtk_image_menu_item_new_from_stock(GTK_STOCK_REFRESH,NULL);
g_signal_connect(G_OBJECT(m3), "activate", G_CALLBACK(reload_clicked_cb), browser);
gtk_menu_append(GTK_MENU(menu), m3);
m4 = gtk_image_menu_item_new_from_stock(GTK_STOCK_STOP,NULL);
g_signal_connect(G_OBJECT(m4), "activate", G_CALLBACK(stop_clicked_cb), browser);
gtk_menu_append(GTK_MENU(menu), m4);
/* Separator */
sep = gtk_menu_item_new();
gtk_menu_append(GTK_MENU(menu), sep);
m5 = gtk_image_menu_item_new_with_mnemonic ("_Save page as ... ");
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(m5),
gtk_image_new_from_stock(GTK_STOCK_SAVE, GTK_ICON_SIZE_MENU));
g_signal_connect(G_OBJECT(m5), "activate", G_CALLBACK(download_link_from_popup), browser);
g_object_set_data(G_OBJECT(m5), "link", gtk_moz_embed_get_location(GTK_MOZ_EMBED (browser->mozEmbed)));
gtk_menu_append(GTK_MENU(menu), m5);
m6 = gtk_image_menu_item_new_with_mnemonic ("_Bookmark this page");
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(m6),
gtk_image_new_from_stock(GTK_STOCK_ADD, GTK_ICON_SIZE_MENU));
g_signal_connect(G_OBJECT(m6), "activate", G_CALLBACK(add_bookmark_cb), browser);
gtk_menu_append(GTK_MENU(menu), m6);
gtk_widget_show_all(menu);
browser->doc_menu = menu;
return ( menu );
GtkWidget *menu, *m1,*m2,*m3, *m4, *m5, *m6, *sep;
if (browser->doc_menu) gtk_widget_destroy(browser->doc_menu);
menu = gtk_menu_new();
g_object_set_data(G_OBJECT(menu), "freehref", href);
m1 = gtk_image_menu_item_new_from_stock(GTK_STOCK_GO_BACK,NULL);
g_signal_connect(G_OBJECT(m1), "activate", G_CALLBACK(back_clicked_cb), browser);
gtk_widget_set_sensitive(m1, gtk_moz_embed_can_go_back(GTK_MOZ_EMBED(browser->mozEmbed)));
gtk_menu_append(GTK_MENU(menu), m1);
m2 = gtk_image_menu_item_new_from_stock(GTK_STOCK_GO_FORWARD,NULL);
gtk_menu_append(GTK_MENU(menu), m2);
g_signal_connect(G_OBJECT(m2), "activate", G_CALLBACK(forward_clicked_cb), browser);
gtk_widget_set_sensitive(m2, gtk_moz_embed_can_go_forward(GTK_MOZ_EMBED(browser->mozEmbed)));
m3 = gtk_image_menu_item_new_from_stock(GTK_STOCK_REFRESH,NULL);
g_signal_connect(G_OBJECT(m3), "activate", G_CALLBACK(reload_clicked_cb), browser);
gtk_menu_append(GTK_MENU(menu), m3);
m4 = gtk_image_menu_item_new_from_stock(GTK_STOCK_STOP,NULL);
g_signal_connect(G_OBJECT(m4), "activate", G_CALLBACK(stop_clicked_cb), browser);
gtk_menu_append(GTK_MENU(menu), m4);
/* Separator */
sep = gtk_menu_item_new();
gtk_menu_append(GTK_MENU(menu), sep);
m5 = gtk_image_menu_item_new_with_mnemonic ("_Save page as ... ");
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(m5),
gtk_image_new_from_stock(GTK_STOCK_SAVE, GTK_ICON_SIZE_MENU));
g_signal_connect(G_OBJECT(m5), "activate", G_CALLBACK(download_link_from_popup), browser);
g_object_set_data(G_OBJECT(m5), "link", gtk_moz_embed_get_location(GTK_MOZ_EMBED (browser->mozEmbed)));
gtk_menu_append(GTK_MENU(menu), m5);
m6 = gtk_image_menu_item_new_with_mnemonic ("_Bookmark this page");
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(m6),
gtk_image_new_from_stock(GTK_STOCK_ADD, GTK_ICON_SIZE_MENU));
g_signal_connect(G_OBJECT(m6), "activate", G_CALLBACK(bookmark_add_url_directly_cb), browser);
gtk_menu_append(GTK_MENU(menu), m6);
gtk_widget_show_all(menu);
browser->doc_menu = menu;
return ( menu );
}
GtkWidget * get_link_image_popup_menu(MinimoBrowser *browser, gchar *img, gchar *href)
GtkWidget * context_click_link_image (MinimoBrowser *browser, gchar *img, gchar *href)
{
GtkWidget *menu, *m1, *m2, *m3, *m4, *m5, *sep;
gchar *lbl, *name, *aux_string;
G_CONST_RETURN gchar *img_basename;
if (browser->image_link_menu)
gtk_widget_destroy(browser->image_link_menu);
aux_string= (gchar *)g_malloc(1024);
strcpy (aux_string, "link image menu");
img_basename = g_basename(img);
menu = gtk_menu_new();
name = g_strdup(img_basename);
g_object_set_data(G_OBJECT(menu), "freehref", href);
g_object_set_data(G_OBJECT(menu), "freeimg", img);
g_object_set_data(G_OBJECT(menu), "freename", name);
g_signal_connect(G_OBJECT(menu), "destroy", G_CALLBACK(on_menu_destroy), aux_string);
/* Open Link in the current Window */
m1 = gtk_image_menu_item_new_with_mnemonic ("_Open link ...");
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM(m1),gtk_image_new_from_stock(GTK_STOCK_OPEN, GTK_ICON_SIZE_MENU));
g_signal_connect(G_OBJECT(m1), "activate", G_CALLBACK(browse_in_window_from_popup), browser);
g_object_set_data(G_OBJECT(m1), "link", href);
gtk_menu_append(GTK_MENU(menu), m1);
/* Open Link in a new tab */
m2 = gtk_image_menu_item_new_with_mnemonic ("Open link in a new _Tab");
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM(m2),
gtk_image_new_from_stock(GTK_STOCK_NEW, GTK_ICON_SIZE_MENU));
gtk_menu_append(GTK_MENU(menu), m2);
g_object_set_data(G_OBJECT(m2), "link", href);
g_signal_connect(G_OBJECT(m2), "activate", G_CALLBACK(make_tab_from_popup), browser);
/* Separator */
sep = gtk_menu_item_new();
gtk_menu_append(GTK_MENU(menu), sep);
/* View Image */
m3 = gtk_image_menu_item_new_with_mnemonic ("_View image");
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(m3),
gtk_image_new_from_stock(GTK_STOCK_OPEN, GTK_ICON_SIZE_MENU));
g_signal_connect(G_OBJECT(m3), "activate", G_CALLBACK(browse_in_window_from_popup), browser);
g_object_set_data(G_OBJECT(m3), "link", img);
gtk_menu_append(GTK_MENU(menu), m3);
/* Separator */
sep = gtk_menu_item_new();
gtk_menu_append(GTK_MENU(menu), sep);
m4 = gtk_image_menu_item_new_with_mnemonic ("_Save link as ...");
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(m4),gtk_image_new_from_stock(GTK_STOCK_SAVE,
GTK_ICON_SIZE_MENU));
g_signal_connect(G_OBJECT(m4), "activate", G_CALLBACK(download_link_from_popup), browser);
g_object_set_data(G_OBJECT(m4), "link", href);
gtk_menu_append(GTK_MENU(menu), m4);
lbl = g_strdup_printf("%s %s","Save image _as ",img_basename);
m5 = gtk_image_menu_item_new_with_mnemonic (lbl);
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(m5),gtk_image_new_from_stock(GTK_STOCK_SAVE,
GTK_ICON_SIZE_MENU));
g_signal_connect(G_OBJECT(m5), "activate", G_CALLBACK(save_image_from_popup), browser);
g_object_set_data(G_OBJECT(m5), "link", img);
g_object_set_data(G_OBJECT(m5), "name", name);
gtk_menu_append(GTK_MENU(menu), m5);
gtk_widget_show_all(menu);
browser->image_link_menu = menu;
g_free(aux_string);
return ( menu );
GtkWidget *menu, *m1, *m2, *m3, *m4, *m5, *sep;
gchar *lbl, *name, *aux_string;
G_CONST_RETURN gchar *img_basename;
if (browser->image_link_menu)
gtk_widget_destroy(browser->image_link_menu);
aux_string= (gchar *)g_malloc(1024);
strcpy (aux_string, "link image menu");
img_basename = g_basename(img);
menu = gtk_menu_new();
name = g_strdup(img_basename);
g_object_set_data(G_OBJECT(menu), "freehref", href);
g_object_set_data(G_OBJECT(menu), "freeimg", img);
g_object_set_data(G_OBJECT(menu), "freename", name);
g_signal_connect(G_OBJECT(menu), "destroy", G_CALLBACK(context_destroy_popup), aux_string);
/* Open Link in the current Window */
m1 = gtk_image_menu_item_new_with_mnemonic ("_Open link ...");
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM(m1),gtk_image_new_from_stock(GTK_STOCK_OPEN, GTK_ICON_SIZE_MENU));
g_signal_connect(G_OBJECT(m1), "activate", G_CALLBACK(browse_in_window_from_popup), browser);
g_object_set_data(G_OBJECT(m1), "link", href);
gtk_menu_append(GTK_MENU(menu), m1);
/* Open Link in a new tab */
m2 = gtk_image_menu_item_new_with_mnemonic ("Open link in a new _Tab");
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM(m2),
gtk_image_new_from_stock(GTK_STOCK_NEW, GTK_ICON_SIZE_MENU));
gtk_menu_append(GTK_MENU(menu), m2);
g_object_set_data(G_OBJECT(m2), "link", href);
g_signal_connect(G_OBJECT(m2), "activate", G_CALLBACK(make_tab_from_popup), browser);
/* Separator */
sep = gtk_menu_item_new();
gtk_menu_append(GTK_MENU(menu), sep);
/* View Image */
m3 = gtk_image_menu_item_new_with_mnemonic ("_View image");
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(m3),
gtk_image_new_from_stock(GTK_STOCK_OPEN, GTK_ICON_SIZE_MENU));
g_signal_connect(G_OBJECT(m3), "activate", G_CALLBACK(browse_in_window_from_popup), browser);
g_object_set_data(G_OBJECT(m3), "link", img);
gtk_menu_append(GTK_MENU(menu), m3);
/* Separator */
sep = gtk_menu_item_new();
gtk_menu_append(GTK_MENU(menu), sep);
m4 = gtk_image_menu_item_new_with_mnemonic ("_Save link as ...");
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(m4),gtk_image_new_from_stock(GTK_STOCK_SAVE,
GTK_ICON_SIZE_MENU));
g_signal_connect(G_OBJECT(m4), "activate", G_CALLBACK(download_link_from_popup), browser);
g_object_set_data(G_OBJECT(m4), "link", href);
gtk_menu_append(GTK_MENU(menu), m4);
lbl = g_strdup_printf("%s %s","Save image _as ",img_basename);
m5 = gtk_image_menu_item_new_with_mnemonic (lbl);
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(m5),gtk_image_new_from_stock(GTK_STOCK_SAVE,
GTK_ICON_SIZE_MENU));
g_signal_connect(G_OBJECT(m5), "activate", G_CALLBACK(save_image_from_popup), browser);
g_object_set_data(G_OBJECT(m5), "link", img);
g_object_set_data(G_OBJECT(m5), "name", name);
gtk_menu_append(GTK_MENU(menu), m5);
gtk_widget_show_all(menu);
browser->image_link_menu = menu;
g_free(aux_string);
return ( menu );
}
void context_destroy_popup (GtkWidget *menu, gchar *name)
{
gchar *free_href, *free_img, *free_linktext, *free_name;
free_href = (gchar *) g_object_get_data(G_OBJECT(menu), "freehref");
if (free_href) g_free(free_href);
free_img = (gchar *) g_object_get_data(G_OBJECT(menu), "freeimg");
if (free_img) g_free(free_img);
free_linktext = (gchar *) g_object_get_data(G_OBJECT(menu), "freelinktext");
if (free_linktext) g_free(free_linktext);
free_name = (gchar *) g_object_get_data(G_OBJECT(menu), "freename");
if (free_name) g_free(free_name);
return;
}

View File

@ -52,10 +52,13 @@
#include "minimo_types.h"
void on_menu_destroy(GtkWidget *menu, gchar *name);
GtkWidget * get_link_popup_menu (MinimoBrowser *browser, gchar *href, gchar *linktext);
GtkWidget * get_image_popup_menu(MinimoBrowser *browser, gchar *img);
GtkWidget * get_doc_popup_menu(MinimoBrowser *browser, gchar *href);
GtkWidget * get_link_image_popup_menu(MinimoBrowser *browser, gchar *img, gchar *href);
void context_initialize_timer ();
GtkWidget * context_click_on_link (MinimoBrowser *, gchar *, gchar *);
GtkWidget * context_click_on_image (MinimoBrowser *, gchar *);
GtkWidget * context_click_doc (MinimoBrowser *, gchar *);
GtkWidget * context_click_link_image (MinimoBrowser *, gchar *, gchar *);
void context_destroy_popup (GtkWidget *, gchar *);
#endif

View File

@ -58,7 +58,7 @@ void add_to_history(const gchar *url) {
GSList *list;
gint equals = 0;
read_history();
history_read_from_file();
if (!url || url == NULL) return ;
if (!g_strncasecmp(url,"about:",6) || !g_strcasecmp(url,"")) return;
@ -76,15 +76,14 @@ void add_to_history(const gchar *url) {
}
if (equals == 0) {
gHistoryList = g_slist_prepend(gHistoryList,g_strdup(url));
write_history();
history_write_in_file();
}
gHistoryProt = 0;
}
/* Create and show the History Window*/
void view_history(GtkWidget *embed) {
void history_create_dialog (GtkWidget *embed) {
HistoryWindow *hwin;
GSList *list;
@ -92,7 +91,7 @@ void view_history(GtkWidget *embed) {
hwin = g_new0(HistoryWindow,1);
read_history();
history_read_from_file();
//hwin->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
hwin->window = gtk_dialog_new();
@ -104,7 +103,7 @@ void view_history(GtkWidget *embed) {
gtk_window_set_modal (GTK_WINDOW (hwin->window), TRUE);
gtk_window_set_keep_above(GTK_WINDOW (hwin->window), TRUE);
g_signal_connect(G_OBJECT(hwin->window),"destroy", G_CALLBACK(on_history_destroy), NULL);
g_signal_connect(G_OBJECT(hwin->window),"destroy", G_CALLBACK(history_destroy_cb), NULL);
hwin->title = g_strdup_printf(("Minimo - History (%d) items"), g_slist_length(gHistoryList));
g_free(hwin->title);
@ -135,8 +134,8 @@ void view_history(GtkWidget *embed) {
hwin->embed = embed;
g_signal_connect(G_OBJECT(hwin->search_button), "clicked", G_CALLBACK(on_search_button_cb), hwin);
g_signal_connect(G_OBJECT(hwin->go_button), "clicked", G_CALLBACK(on_history_clist_button_go_cb), hwin);
g_signal_connect(G_OBJECT(hwin->search_button), "clicked", G_CALLBACK(history_search_cb), hwin);
g_signal_connect(G_OBJECT(hwin->go_button), "clicked", G_CALLBACK(history_go_cb), hwin);
gtk_box_pack_start(GTK_BOX(hwin->search_box), hwin->search_label, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(hwin->search_box), hwin->search_entry, TRUE, TRUE, 0);
@ -144,13 +143,13 @@ void view_history(GtkWidget *embed) {
gtk_box_pack_start(GTK_BOX(hwin->search_box), hwin->go_button, FALSE, FALSE, 0);
hwin->remove = gtk_button_new_from_stock(GTK_STOCK_REMOVE);
g_signal_connect(G_OBJECT(hwin->remove), "clicked", G_CALLBACK(remove_from_history), hwin);
g_signal_connect(G_OBJECT(hwin->remove), "clicked", G_CALLBACK(history_remove_item_cb), hwin);
hwin->clear = gtk_button_new_from_stock(GTK_STOCK_CLEAR);
g_signal_connect(G_OBJECT(hwin->clear), "clicked", G_CALLBACK(clear_history), hwin);
g_signal_connect(G_OBJECT(hwin->clear), "clicked", G_CALLBACK(history_cleanup_cb), hwin);
hwin->close = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
g_signal_connect(G_OBJECT(hwin->close), "clicked", G_CALLBACK(close_history_win), hwin);
g_signal_connect(G_OBJECT(hwin->close), "clicked", G_CALLBACK(history_close_dialog_cb), hwin);
hwin->btnbox = gtk_hbox_new(0,0);
gtk_box_pack_start(GTK_BOX(hwin->vbox), hwin->search_box, FALSE, FALSE, 0);
@ -174,7 +173,7 @@ void view_history(GtkWidget *embed) {
}
/* Go to URL selected in the history list */
void on_history_clist_button_go_cb(GtkWidget *button, HistoryWindow *hwin) {
void history_go_cb(GtkWidget *button, HistoryWindow *hwin) {
GList *selection;
gchar *location;
gint row;
@ -190,13 +189,13 @@ void on_history_clist_button_go_cb(GtkWidget *button, HistoryWindow *hwin) {
}
/* Close history window */
void close_history_win(GtkWidget *button, HistoryWindow *hwin)
void history_close_dialog_cb (GtkWidget *button, HistoryWindow *hwin)
{
gtk_widget_destroy(hwin->window);
}
/* Remove an URL from history list */
void remove_from_history(GtkWidget *button, HistoryWindow *hwin)
void history_remove_item_cb (GtkWidget *button, HistoryWindow *hwin)
{
GList *selection = GTK_CLIST(hwin->clist)->selection;
gchar *text;
@ -232,7 +231,7 @@ void remove_from_list(gchar *text)
}
/* Remove all URL from history list */
void clear_history(GtkWidget *b, HistoryWindow *hwin)
void history_cleanup_cb (GtkWidget *b, HistoryWindow *hwin)
{
gtk_clist_clear(GTK_CLIST(hwin->clist));
g_slist_free(gHistoryList);
@ -241,7 +240,7 @@ void clear_history(GtkWidget *b, HistoryWindow *hwin)
}
/* Search an URL in the history list */
void on_search_button_cb(GtkWidget *button, HistoryWindow *hwin)
void history_search_cb(GtkWidget *button, HistoryWindow *hwin)
{
gint rows, i;
G_CONST_RETURN gchar *search_text;
@ -264,18 +263,17 @@ void on_search_button_cb(GtkWidget *button, HistoryWindow *hwin)
GTK_CLIST(hwin->clist)->focus_row = i;
search_pos = i;
}
}
}
/* Close history window */
void on_history_destroy(GtkWidget *window)
void history_destroy_cb(GtkWidget *window)
{
write_history();
history_write_in_file();
}
/* Read the history file */
void read_history(void) {
void history_read_from_file (void) {
gchar *line;
gchar *url;
gchar *user_home = NULL;
@ -312,7 +310,7 @@ void read_history(void) {
}
/* Write the history file */
void write_history(void) {
void history_write_in_file(void) {
GSList *list;
gchar *user_home= NULL;
FILE *g_history_file = NULL;

View File

@ -52,21 +52,19 @@
#include "minimo_types.h"
#include "gtkmozembed.h"
/* History functions*/
void history_write_in_file (void);
void history_read_from_file (void);
void add_to_history (const gchar *);
/* History callbacks */
void view_history(GtkWidget *embed);
void clear_history(GtkWidget *b, HistoryWindow *hwin);
void close_history_win(GtkWidget *button, HistoryWindow *hwin);
void on_history_clist_button_go_cb(GtkWidget *button, HistoryWindow *hwin);
void remove_from_history(GtkWidget *button, HistoryWindow *hwin);
void remove_from_list(gchar *text);
void on_history_destroy(GtkWidget *window);
void on_search_button_cb(GtkWidget *button, HistoryWindow *hwin);
/* History functions*/
void add_to_history(const gchar *url);
void write_history(void);
void read_history(void);
void history_create_dialog (GtkWidget *);
void history_go_cb (GtkWidget *, HistoryWindow *);
void history_close_dialog_cb (GtkWidget *, HistoryWindow *);
void history_remove_item_cb (GtkWidget *, HistoryWindow *);
void remove_from_list (gchar *);
void history_cleanup_cb (GtkWidget *, HistoryWindow *);
void history_search_cb (GtkWidget *, HistoryWindow *);
void history_destroy_cb (GtkWidget *);
#endif

File diff suppressed because it is too large Load Diff

View File

@ -54,18 +54,16 @@
#include "minimo_types.h"
/* Callbacks */
void close_preferences_cb (GtkButton *button, PrefWindow *pref);
void ok_preferences_cb (GtkButton *button, PrefWindow *pref);
void preferences_close_cb (GtkButton *, PrefWindow *);
void preferences_ok_cb (GtkButton *, PrefWindow *);
/* Support methods */
void read_minimo_config(void);
void write_minimo_config(void);
void set_mozilla_prefs(void);
void minimo_set_proxy_prefs(void);
void preferences_read_config (void);
void preferences_write_config (void);
void preferences_set_mozilla_config (void);
void preferences_set_mozilla_proxy_config(void);
/* UI Methods */
PrefWindow * build_pref_window (GtkWidget *topLevelWindow);
PangoFontDescription* getOrCreateDefaultMinimoFont();
PrefWindow * preferences_build_dialog (GtkWidget *);
#endif

View File

@ -0,0 +1,260 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is
* Christopher Blizzard. Portions created by Christopher Blizzard are Copyright (C) Christopher Blizzard. All Rights Reserved.
* Portions created by the Initial Developer are Copyright (C) 2001
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Christopher Blizzard <blizzard@mozilla.org>
* Doug Turner <dougt@meer.net> Branched from TestGtkEmbed.cpp
*
* The 10LE Team (in alphabetical order)
* -------------------------------------
*
* Ilias Biris <ext-ilias.biris@indt.org.br> - Coordinator
* Afonso Costa <afonso.costa@indt.org.br>
* Antonio Gomes <antonio.gomes@indt.org.br>
* Diego Gonzalez <diego.gonzalez@indt.org.br>
* Raoni Novellino <raoni.novellino@indt.org.br>
* Andre Pedralho <andre.pedralho@indt.org.br>
*
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "minimo_support.h"
#include "Minimo.h"
#include "minimo_callbacks.h"
extern GList *gMinimoBrowserList; /* the list of browser windows
currently open */
extern gchar *gMinimoProfilePath;
/* Variable to enable pango settings */
static PangoFontDescription* gDefaultMinimoFont = NULL;
/* Data Struct for make possible the real autocomplete */
GList *gAutoCompleteList = g_list_alloc(); /* Auto Complete List */
GtkEntryCompletion *gMinimoEntryCompletion;
GtkListStore *gMinimoAutoCompleteListStore;
GtkTreeIter gMinimoAutoCompleteIter;
/* body */
void support_handle_remote(int sig) {
FILE *fp;
char url[256];
sprintf(url, "/tmp/Mosaic.%d", getpid());
if ((fp = fopen(url, "r"))) {
if (fgets(url, sizeof(url) - 1, fp)) {
MinimoBrowser *bw = NULL;
if (strncmp(url, "goto", 4) == 0 &&
fgets(url, sizeof(url) - 1, fp)) {
GList *tmp_list = gMinimoBrowserList;
bw =(MinimoBrowser *)tmp_list->data;
if(!bw) return;
} else if (strncmp(url, "newwin", 6) == 0 &&
fgets(url, sizeof(url) - 1, fp)) {
bw = new_gtk_browser(GTK_MOZ_EMBED_FLAG_DEFAULTCHROME);
gtk_widget_set_usize(bw->mozEmbed, 240, 320);
set_browser_visibility(bw, TRUE);
}
if (bw)
gtk_moz_embed_load_url(GTK_MOZ_EMBED(bw->mozEmbed), url);
fclose(fp);
}
}
return;
}
void support_init_remote() {
gchar *file;
FILE *fp;
signal(SIGUSR1, SIG_IGN);
/* Write the pidfile : would be useful for automation process*/
file = g_strconcat(g_get_home_dir(), "/", ".mosaicpid", NULL);
if((fp = fopen(file, "w"))) {
fprintf (fp, "%d\n", getpid());
fclose (fp);
signal(SIGUSR1, support_handle_remote);
}
g_free(file);
}
void support_cleanup_remote() {
gchar *file;
signal(SIGUSR1, SIG_IGN);
file = g_strconcat(g_get_home_dir(), "/", ".mosaicpid", NULL);
unlink(file);
g_free(file);
}
void support_autocomplete_populate(gpointer data, gpointer combobox) {
if (!data || !combobox)
return;
gtk_combo_set_popdown_strings (GTK_COMBO (combobox), gAutoCompleteList);
}
void support_populate_autocomplete(GtkCombo *comboBox) {
g_list_foreach(gAutoCompleteList, support_autocomplete_populate, comboBox);
}
gint support_autocomplete_list_cmp(gconstpointer a, gconstpointer b) {
if (!a)
return -1;
if (!b)
return 1;
return strcmp((char*)a, (char*)b);
}
void support_init_autocomplete() {
if (!gAutoCompleteList)
return;
char* full_path = g_strdup_printf("%s/%s", gMinimoProfilePath, "autocomplete.txt");
FILE *fp;
char url[255];
gMinimoAutoCompleteListStore = gtk_list_store_new (1, G_TYPE_STRING);
if((fp = fopen(full_path, "r+"))) {
while(fgets(url, sizeof(url) - 1, fp)) {
int length = strlen(url);
if (url[length-1] == '\n')
url[length-1] = '\0';
gAutoCompleteList = g_list_append(gAutoCompleteList, g_strdup(url));
/* Append url's to autocompletion feature */
gtk_list_store_append (gMinimoAutoCompleteListStore, &gMinimoAutoCompleteIter);
gtk_list_store_set (gMinimoAutoCompleteListStore, &gMinimoAutoCompleteIter, 0, url, -1);
}
fclose(fp);
}
gAutoCompleteList = g_list_sort(gAutoCompleteList, support_autocomplete_list_cmp);
}
void support_autocomplete_writer(gpointer data, gpointer fp) {
FILE* file = (FILE*) fp;
char* url = (char*) data;
if (!url || !fp)
return;
fwrite(url, strlen(url), 1, file);
fputc('\n', file);
}
void support_autocomplete_destroy(gpointer data, gpointer dummy) {
g_free(data);
}
void support_cleanup_autocomplete() {
char* full_path = g_strdup_printf("%s/%s", gMinimoProfilePath, "autocomplete.txt");
FILE *fp;
if((fp = fopen(full_path, "w"))) {
g_list_foreach(gAutoCompleteList, support_autocomplete_writer, fp);
fclose(fp);
}
g_free(full_path);
g_list_foreach(gAutoCompleteList, support_autocomplete_destroy, NULL);
}
void support_add_autocomplete(const char* value, OpenDialogParams* params) {
GList* found = g_list_find_custom(gAutoCompleteList, value, support_autocomplete_list_cmp);
if (!found) {
gAutoCompleteList = g_list_insert_sorted(gAutoCompleteList, g_strdup(value), support_autocomplete_list_cmp);
/* Append url's to autocompletion*/
gtk_list_store_append (gMinimoAutoCompleteListStore, &gMinimoAutoCompleteIter);
gtk_list_store_set (gMinimoAutoCompleteListStore, &gMinimoAutoCompleteIter, 0, value, -1);
}
gtk_combo_set_popdown_strings (GTK_COMBO (params->dialog_combo), gAutoCompleteList);
}
/* Method that build the entry completion */
void support_build_entry_completion (MinimoBrowser* browser)
{
/* Minimo entry completion */
gMinimoEntryCompletion = gtk_entry_completion_new ();
gtk_entry_completion_set_model (gMinimoEntryCompletion, GTK_TREE_MODEL (gMinimoAutoCompleteListStore));
gtk_entry_completion_set_text_column (gMinimoEntryCompletion, 0);
}
/* Method to sep up the escape key handler */
void support_setup_escape_key_handler(GtkWidget *window)
{
g_signal_connect(G_OBJECT(window), "key_press_event", G_CALLBACK(support_escape_key_handler), NULL);
}
/* Method to handler the escape key */
gint support_escape_key_handler(GtkWidget *window, GdkEventKey *ev)
{
g_return_val_if_fail(window != NULL, FALSE);
if (ev->keyval == GDK_Escape) {
gtk_widget_destroy(window);
return (1);
}
return (0);
}
PangoFontDescription* getOrCreateDefaultMinimoFont()
{
if (gDefaultMinimoFont)
return gDefaultMinimoFont;
gDefaultMinimoFont = pango_font_description_from_string("sans 8");
return gDefaultMinimoFont;
}
void support_destroy_dialog_params_cb(GtkWidget *widget, OpenDialogParams* params)
{
free(params);
}

View File

@ -0,0 +1,77 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is
* Christopher Blizzard. Portions created by Christopher Blizzard are Copyright (C) Christopher Blizzard. All Rights Reserved.
* Portions created by the Initial Developer are Copyright (C) 2001
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Christopher Blizzard <blizzard@mozilla.org>
* Doug Turner <dougt@meer.net> Branched from TestGtkEmbed.cpp
*
* The 10LE Team (in alphabetical order)
* -------------------------------------
*
* Ilias Biris <ext-ilias.biris@indt.org.br> - Coordinator
* Afonso Costa <afonso.costa@indt.org.br>
* Antonio Gomes <antonio.gomes@indt.org.br>
* Diego Gonzalez <diego.gonzalez@indt.org.br>
* Raoni Novellino <raoni.novellino@indt.org.br>
* Andre Pedralho <andre.pedralho@indt.org.br>
*
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#ifndef minimo_support_h
#define minimo_support_h
#include "minimo_types.h"
void support_handle_remote (int );
void support_init_remote ();
void support_cleanup_remote ();
void support_destroy_dialog_params_cb (GtkWidget *, OpenDialogParams* );
void support_build_entry_completion (MinimoBrowser* );
void support_autocomplete_populate (gpointer , gpointer );
void support_populate_autocomplete (GtkCombo *);
gint support_autocomplete_list_cmp (gconstpointer , gconstpointer );
void support_init_autocomplete ();
void support_autocomplete_writer (gpointer , gpointer );
void support_autocomplete_destroy (gpointer , gpointer );
void support_cleanup_autocomplete ();
void support_add_autocomplete (const char* , OpenDialogParams* );
void support_setup_escape_key_handler(GtkWidget *);
gint support_escape_key_handler(GtkWidget *, GdkEventKey *);
PangoFontDescription* getOrCreateDefaultMinimoFont();
#endif

View File

@ -70,104 +70,103 @@
/* MINIMO TOOLBAR STRUCT */
typedef struct _MinimoToolBar {
GtkWidget *toolbar;
GtkWidget *OpenButton;
GtkWidget *BackButton;
GtkWidget *ReloadButton;
GtkWidget *ForwardButton;
GtkWidget *StopButton;
GtkWidget *PrefsButton;
GtkWidget *InfoButton;
GtkWidget *QuitButton;
GtkWidget *toolbar;
GtkWidget *OpenButton;
GtkWidget *BackButton;
GtkWidget *ReloadButton;
GtkWidget *ForwardButton;
GtkWidget *StopButton;
GtkWidget *PrefsButton;
GtkWidget *InfoButton;
GtkWidget *QuitButton;
} MinimoToolbar;
/* MINIMO STRUCT */
typedef struct _MinimoBrowser {
GtkWidget *topLevelWindow;
GtkWidget *topLevelVBox;
GtkWidget *mozEmbed;
MinimoToolbar toolbar;
gboolean show_tabs;
GtkWidget *notebook;
GtkWidget *label_notebook;
GtkWidget *active_page;
GtkWidget *progressPopup;
GtkWidget *progressBar;
gint totalBytes;
GtkWidget *link_menu;
GtkWidget *image_menu;
GtkWidget *doc_menu;
GtkWidget *image_link_menu;
GtkWidget *reload_menu;
gboolean didFind;
GtkWidget *topLevelWindow;
GtkWidget *topLevelVBox;
GtkWidget *mozEmbed;
MinimoToolbar toolbar;
gboolean show_tabs;
GtkWidget *notebook;
GtkWidget *label_notebook;
GtkWidget *active_page;
GtkWidget *progressPopup;
GtkWidget *progressBar;
gint totalBytes;
GtkWidget *link_menu;
GtkWidget *image_menu;
GtkWidget *doc_menu;
GtkWidget *image_link_menu;
GtkWidget *reload_menu;
gboolean didFind;
} MinimoBrowser;
typedef struct _PrefWindow /* configuration data struct */
{
GtkWidget *dialog;
GtkWidget *okbutton;
GtkWidget *cancelbutton;
GtkWidget *applybutton;
GtkWidget *block_popup;
GtkWidget *vbox_popup;
GtkWidget *fr_connection;
GtkWidget *vbox_connection;
GtkWidget *hbox_connection;
GtkWidget *hbox_direct_connection;
GtkWidget *fr_popup;
GtkWidget *lb_popup;
GtkWidget *vbox_manual;
GtkWidget *rb_manual_connection;
GtkWidget *hbox_http;
GtkWidget *lb_http;
GtkWidget *en_http_proxy;
GtkWidget *box_popup;
GtkWidget *lb_port_http;
GtkWidget *en_http_port;
GtkWidget *hbox_ssl;
GtkWidget *lb_ssl;
GtkWidget *en_ssl;
GtkWidget *lb_ssl_port;
GtkWidget *en_ssl_port;
GtkWidget *hbox_ftp;
GtkWidget *lb_ftp;
GtkWidget *en_ftp_proxy;
GtkWidget *lb_ftp_port;
GtkWidget *en_ftp_port;
GtkWidget *hbox_noproxy;
GtkWidget *lb_connection;
GSList *rb_direct_connection_group;
GSList *rb_manual_connection_group;
GtkWidget *hbox_manual_connection;
GtkWidget *rb_direct_connection;
GtkWidget *dialog;
GtkWidget *okbutton;
GtkWidget *cancelbutton;
GtkWidget *applybutton;
GtkWidget *block_popup;
GtkWidget *vbox_popup;
GtkWidget *fr_connection;
GtkWidget *vbox_connection;
GtkWidget *hbox_connection;
GtkWidget *hbox_direct_connection;
GtkWidget *fr_popup;
GtkWidget *lb_popup;
GtkWidget *vbox_manual;
GtkWidget *rb_manual_connection;
GtkWidget *hbox_http;
GtkWidget *lb_http;
GtkWidget *en_http_proxy;
GtkWidget *box_popup;
GtkWidget *lb_port_http;
GtkWidget *en_http_port;
GtkWidget *hbox_ssl;
GtkWidget *lb_ssl;
GtkWidget *en_ssl;
GtkWidget *lb_ssl_port;
GtkWidget *en_ssl_port;
GtkWidget *hbox_ftp;
GtkWidget *lb_ftp;
GtkWidget *en_ftp_proxy;
GtkWidget *lb_ftp_port;
GtkWidget *en_ftp_port;
GtkWidget *hbox_noproxy;
GtkWidget *lb_connection;
GSList *rb_direct_connection_group;
GSList *rb_manual_connection_group;
GtkWidget *hbox_manual_connection;
GtkWidget *rb_direct_connection;
} PrefWindow;
/* SPECIFIC STRUCT FOR SPECIFY SOME PARAMETERS OF '_open_dialog_params' METHOD */
typedef struct _open_dialog_params
{
GtkWidget* dialog_combo;
GtkWidget* main_combo;
GtkWidget* dialog_combo;
GtkWidget* main_combo;
} OpenDialogParams;
/* SPECIFIC STRUCT FOR THE RIGHT CLICK BUTTON EMULATION */
typedef struct _right_button_click
{
GTimer *pressing_timer;
gulong sig_handler;
gboolean is_connected;
GTimer *pressing_timer;
gulong sig_handler;
} RightButtonClick;
@ -185,56 +184,56 @@ typedef struct _right_button_click
#define DEFAULT_MONOSPACE_FONT "-adobe-times-medium-r-normal-*-14-*-*-*-p-*-iso8859-1"
static const char *lang_font_item [LANG_FONT_NUM] =
{
"x-western",
"x-central-euro",
"ja",
"zh-TW",
"zh-CN",
"ko",
"x-cyrillic",
"x-baltic",
"el",
"tr",
"x-unicode",
"x-user-def",
"th",
"he",
"ar"
};
{
"x-western",
"x-central-euro",
"ja",
"zh-TW",
"zh-CN",
"ko",
"x-cyrillic",
"x-baltic",
"el",
"tr",
"x-unicode",
"x-user-def",
"th",
"he",
"ar"
};
/**
* configuration data struct
*/
* configuration data struct
*/
typedef struct _ConfigData /* configuration data struct */
{
/* minimo prefs */
gchar *home;
gchar *mailer;
gint xsize;
gint ysize;
gint layout;
gint maxpopupitems;
gint max_go;
/* mozilla prefs */
gchar *http_proxy;
gchar *http_proxy_port;
gchar *ftp_proxy;
gchar *ftp_proxy_port;
gchar *ssl_proxy;
gchar *ssl_proxy_port;
gint font_size[LANG_FONT_NUM];
gint min_font_size[LANG_FONT_NUM];
gint current_font_size;
gboolean java;
gboolean javascript;
gboolean underline_links;
gchar *no_proxy_for;
gint direct_connection;
gint popup_in_new_window;
gint disable_popups;
gint tab_text_length;
/* minimo prefs */
gchar *home;
gchar *mailer;
gint xsize;
gint ysize;
gint layout;
gint maxpopupitems;
gint max_go;
/* mozilla prefs */
gchar *http_proxy;
gchar *http_proxy_port;
gchar *ftp_proxy;
gchar *ftp_proxy_port;
gchar *ssl_proxy;
gchar *ssl_proxy_port;
gint font_size[LANG_FONT_NUM];
gint min_font_size[LANG_FONT_NUM];
gint current_font_size;
gboolean java;
gboolean javascript;
gboolean underline_links;
gchar *no_proxy_for;
gint direct_connection;
gint popup_in_new_window;
gint disable_popups;
gint tab_text_length;
} ConfigData;
/****************/
@ -243,21 +242,21 @@ typedef struct _ConfigData /* configuration data struct */
/* History Window Structure */
typedef struct _HistoryWindow{
GtkWidget *window;
GtkWidget *scrolled_window;
GtkWidget *clist;
GtkWidget *vbox;
GtkWidget *remove;
GtkWidget *close;
GtkWidget *btnbox;
GtkWidget *clear;
GtkWidget *search_label;
GtkWidget *search_entry;
GtkWidget *search_box;
GtkWidget *search_button;
GtkWidget *go_button;
GtkWidget *embed;
gchar *title;
GtkWidget *window;
GtkWidget *scrolled_window;
GtkWidget *clist;
GtkWidget *vbox;
GtkWidget *remove;
GtkWidget *close;
GtkWidget *btnbox;
GtkWidget *clear;
GtkWidget *search_label;
GtkWidget *search_entry;
GtkWidget *search_box;
GtkWidget *search_button;
GtkWidget *go_button;
GtkWidget *embed;
gchar *title;
}HistoryWindow;
/****************/
@ -267,48 +266,47 @@ typedef struct _HistoryWindow{
/* represent a bookmark item */
typedef struct _BookmarkData {
gchar *label;
gchar *url;
gchar *label;
gchar *url;
} BookmarkData;
/* Represents Bookmarks List View*/
typedef struct _BookmarkCTreeData {
GtkWidget *ctree;
GtkCTreeNode *parent;
} BookmarkCTreeData;
/* Represents Bookmarks Tree View*/
typedef struct _BookmarkTreeVData {
GtkTreeModel *treeStore;
GtkTreeIter *parentIter;
} BookmarkTreeVData;
/* Bookmarks Window Structure */
typedef struct _BookmarkWindow {
GtkWidget *window;
GtkWidget *scrolled_window;
GtkWidget *vbox1;
GtkWidget *hbox1;
GtkWidget *hbox2;
GtkWidget *hbox3;
GtkWidget *text_label;
GtkWidget *text_entry;
GtkWidget *url_label;
GtkWidget *url_entry;
GtkWidget *add_button;
GtkWidget *edit_button;
GtkWidget *folder_entry;
GtkWidget *remove_button;
GtkWidget *ok_button;
GtkWidget *go_button;
GtkWidget *cancel_button;
GtkWidget *ctree;
GNode *temp_node;
GNode *parent_node;
GtkCTreeNode *menu_node;
BookmarkData *menu_node_data;
BookmarkCTreeData ctree_data;
GtkWidget *reload_menu; /* context menu for reload flags */
GtkWidget *doc_menu; /* pointer to document popup menu */
GtkWidget *image_menu; /* pointer to image popup menu */
GtkWidget *link_menu; /* pointer to link popup menu */
GtkWidget *image_link_menu; /* pointer to image link popup menu */
FILE *bookmark_file;
GtkWidget *window;
GtkWidget *menubar;
GtkWidget *menu_item_tools;
GtkWidget *menu_tools;
GtkWidget *menu_import;
GtkWidget *menu_export;
GtkWidget *scrolled_window;
GtkWidget *vbox1;
GtkWidget *hbox4;
GtkWidget *hbox1;
GtkWidget *hbox2;
GtkWidget *hbox3;
GtkWidget *text_label;
GtkWidget *text_entry;
GtkWidget *url_label;
GtkWidget *url_entry;
GtkWidget *add_button;
GtkWidget *edit_button;
GtkWidget *folder_entry;
GtkWidget *remove_button;
GtkWidget *ok_button;
GtkWidget *go_button;
GtkWidget *cancel_button;
GtkWidget *treev;
GtkTreeIter iter;
GtkTreeSelection *selection;
BookmarkTreeVData *treev_data;
} BookmarkWindow;
#endif