Factor out katze_xbel_folder_from_data_dirs and _to_data
This commit is contained in:
parent
065cfd0816
commit
1d047c4ab5
5 changed files with 53 additions and 101 deletions
|
@ -764,32 +764,6 @@ katze_xbel_folder_from_file (KatzeXbelItem* folder,
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* katze_xbel_folder_from_data_dirs:
|
|
||||||
* @folder: An empty folder.
|
|
||||||
* @file: A relative path to a file.
|
|
||||||
* @full_path: return location for the full path of the file or %NULL
|
|
||||||
* @error: return location for a GError or %NULL
|
|
||||||
*
|
|
||||||
* Tries to load @file from the user data dir or any of the system data dirs.
|
|
||||||
*
|
|
||||||
* Return value: %TRUE on success or %FALSE when an error occured.
|
|
||||||
**/
|
|
||||||
gboolean
|
|
||||||
katze_xbel_folder_from_data_dirs (KatzeXbelItem* folder,
|
|
||||||
const gchar* file,
|
|
||||||
gchar** full_path,
|
|
||||||
GError** error)
|
|
||||||
{
|
|
||||||
g_return_val_if_fail (katze_xbel_folder_is_empty (folder), FALSE);
|
|
||||||
g_return_val_if_fail (file, FALSE);
|
|
||||||
/* FIXME: Essentially unimplemented */
|
|
||||||
|
|
||||||
*error = g_error_new_literal (KATZE_XBEL_ERROR, KATZE_XBEL_ERROR_READ,
|
|
||||||
_("Malformed document."));
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static gchar*
|
static gchar*
|
||||||
katze_xbel_xml_element (const gchar* name,
|
katze_xbel_xml_element (const gchar* name,
|
||||||
const gchar* value)
|
const gchar* value)
|
||||||
|
@ -860,17 +834,7 @@ katze_xbel_item_to_data (KatzeXbelItem* item)
|
||||||
return markup;
|
return markup;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
static gchar*
|
||||||
* katze_xbel_folder_to_data:
|
|
||||||
* @folder: A folder.
|
|
||||||
* @length: return location for the length of the created string or %NULL
|
|
||||||
* @error: return location for a GError or %NULL
|
|
||||||
*
|
|
||||||
* Retrieve the contents of @folder as a string.
|
|
||||||
*
|
|
||||||
* Return value: %TRUE on success or %FALSE when an error occured.
|
|
||||||
**/
|
|
||||||
gchar*
|
|
||||||
katze_xbel_folder_to_data (KatzeXbelItem* folder,
|
katze_xbel_folder_to_data (KatzeXbelItem* folder,
|
||||||
gsize* length,
|
gsize* length,
|
||||||
GError** error)
|
GError** error)
|
||||||
|
|
|
@ -155,20 +155,9 @@ katze_xbel_folder_from_file (KatzeXbelItem* folder,
|
||||||
const gchar* file,
|
const gchar* file,
|
||||||
GError** error);
|
GError** error);
|
||||||
|
|
||||||
gboolean
|
|
||||||
katze_xbel_folder_from_data_dirs (KatzeXbelItem* folder,
|
|
||||||
const gchar* file,
|
|
||||||
gchar** full_path,
|
|
||||||
GError** error);
|
|
||||||
|
|
||||||
gchar*
|
gchar*
|
||||||
katze_xbel_item_to_data (KatzeXbelItem* item);
|
katze_xbel_item_to_data (KatzeXbelItem* item);
|
||||||
|
|
||||||
gchar*
|
|
||||||
katze_xbel_folder_to_data (KatzeXbelItem* folder,
|
|
||||||
gsize* length,
|
|
||||||
GError** error);
|
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
katze_xbel_folder_to_file (KatzeXbelItem* folder,
|
katze_xbel_folder_to_file (KatzeXbelItem* folder,
|
||||||
const gchar* file,
|
const gchar* file,
|
||||||
|
|
|
@ -351,38 +351,6 @@ midori_web_list_add_item_cb (KatzeArray* trash,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
midori_browser_session_cb (MidoriBrowser* browser,
|
|
||||||
gpointer arg1,
|
|
||||||
KatzeXbelItem* session)
|
|
||||||
{
|
|
||||||
gchar* config_path;
|
|
||||||
gchar* config_file;
|
|
||||||
GError* error;
|
|
||||||
|
|
||||||
config_path = g_build_filename (g_get_user_config_dir (),
|
|
||||||
PACKAGE_NAME, NULL);
|
|
||||||
g_mkdir_with_parents (config_path, 0755);
|
|
||||||
config_file = g_build_filename (config_path, "session.xbel", NULL);
|
|
||||||
error = NULL;
|
|
||||||
if (!katze_xbel_folder_to_file (session, config_file, &error))
|
|
||||||
{
|
|
||||||
g_warning (_("The session couldn't be saved. %s"), error->message);
|
|
||||||
g_error_free (error);
|
|
||||||
}
|
|
||||||
|
|
||||||
g_free (config_file);
|
|
||||||
g_free (config_path);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
midori_browser_weak_notify_cb (MidoriBrowser* browser,
|
|
||||||
KatzeXbelItem* session)
|
|
||||||
{
|
|
||||||
g_object_disconnect (browser, "any-signal",
|
|
||||||
G_CALLBACK (midori_browser_session_cb), session, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static gchar*
|
static gchar*
|
||||||
_simple_xml_element (const gchar* name,
|
_simple_xml_element (const gchar* name,
|
||||||
const gchar* value)
|
const gchar* value)
|
||||||
|
@ -464,6 +432,38 @@ katze_array_to_file (KatzeArray* array,
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
midori_browser_session_cb (MidoriBrowser* browser,
|
||||||
|
gpointer arg1,
|
||||||
|
KatzeArray* session)
|
||||||
|
{
|
||||||
|
gchar* config_path;
|
||||||
|
gchar* config_file;
|
||||||
|
GError* error;
|
||||||
|
|
||||||
|
config_path = g_build_filename (g_get_user_config_dir (),
|
||||||
|
PACKAGE_NAME, NULL);
|
||||||
|
g_mkdir_with_parents (config_path, 0755);
|
||||||
|
config_file = g_build_filename (config_path, "session.xbel", NULL);
|
||||||
|
error = NULL;
|
||||||
|
if (!katze_array_to_file (session, config_file, &error))
|
||||||
|
{
|
||||||
|
g_warning (_("The session couldn't be saved. %s"), error->message);
|
||||||
|
g_error_free (error);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_free (config_file);
|
||||||
|
g_free (config_path);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
midori_browser_weak_notify_cb (MidoriBrowser* browser,
|
||||||
|
KatzeXbelItem* session)
|
||||||
|
{
|
||||||
|
g_object_disconnect (browser, "any-signal",
|
||||||
|
G_CALLBACK (midori_browser_session_cb), session, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
main (int argc,
|
main (int argc,
|
||||||
char** argv)
|
char** argv)
|
||||||
|
@ -711,7 +711,7 @@ main (int argc,
|
||||||
midori_app_add_browser (app, browser);
|
midori_app_add_browser (app, browser);
|
||||||
gtk_widget_show (GTK_WIDGET (browser));
|
gtk_widget_show (GTK_WIDGET (browser));
|
||||||
|
|
||||||
KatzeXbelItem* session = midori_browser_get_proxy_xbel_folder (browser);
|
KatzeArray* session = midori_browser_get_proxy_xbel_array (browser);
|
||||||
n = katze_xbel_folder_get_n_items (_session);
|
n = katze_xbel_folder_get_n_items (_session);
|
||||||
for (i = 0; i < n; i++)
|
for (i = 0; i < n; i++)
|
||||||
{
|
{
|
||||||
|
|
|
@ -79,7 +79,7 @@ struct _MidoriBrowser
|
||||||
GList* tab_titles;
|
GList* tab_titles;
|
||||||
GList* close_buttons;
|
GList* close_buttons;
|
||||||
|
|
||||||
KatzeXbelItem* proxy_xbel_folder;
|
KatzeArray* proxy_xbel_array;
|
||||||
KatzeArray* trash;
|
KatzeArray* trash;
|
||||||
KatzeArray* search_engines;
|
KatzeArray* search_engines;
|
||||||
};
|
};
|
||||||
|
@ -800,14 +800,14 @@ midori_browser_tab_destroy_cb (GtkWidget* widget,
|
||||||
KatzeXbelItem* xbel_item;
|
KatzeXbelItem* xbel_item;
|
||||||
const gchar* uri;
|
const gchar* uri;
|
||||||
|
|
||||||
if (browser->proxy_xbel_folder && MIDORI_IS_WEB_VIEW (widget))
|
if (browser->proxy_xbel_array && MIDORI_IS_WEB_VIEW (widget))
|
||||||
{
|
{
|
||||||
xbel_item = midori_web_view_get_proxy_xbel_item (
|
xbel_item = midori_web_view_get_proxy_xbel_item (
|
||||||
MIDORI_WEB_VIEW (widget));
|
MIDORI_WEB_VIEW (widget));
|
||||||
uri = katze_xbel_bookmark_get_href (xbel_item);
|
uri = katze_xbel_bookmark_get_href (xbel_item);
|
||||||
if (browser->trash && uri && *uri)
|
if (browser->trash && uri && *uri)
|
||||||
katze_array_add_item (browser->trash, xbel_item);
|
katze_array_add_item (browser->trash, xbel_item);
|
||||||
katze_xbel_folder_remove_item (browser->proxy_xbel_folder, xbel_item);
|
katze_array_remove_item (browser->proxy_xbel_array, xbel_item);
|
||||||
katze_xbel_item_unref (xbel_item);
|
katze_xbel_item_unref (xbel_item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -935,12 +935,12 @@ _midori_browser_add_tab (MidoriBrowser* browser,
|
||||||
tab_title = midori_web_view_get_proxy_tab_title (MIDORI_WEB_VIEW (widget));
|
tab_title = midori_web_view_get_proxy_tab_title (MIDORI_WEB_VIEW (widget));
|
||||||
menuitem = midori_web_view_get_proxy_menu_item (MIDORI_WEB_VIEW (widget));
|
menuitem = midori_web_view_get_proxy_menu_item (MIDORI_WEB_VIEW (widget));
|
||||||
|
|
||||||
if (browser->proxy_xbel_folder)
|
if (browser->proxy_xbel_array)
|
||||||
{
|
{
|
||||||
xbel_item = midori_web_view_get_proxy_xbel_item (
|
xbel_item = midori_web_view_get_proxy_xbel_item (
|
||||||
MIDORI_WEB_VIEW (widget));
|
MIDORI_WEB_VIEW (widget));
|
||||||
katze_xbel_item_ref (xbel_item);
|
katze_xbel_item_ref (xbel_item);
|
||||||
katze_xbel_folder_append_item (browser->proxy_xbel_folder, xbel_item);
|
katze_array_add_item (browser->proxy_xbel_array, xbel_item);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_object_connect (widget,
|
g_object_connect (widget,
|
||||||
|
@ -991,14 +991,13 @@ _midori_browser_add_tab (MidoriBrowser* browser,
|
||||||
gtk_image_new_from_pixbuf (icon));
|
gtk_image_new_from_pixbuf (icon));
|
||||||
g_object_unref (icon);
|
g_object_unref (icon);
|
||||||
|
|
||||||
if (browser->proxy_xbel_folder)
|
if (browser->proxy_xbel_array)
|
||||||
{
|
{
|
||||||
xbel_item = katze_xbel_bookmark_new ();
|
xbel_item = katze_xbel_bookmark_new ();
|
||||||
katze_xbel_item_set_title (xbel_item, title);
|
katze_xbel_item_set_title (xbel_item, title);
|
||||||
katze_xbel_bookmark_set_href (xbel_item,
|
katze_xbel_bookmark_set_href (xbel_item,
|
||||||
_midori_browser_get_tab_uri (browser, widget));
|
_midori_browser_get_tab_uri (browser, widget));
|
||||||
katze_xbel_folder_append_item (browser->proxy_xbel_folder,
|
katze_array_add_item (browser->proxy_xbel_array, xbel_item);
|
||||||
xbel_item);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
g_object_set_data (G_OBJECT (widget), "browser-tab-icon", tab_icon);
|
g_object_set_data (G_OBJECT (widget), "browser-tab-icon", tab_icon);
|
||||||
|
@ -3619,8 +3618,8 @@ midori_browser_dispose (GObject* object)
|
||||||
MidoriBrowser* browser = MIDORI_BROWSER (object);
|
MidoriBrowser* browser = MIDORI_BROWSER (object);
|
||||||
|
|
||||||
/* We are done, the session mustn't change anymore */
|
/* We are done, the session mustn't change anymore */
|
||||||
if (browser->proxy_xbel_folder)
|
if (browser->proxy_xbel_array)
|
||||||
katze_object_assign (browser->proxy_xbel_folder, NULL);
|
katze_object_assign (browser->proxy_xbel_array, NULL);
|
||||||
|
|
||||||
G_OBJECT_CLASS (midori_browser_parent_class)->dispose (object);
|
G_OBJECT_CLASS (midori_browser_parent_class)->dispose (object);
|
||||||
}
|
}
|
||||||
|
@ -4258,10 +4257,10 @@ midori_browser_get_current_web_view (MidoriBrowser* browser)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* midori_browser_get_proxy_xbel_folder:
|
* midori_browser_get_proxy_xbel_array:
|
||||||
* @browser: a #MidoriBrowser
|
* @browser: a #MidoriBrowser
|
||||||
*
|
*
|
||||||
* Retrieves a proxy xbel folder representing the respective proxy xbel items
|
* Retrieves a proxy xbel array representing the respective proxy xbel items
|
||||||
* of the present web views that can be used for session management.
|
* of the present web views that can be used for session management.
|
||||||
*
|
*
|
||||||
* The folder is created on the first call and will be updated to reflect
|
* The folder is created on the first call and will be updated to reflect
|
||||||
|
@ -4272,19 +4271,19 @@ midori_browser_get_current_web_view (MidoriBrowser* browser)
|
||||||
* Note: Calling this function doesn't add a reference and the browser
|
* Note: Calling this function doesn't add a reference and the browser
|
||||||
* may release its reference at some point.
|
* may release its reference at some point.
|
||||||
*
|
*
|
||||||
* Return value: the proxy #KatzeXbelItem
|
* Return value: the proxy #KatzeArray
|
||||||
**/
|
**/
|
||||||
KatzeXbelItem*
|
KatzeArray*
|
||||||
midori_browser_get_proxy_xbel_folder (MidoriBrowser* browser)
|
midori_browser_get_proxy_xbel_array (MidoriBrowser* browser)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (MIDORI_IS_BROWSER (browser), NULL);
|
g_return_val_if_fail (MIDORI_IS_BROWSER (browser), NULL);
|
||||||
|
|
||||||
if (!browser->proxy_xbel_folder)
|
if (!browser->proxy_xbel_array)
|
||||||
{
|
{
|
||||||
browser->proxy_xbel_folder = katze_xbel_folder_new ();
|
browser->proxy_xbel_array = katze_array_new (KATZE_TYPE_XBEL_ITEM);
|
||||||
/* FIXME: Fill in xbel items of all present web views */
|
/* FIXME: Fill in xbel items of all present web views */
|
||||||
}
|
}
|
||||||
return browser->proxy_xbel_folder;
|
return browser->proxy_xbel_array;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -113,8 +113,8 @@ midori_browser_get_current_tab (MidoriBrowser* browser);
|
||||||
GtkWidget*
|
GtkWidget*
|
||||||
midori_browser_get_current_web_view (MidoriBrowser* browser);
|
midori_browser_get_current_web_view (MidoriBrowser* browser);
|
||||||
|
|
||||||
KatzeXbelItem*
|
KatzeArray*
|
||||||
midori_browser_get_proxy_xbel_folder (MidoriBrowser* browser);
|
midori_browser_get_proxy_xbel_array (MidoriBrowser* browser);
|
||||||
|
|
||||||
void
|
void
|
||||||
midori_browser_quit (MidoriBrowser* browser);
|
midori_browser_quit (MidoriBrowser* browser);
|
||||||
|
|
Loading…
Reference in a new issue