aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@it.gnome.org>2003-06-16 18:56:04 +0800
committerMarco Pesenti Gritti <mpeseng@src.gnome.org>2003-06-16 18:56:04 +0800
commit265c85e8ab0a90f2a7d389f5cd9f750eeadf3e22 (patch)
tree27d5f110e573bdbe64ae0a0d500ddd95fc65c4b0 /lib
parent3241ea896ff4f8939c038ab65f03948d026ed520 (diff)
downloadgsoc2013-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.c68
-rw-r--r--lib/ephy-dnd.c2
-rw-r--r--lib/ephy-gui.c66
-rw-r--r--lib/ephy-gui.h7
-rw-r--r--lib/ephy-string.c397
-rw-r--r--lib/ephy-string.h37
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