diff options
author | Marco Pesenti Gritti <marco@it.gnome.org> | 2003-06-16 18:56:04 +0800 |
---|---|---|
committer | Marco Pesenti Gritti <mpeseng@src.gnome.org> | 2003-06-16 18:56:04 +0800 |
commit | 265c85e8ab0a90f2a7d389f5cd9f750eeadf3e22 (patch) | |
tree | 27d5f110e573bdbe64ae0a0d500ddd95fc65c4b0 /lib | |
parent | 3241ea896ff4f8939c038ab65f03948d026ed520 (diff) | |
download | gsoc2013-epiphany-265c85e8ab0a90f2a7d389f5cd9f750eeadf3e22.tar.gz gsoc2013-epiphany-265c85e8ab0a90f2a7d389f5cd9f750eeadf3e22.tar.zst gsoc2013-epiphany-265c85e8ab0a90f2a7d389f5cd9f750eeadf3e22.zip |
Merge with popup control, we dont need it for bonobo window anymore.
2003-06-16 Marco Pesenti Gritti <marco@it.gnome.org>
* embed/Makefile.am:
* embed/ephy-embed-popup-control.c:
(ephy_embed_popup_control_get_type),
(ephy_embed_popup_control_set_property),
(ephy_embed_popup_control_get_property),
(ephy_embed_popup_control_class_init),
(ephy_embed_popup_control_init),
(ephy_embed_popup_control_finalize), (get_popup_path),
(ephy_embed_popup_control_show), (setup_element_menu),
(setup_document_menu), (ephy_embed_popup_control_set_event),
(ephy_embed_popup_control_connect_verbs),
(ephy_embed_popup_control_get_event),
(embed_popup_copy_location_cmd), (embed_popup_copy_email_cmd),
(embed_popup_copy_link_location_cmd), (save_property_url),
(embed_popup_open_link_cmd), (embed_popup_download_link_cmd),
(embed_popup_save_image_as_cmd), (background_download_completed),
(embed_popup_set_image_as_background_cmd),
(embed_popup_copy_image_location_cmd), (save_url),
(embed_popup_save_page_as_cmd),
(embed_popup_save_background_as_cmd), (embed_popup_open_frame_cmd),
(embed_popup_reload_frame_cmd), (embed_popup_open_image_cmd),
(embed_popup_copy_to_clipboard):
* embed/ephy-embed-popup-control.h:
Merge with popup control, we dont need it for bonobo
window anymore.
* embed/mozilla/mozilla-embed-single.cpp:
Do not override the UA but set vendor prefs so
that mozilla can build it correctly.
* lib/ephy-dialog.c: (get_radio_button_active_index),
(set_config_from_radiobuttongroup),
(set_radiobuttongroup_from_config), (prefs_set_group_sensitivity),
(impl_get_value):
* lib/ephy-dnd.c: (ephy_dnd_node_list_extract_nodes):
* lib/ephy-gui.c:
* lib/ephy-gui.h:
* lib/ephy-string.c: (ephy_string_shorten), (ephy_string_to_int),
(ephy_string_strip_chr), (ephy_string_elide_underscores):
* lib/ephy-string.h:
* src/ephy-nautilus-view.c: (ephy_nautilus_view_instance_init),
(gnv_embed_context_menu_cb), (gnv_embed_location_cb),
(gnv_view_from_popup), (gnv_popup_cmd_new_window),
(gnv_popup_cmd_image_in_new_window),
(gnv_popup_cmd_frame_in_new_window), (gnv_cmd_file_print),
(gnv_embed_zoom_change_cb):
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ephy-dialog.c | 68 | ||||
-rw-r--r-- | lib/ephy-dnd.c | 2 | ||||
-rw-r--r-- | lib/ephy-gui.c | 66 | ||||
-rw-r--r-- | lib/ephy-gui.h | 7 | ||||
-rw-r--r-- | lib/ephy-string.c | 397 | ||||
-rw-r--r-- | lib/ephy-string.h | 37 |
6 files changed, 78 insertions, 499 deletions
diff --git a/lib/ephy-dialog.c b/lib/ephy-dialog.c index 07126f7ce..6e891d3a2 100644 --- a/lib/ephy-dialog.c +++ b/lib/ephy-dialog.c @@ -238,13 +238,42 @@ set_config_from_optionmenu (GtkWidget *optionmenu, const char *config_name, GLis } } +static int +get_radio_button_active_index (GtkWidget *radiobutton) +{ + gint index; + GtkToggleButton *toggle_button; + gint i, length; + GSList *list; + + /* get group list */ + list = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton)); + length = g_slist_length (list); + + /* iterate over list to find active button */ + for (i = 0; list != NULL; i++, list = g_slist_next (list)) + { + /* get button and text */ + toggle_button = GTK_TOGGLE_BUTTON (list->data); + if (gtk_toggle_button_get_active (toggle_button)) + { + break; + } + } + + /* check we didn't run off end */ + g_assert (list != NULL); + + /* return index (reverse order!) */ + return index = (length - 1) - i; +} + static void set_config_from_radiobuttongroup (GtkWidget *radiobutton, const char *config_name, GList *senum) { - gint index; + int index; - /* get value from radio button group */ - index = ephy_gui_gtk_radio_button_get (GTK_RADIO_BUTTON (radiobutton)); + index = get_radio_button_active_index (radiobutton); if (senum) { @@ -394,9 +423,31 @@ set_optionmenu_from_config (GtkWidget *optionmenu, const char *config_name, GLis static void set_radiobuttongroup_from_config (GtkWidget *radiobutton, const char *config_name, GList *senum) { - /* set it (finds the group for us) */ - ephy_gui_gtk_radio_button_set (GTK_RADIO_BUTTON (radiobutton), - get_index (config_name, senum)); + GtkToggleButton *button; + GSList *list; + gint length; + int index; + + index = get_index (config_name, senum); + + /* get the list */ + list = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radiobutton)); + + /* check out the length */ + length = g_slist_length (list); + + /* new buttons are *preppended* to the list, so button added as first + * has last position in the list */ + index = (length - 1) - index; + + /* find the right button */ + button = GTK_TOGGLE_BUTTON (g_slist_nth_data (list, index)); + + /* set it... this will de-activate the others in the group */ + if (gtk_toggle_button_get_active (button) == FALSE) + { + gtk_toggle_button_set_active (button, TRUE); + } } static void @@ -518,8 +569,7 @@ prefs_set_group_sensitivity (GtkWidget *widget, if (GTK_IS_RADIO_BUTTON (widget)) { - group = ephy_gui_gtk_radio_button_get - (GTK_RADIO_BUTTON(widget)); + group = get_radio_button_active_index (widget); } else if (GTK_IS_TOGGLE_BUTTON (widget)) { @@ -1103,7 +1153,7 @@ impl_get_value (EphyDialog *dialog, { int val; g_value_init (value, G_TYPE_INT); - val = ephy_gui_gtk_radio_button_get (GTK_RADIO_BUTTON(widget)); + val = get_radio_button_active_index (widget); g_value_set_int (value, val); } else if (GTK_IS_TOGGLE_BUTTON (widget)) diff --git a/lib/ephy-dnd.c b/lib/ephy-dnd.c index 9f10c5a3c..75fb895d5 100644 --- a/lib/ephy-dnd.c +++ b/lib/ephy-dnd.c @@ -125,7 +125,7 @@ ephy_dnd_node_list_extract_nodes (const char *node_list) db = ephy_node_db_get_by_name (nodes[i]); g_return_val_if_fail (db != NULL, NULL); - if (ephy_str_to_int (nodes[i + 1], &id)) + if (ephy_string_to_int (nodes[i + 1], &id)) { EphyNode *node; diff --git a/lib/ephy-gui.c b/lib/ephy-gui.c index d41d2a554..114344dab 100644 --- a/lib/ephy-gui.c +++ b/lib/ephy-gui.c @@ -62,70 +62,6 @@ ephy_gui_menu_position_under_widget (GtkMenu *menu, g_print ("result %d\n", *y); } -/** - * gul_gui_gtk_radio_button_get: get the active member of a radiobutton - * group from one of the buttons in the group. This should be in GTK+! - */ -gint -ephy_gui_gtk_radio_button_get (GtkRadioButton *radio_button) -{ - GtkToggleButton *toggle_button; - gint i, length; - GSList *list; - - /* get group list */ - list = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio_button)); - length = g_slist_length (list); - - /* iterate over list to find active button */ - for (i = 0; list != NULL; i++, list = g_slist_next (list)) - { - /* get button and text */ - toggle_button = GTK_TOGGLE_BUTTON (list->data); - if (gtk_toggle_button_get_active (toggle_button)) - { - break; - } - } - - /* check we didn't run off end */ - g_assert (list != NULL); - - /* return index (reverse order!) */ - return (length - 1) - i; -} - -/** - * gul_gui_gtk_radio_button_set: set the active member of a radiobutton - * group from one of the buttons in the group. This should be in GTK+! - */ -void -ephy_gui_gtk_radio_button_set (GtkRadioButton *radio_button, gint index) -{ - GtkToggleButton *button; - GSList *list; - gint length; - - /* get the list */ - list = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio_button)); - - /* check out the length */ - length = g_slist_length (list); - - /* new buttons are *preppended* to the list, so button added as first - * has last position in the list */ - index = (length - 1) - index; - - /* find the right button */ - button = GTK_TOGGLE_BUTTON (g_slist_nth_data (list, index)); - - /* set it... this will de-activate the others in the group */ - if (gtk_toggle_button_get_active (button) == FALSE) - { - gtk_toggle_button_set_active (button, TRUE); - } -} - gboolean ephy_gui_confirm_overwrite_file (GtkWidget *parent, const char *filename) { @@ -153,7 +89,7 @@ ephy_gui_confirm_overwrite_file (GtkWidget *parent, const char *filename) return res; } -void +void ephy_gui_help (GtkWindow *parent, const char *file_name, const char *link_id) diff --git a/lib/ephy-gui.h b/lib/ephy-gui.h index 4db9caffb..ee2eeb155 100644 --- a/lib/ephy-gui.h +++ b/lib/ephy-gui.h @@ -32,17 +32,12 @@ void ephy_gui_menu_position_under_widget (GtkMenu *menu, gboolean *push_in, gpointer user_data); -gint ephy_gui_gtk_radio_button_get (GtkRadioButton *radio_button); - -void ephy_gui_gtk_radio_button_set (GtkRadioButton *radio_button, - gint index); - gboolean ephy_gui_confirm_overwrite_file (GtkWidget *parent, const char *filename); void ephy_gui_help (GtkWindow *parent, const char *file_name, - const char *link_id); + const char *link_id); G_END_DECLS #endif diff --git a/lib/ephy-string.c b/lib/ephy-string.c index b97e0485c..79eaa215a 100644 --- a/lib/ephy-string.c +++ b/lib/ephy-string.c @@ -15,7 +15,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - + #ifdef HAVE_CONFIG_H #include <config.h> #endif @@ -25,9 +25,6 @@ #include <errno.h> #include <string.h> #include <glib.h> -#include <bonobo/bonobo-i18n.h> -#include <libgnomevfs/gnome-vfs-mime.h> -#include <libxml/parser.h> #define ELLIPSIS "\xe2\x80\xa6" @@ -40,7 +37,7 @@ * FIXME: this function is a big mess. While it is utf-8 safe now, * it can still split a sequence of combining characters */ -gchar * +char * ephy_string_shorten (const gchar *str, gint target_length) { gchar *new_str; @@ -57,91 +54,17 @@ ephy_string_shorten (const gchar *str, gint target_length) /* create string */ bytes = GPOINTER_TO_UINT (g_utf8_offset_to_pointer (str, target_length - 1) - str); - + new_str = g_new0 (gchar, bytes + strlen(ELLIPSIS) + 1); - + strncpy (new_str, str, bytes); strncpy (new_str + bytes, ELLIPSIS, strlen (ELLIPSIS)); return new_str; } -char * -ephy_string_double_underscores (const char *string) -{ - int underscores; - const char *p; - char *q; - char *escaped; - - if (string == NULL) { - return NULL; - } - - underscores = 0; - for (p = string; *p != '\0'; p++) { - underscores += (*p == '_'); - } - - if (underscores == 0) { - return g_strdup (string); - } - - escaped = g_new (char, strlen (string) + underscores + 1); - for (p = string, q = escaped; *p != '\0'; p++, q++) { - /* Add an extra underscore. */ - if (*p == '_') { - *q++ = '_'; - } - *q = *p; - } - *q = '\0'; - - return escaped; -} - -/** - * ephy_string_store_time_in_string: - * NOTE: str must be at least 256 chars long - */ -void -ephy_string_store_time_in_string (GDate *t, gchar *str, const char *format) -{ - int length; - - if (t > 0) - { - /* format into string */ - /* this is used whenever a brief date is needed, like - * in the history (for last visited, first time visited) */ - length = g_date_strftime (str, 255, - format ? format : _("%Y-%m-%d"), t); - str[length] = '\0'; - } - else - { - str[0] = '\0'; - } -} - -/** - * ephy_string_time_to_string: - */ -gchar * -ephy_string_time_to_string (GDate *t, - const char *format) -{ - gchar str[256]; - - /* write into stack string */ - ephy_string_store_time_in_string (t, str, format); - - /* copy in heap and return */ - return g_strdup (str); -} - gboolean -ephy_str_to_int (const char *string, gulong *integer) +ephy_string_to_int (const char *string, gulong *integer) { gulong result; char *parse_end; @@ -183,7 +106,7 @@ ephy_str_to_int (const char *string, gulong *integer) * of @remove_this. */ char * -ephy_str_strip_chr (const char *source, char remove_this) +ephy_string_strip_chr (const char *source, char remove_this) { char *result, *out; const char *in; @@ -204,313 +127,17 @@ ephy_str_strip_chr (const char *source, char remove_this) return result; } -int -ephy_strcasecmp (const char *string_a, const char *string_b) -{ - return g_ascii_strcasecmp (string_a == NULL ? "" : string_a, - string_b == NULL ? "" : string_b); -} - -int -ephy_strcasecmp_compare_func (gconstpointer string_a, gconstpointer string_b) -{ - return ephy_strcasecmp ((const char *) string_a, - (const char *) string_b); -} - -/** - * like strpbrk but ignores chars preceded by slashes, unless the - * slash is also preceded by a slash unless that later slash is - * preceded by another slash... ;-) - */ -static char * -ephy_strpbrk_unescaped (const char *s, const char *accept) -{ - gchar *ret = strpbrk (s, accept); - - if (!ret || ret == s || *(ret - 1) != '\\') - { - return ret; - } - else - { - gchar *c = ret - 1; - g_assert (*c == '\\'); - - while (c >= s && *c == '\\') c--; - - if ((ret - c) % 2 == 0) - { - return ephy_strpbrk_unescaped (ret + 1, accept); - } - else - { - return ret; - } - } -} - -/** - * like strstr but supports quoting, ignoring matches inside quoted text - */ -static char * -ephy_strstr_with_quotes (const char *haystack, const char *needle, - const char *quotes) -{ - gchar *quot = ephy_strpbrk_unescaped (haystack, quotes); - gchar *ret = strstr (haystack, needle); - - if (!quot || !ret || ret < quot) - { - return ret; - } - - quot = ephy_strpbrk_unescaped (quot + 1, quotes); - - if (quot) - { - return ephy_strstr_with_quotes (quot + 1, needle, quotes); - } - else - { - return NULL; - } -} - -/** - * like strpbrk but supports quoting, ignoring matches inside quoted text - */ -static char * -ephy_strpbrk_with_quotes (const char *haystack, const char *needles, - const char *quotes) -{ - gchar *quot = ephy_strpbrk_unescaped (haystack, quotes); - gchar *ret = strpbrk (haystack, needles); - - if (!quot || !ret || ret < quot) - { - return ret; - } - - quot = ephy_strpbrk_unescaped (quot + 1, quotes); - - if (quot) - { - return ephy_strpbrk_with_quotes (quot + 1, needles, quotes); - } - else - { - return NULL; - } -} - -/** - * Like g_strsplit, but does not split tokens betwen quotes. Ignores - * quotes preceded by '\'. - */ -gchar ** -ephy_strsplit_with_quotes (const gchar *string, - const gchar *delimiter, - gint max_tokens, - const gchar *quotes) -{ - GSList *string_list = NULL, *slist; - gchar **str_array, *s; - guint n = 0; - const gchar *remainder; - - g_return_val_if_fail (string != NULL, NULL); - g_return_val_if_fail (delimiter != NULL, NULL); - g_return_val_if_fail (delimiter[0] != '\0', NULL); - - if (quotes == NULL) - { - return g_strsplit (string, delimiter, max_tokens); - } - - if (max_tokens < 1) - { - max_tokens = G_MAXINT; - } - - remainder = string; - s = ephy_strstr_with_quotes (remainder, delimiter, quotes); - if (s) - { - gsize delimiter_len = strlen (delimiter); - - while (--max_tokens && s) - { - gsize len; - gchar *new_string; - - len = s - remainder; - new_string = g_new (gchar, len + 1); - strncpy (new_string, remainder, len); - new_string[len] = 0; - string_list = g_slist_prepend (string_list, new_string); - n++; - remainder = s + delimiter_len; - s = ephy_strstr_with_quotes (remainder, delimiter, quotes); - } - } - if (*string) - { - n++; - string_list = g_slist_prepend (string_list, g_strdup (remainder)); - } - - str_array = g_new (gchar*, n + 1); - - str_array[n--] = NULL; - for (slist = string_list; slist; slist = slist->next) - { - str_array[n--] = slist->data; - } - - g_slist_free (string_list); - - return str_array; -} - -/** - * like ephy_strsplit_with_quotes, but matches any char in 'delimiters' as delimiter - * and does not return empty tokens - */ -gchar ** -ephy_strsplit_multiple_delimiters_with_quotes (const gchar *string, - const gchar *delimiters, - gint max_tokens, - const gchar *quotes) -{ - GSList *string_list = NULL, *slist; - gchar **str_array, *s; - guint n = 0; - const gchar *remainder; - - g_return_val_if_fail (string != NULL, NULL); - g_return_val_if_fail (delimiters != NULL, NULL); - g_return_val_if_fail (delimiters[0] != '\0', NULL); - - if (quotes == NULL) - { - quotes = ""; - } - - if (max_tokens < 1) - { - max_tokens = G_MAXINT; - } - - remainder = string; - s = ephy_strpbrk_with_quotes (remainder, delimiters, quotes); - if (s) - { - const gsize delimiter_len = 1; /* only chars */ - - while (--max_tokens && s) - { - gsize len; - gchar *new_string; - - len = s - remainder; - if (len > 0) /* ignore empty strings */ - { - new_string = g_new (gchar, len + 1); - strncpy (new_string, remainder, len); - new_string[len] = 0; - string_list = g_slist_prepend (string_list, new_string); - n++; - } - remainder = s + delimiter_len; - s = ephy_strpbrk_with_quotes (remainder, delimiters, quotes); - } - } - if (*string) - { - n++; - string_list = g_slist_prepend (string_list, g_strdup (remainder)); - } - - str_array = g_new (gchar*, n + 1); - - str_array[n--] = NULL; - for (slist = string_list; slist; slist = slist->next) - { - str_array[n--] = slist->data; - } - - g_slist_free (string_list); - - return str_array; -} - -char * -ephy_str_replace_substring (const char *string, - const char *substring, - const char *replacement) -{ - int substring_length, replacement_length, result_length, remaining_length; - const char *p, *substring_position; - char *result, *result_position; - - g_return_val_if_fail (substring != NULL, g_strdup (string)); - g_return_val_if_fail (substring[0] != '\0', g_strdup (string)); - - if (string == NULL) - { - return NULL; - } - - substring_length = strlen (substring); - replacement_length = replacement == NULL ? 0 : strlen (replacement); - - result_length = strlen (string); - for (p = string; ; p = substring_position + substring_length) - { - substring_position = strstr (p, substring); - if (substring_position == NULL) - { - break; - } - result_length += replacement_length - substring_length; - } - - result = g_malloc (result_length + 1); - - result_position = result; - for (p = string; ; p = substring_position + substring_length) - { - substring_position = strstr (p, substring); - if (substring_position == NULL) - { - remaining_length = strlen (p); - memcpy (result_position, p, remaining_length); - result_position += remaining_length; - break; - } - memcpy (result_position, p, substring_position - p); - result_position += substring_position - p; - memcpy (result_position, replacement, replacement_length); - result_position += replacement_length; - } - g_assert (result_position - result == result_length); - result_position[0] = '\0'; - - return result; -} - /* copied from egg-toolbar-editor.c */ -gchar * -ephy_str_elide_underscores (const gchar *original) +char * +ephy_string_elide_underscores (const gchar *original) { gchar *q, *result; const gchar *p; gboolean last_underscore; - + q = result = g_malloc (strlen (original) + 1); last_underscore = FALSE; - + for (p = original; *p; p++) { if (!last_underscore && *p == '_') @@ -523,8 +150,8 @@ ephy_str_elide_underscores (const gchar *original) *q++ = *p; } } - + *q = '\0'; - + return result; } diff --git a/lib/ephy-string.h b/lib/ephy-string.h index 56dad3552..a7d083457 100644 --- a/lib/ephy-string.h +++ b/lib/ephy-string.h @@ -23,45 +23,16 @@ G_BEGIN_DECLS -char * ephy_string_double_underscores (const char *string); - -void ephy_string_store_time_in_string (GDate *t, - gchar *str, - const char *format); - -gchar *ephy_string_time_to_string (GDate *t, - const char *format); - -gboolean ephy_str_to_int (const char *string, +gboolean ephy_string_to_int (const char *string, gulong *integer); -char *ephy_str_strip_chr (const char *source, +char *ephy_string_strip_chr (const char *source, char remove_this); -int ephy_strcasecmp (const char *string_a, - const char *string_b); - -int ephy_strcasecmp_compare_func (gconstpointer string_a, - gconstpointer string_b); - -char **ephy_strsplit_with_quotes (const gchar *string, - const gchar *delimiter, - gint max_tokens, - const gchar *quotes); - -gchar *ephy_string_shorten (const gchar *str, +char *ephy_string_shorten (const gchar *str, gint target_length); -char **ephy_strsplit_multiple_delimiters_with_quotes (const gchar *string, - const gchar *delimiters, - gint max_tokens, - const gchar *quotes); - -char *ephy_str_replace_substring (const char *string, - const char *substring, - const char *replacement); - -gchar *ephy_str_elide_underscores (const gchar *original); +char *ephy_string_elide_underscores (const gchar *original); G_END_DECLS |