summaryrefslogtreecommitdiff
path: root/libnautilus-private/nautilus-xml-extensions.c
Commit message (Collapse)AuthorAgeFilesLines
* reviewed by: John Sullivan <sullivan@eazel.com>Darin Adler2000-12-141-0/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix bug 2807 (support metadata removal for cases where we move/delete files) by implementing metadata removal. Fix bug 2199 (Saved icon positions ruin desktop layout features) by testing and fixing other bugs now that metadata removal is implemented. Fix bug 5164 (exception trying to drag file) by fixing a few placeholders in XML files that were still transparent and should not be. Fix bug where we don't reveal the New Folder icon (reintroduced by my changes yesterday) by computing the icon position in a way that works even before the canvas item is updated. * libnautilus-extensions/nautilus-directory-metafile.c: (get_file_node): Small change (not used for now) that might help unify the "before metafile is read" case with the code after the metafile is read. (nautilus_directory_rename_file_metadata): Remove the old file metadata before renaming the new data. Also change code to avoid looking up things in the hash table twice. (nautilus_directory_copy_file_metadata): Updated and added FIXME comments. (nautilus_directory_remove_file_metadata): Add code to remove metadata, similar to the existing rename code. * libnautilus-extensions/nautilus-directory.c: (nautilus_directory_schedule_metadata_copy), (nautilus_directory_schedule_metadata_move), (nautilus_directory_schedule_metadata_remove): Fix code that was using file names instead of relative URIs (essentially escaped file names). This code was missed when we made the switchover. Without this, changes to files with spaces in their names didn't update metadata properly. * libnautilus-extensions/nautilus-file-operations.c: (build_error_string): Added blank line between the intro sentence and the rest of the error message. (handle_xfer_overwrite): Added blank line between the intro sentence and the rest of the error message. (sync_xfer_callback): Fix metadata code to remove the metadata when creating a new file, just as it copies metadata when copying a file. This change helps the New Folder case, but requires a fix in gnome-vfs to set the top level boolean for the New Folder case. (handle_new_folder_vfs_error): Added blank line between the intro sentence and the rest of the error message. (nautilus_self_check_file_operations): Changed the self-check to use the standard way of testing functions that return text instead of rolling its own. * libnautilus-extensions/nautilus-gnome-extensions.h: * libnautilus-extensions/nautilus-gnome-extensions.c: (nautilus_gnome_canvas_item_get_canvas_bounds): Added a function that's like nautilus_gnome_canvas_item_get_current_canvas_bounds but is accurate even before the icon is updated. * libnautilus-extensions/nautilus-icon-container.c: (reveal_icon): Use nautilus_gnome_canvas_item_get_canvas_bounds instead of nautilus_gnome_canvas_item_get_current_canvas_bounds. Fixes the bug I reintroduced where New Folder icons would not be revealed. * libnautilus-extensions/nautilus-xml-extensions.h: * libnautilus-extensions/nautilus-xml-extensions.c: (nautilus_xml_remove_node): Add a remove-node function. This is needed because gnome-xml doesn't have xmlRemoveNode implemented. This implementation is not quite complete, but probably good enough for our purposes. A complete implementation might have to have some handling for removing the root node and perhaps some stuff to remove unused namespaces. Maybe this can be rolled into gnome-xml. * src/file-manager/nautilus-directory-view-ui.xml: * src/nautilus-shell-ui.xml: Added some more delimit="none" entries to make it so that the actual placeholder definitions are not "transparent". * libnautilus-extensions/nautilus-glib-extensions.c (nautilus_self_check_glib_extensions): Marked some strings that are part of a test translatable since the result might be different in some locales. Translating the strings to the right result makes "make check" work properly in that locale.
* reviewed by: Pavel Cisler <pavel@eazel.com>Darin Adler2000-12-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixed bug 650 (moving a large number of files is extremely slow) by using a hash table to find metafile nodes given a file name. Fixed bug 3410 (sorting not locale-sensitive) by making nautilus_strcoll suitable for wider use and using it a lot more. * libnautilus-extensions/nautilus-directory-private.h: Add a new hash table for locating metafile nodes by file name. * libnautilus-extensions/nautilus-directory-metafile.h: Add nautilus_directory_set_metafile_contents call so the metafile code will have a crack at the metafile contents right when they are first read in. * libnautilus-extensions/nautilus-directory-metafile.c: (get_file_node): Locate the file node using the hash table, and create a hash table entry when making a new file node. (destroy_xml_string_key), (nautilus_directory_metafile_destroy): Destroy the hash table when the directory is destroyed. (nautilus_directory_rename_file_metadata): Remove the old hash table entry and make a new one when the node's name is changed. (nautilus_directory_set_metafile_contents): Create the hash table and populate it when the metafile is read in. * libnautilus-extensions/nautilus-string.h: * libnautilus-extensions/nautilus-string.c: (nautilus_strcoll): Treat a locale that can't be fetched by setlocale the same as locale "C" and "POSIX", fall back on strcmp if strcoll says two strings are equal, so that only identical strings get a 0. (nautilus_strcmp_compare_func): New name for nautilus_str_compare. (nautilus_strcoll_compare_func): New function. (nautilus_strcasecmp_compare_func): New name for nautilus_istr_compare. * libnautilus-extensions/nautilus-glib-extensions.h: * libnautilus-extensions/nautilus-glib-extensions.c: (nautilus_g_str_list_copy): Removed an unnecessary check for NULL. (nautilus_g_str_list_alphabetize): Replaced the old sort calls with this single call. It sorts in a locale-sensitive way, using nautilus_strcoll. * libnautilus-extensions/nautilus-file.c: (compare_by_name), (compare_by_directory_name), (compare_by_emblems), (compare_by_type), (nautilus_file_compare_name): Use nautilus_strcoll instead of nautilus_strcmp_case_breaks_ties so we use local sorting conventions in locales other than "C" and "POSIX". (nautilus_get_user_names), (nautilus_get_group_names_including): (sort_keyword_list_and_remove_duplicates): Use the new nautilus_g_str_list_alphabetize to sort by locale-specific conventions. * libnautilus-extensions/nautilus-icon-container.c: (compare_icons_by_name): Use nautilus_strcoll instead of nautilus_strcmp_case_breaks_ties so we use local sorting conventions in locales other than "C" and "POSIX". * src/file-manager/fm-properties-window.c: (get_property_names): Use the new nautilus_g_str_list_alphabetize * src/nautilus-window-manage-views.c: (change_selection): Use the new nautilus_g_str_list_alphabetize * src/nautilus-window.c: (load_view_as_menu_callback): Use the new nautilus_g_str_list_alphabetize * libnautilus-extensions/nautilus-directory-async.c: (metafile_read_done_callback), (nautilus_directory_set_up_request): Use nautilus_str_compare under its new name, nautilus_strcmp_compare_func. * components/services/install/command-line/.cvsignore: Added eazel-test-types, a new generated file. * libnautilus-extensions/nautilus-string-list.c: (nautilus_string_list_new): Use nautilus_str_compare and nautilus_istr_compare under their new names, nautilus_strcmp_compare_func and nautilus_strcasecmp_compare_func. * libnautilus-extensions/nautilus-xml-extensions.c: (nautilus_xml_get_child_by_name): Fixed indenting.
* reviewed by: John Sullivan <sullivan@eazel.com>Darin Adler2000-11-141-13/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/file-manager/fm-directory-view.c: (display_selection_info_idle_callback), (update_menus_idle_callback), (display_pending_idle_callback): Add code to ref the BonoboControl around all three of these idle functions to eliminate the problem where the directory view would get destroyed in the middle of an idle. * data/browser.xml: * data/linksets/apps.xml: * data/linksets/desktop.xml: * data/linksets/portals.xml: * data/linksets/search_engines.xml: * data/static_bookmarks.xml: Used "_" prefix on all localizable fields of XML files. * po/POTFILES.in: Add all these XML files that need translation. * libnautilus-extensions/nautilus-link-set.c: (nautilus_link_set_install), (nautilus_link_set_is_installed), (nautilus_link_set_remove): Fix storage leaks, also use nautilus_xml_get_property_translated to get the property for the "name" property so it can be translated if desired. * libnautilus-extensions/nautilus-xml-extensions.h: * libnautilus-extensions/nautilus-xml-extensions.c: (nautilus_xml_get_property_translated): Add a version of xmlGetProp that looks for an untranslated version of the property and runs it through gettext if there is not a pre-translated version present. For strings downloaded from the service, for example, we'll probably use a pre-translated string, but for things in the Nautilus source tree we can use an untranslated string. * src/nautilus-bookmark-parsing.c: (nautilus_bookmark_new_from_node): Use nautilus_xml_get_property_translated to get the bookmark name so that static bookmarks can have names translated with gettext. New versions of the static bookmarks downloaded from the service can use either kind of name. And user-created bookmarks are not run through the gettext mechanism. * src/nautilus-window-menus.c: (create_menu_item_from_node): Use nautilus_xml_get_property_translated to get the folder names translated just as the bookmarks themselves. * src/nautilus-link-set-window.c: (get_link_set_names): Added a FIXME. The link set names should come from inside the XML, not from the file names. * src/nautilus-property-browser.c: (get_xml_path), (read_browser_xml), (write_browser_xml), (get_color_category): (remove_color), (add_color_to_file): Factor out some shared code. (add_reset_property): Make hard-wired font size with FIXME. (make_properties_from_xml_node): Fix storage leaks and get the name of the color using nautilus_xml_get_property_translated so the names can be translated. (set_up_category_width): Fix storage leaks (nautilus_property_browser_update_contents): Fix storage leaks and get the display name and description with nautilus_xml_get_property_translated so they can be translated. * check-THANKS.pl: Got rid of extra blank line at end. * libnautilus-extensions/nautilus-customization-data.c: (format_name_for_display): Add FIXME to bad-for-localization function that turns "_" into " " and capitalizes the first letter after each " ".
* Do some routine housekeeping that will help make the futureDarin Adler2000-10-191-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | switchover to libxml2 easier. * components/help/converters/gnome-db2html2/gdb3html.h: * components/help/hyperbola-nav-index.c: * components/help/hyperbola-nav-search.c: * libnautilus-extensions/nautilus-directory-async.c: * libnautilus-extensions/nautilus-directory-metafile.c: * libnautilus-extensions/nautilus-directory-metafile.h: * libnautilus-extensions/nautilus-directory-private.h: * libnautilus-extensions/nautilus-file.c: * libnautilus-extensions/nautilus-icon-factory.c: * libnautilus-extensions/nautilus-link-set.c: * libnautilus-extensions/nautilus-link.c: * libnautilus-extensions/nautilus-theme.c: * libnautilus-extensions/nautilus-volume-monitor.c: * libnautilus-extensions/nautilus-xml-extensions.h: * librsvg/rsvg.c: * src/nautilus-bookmark-list.c: * src/nautilus-bookmark-parsing.c: * src/nautilus-bookmark-parsing.h: * src/nautilus-link-set-window.c: * src/nautilus-property-browser.c: * src/nautilus-sidebar.c: * src/nautilus-theme-selector.c: * src/nautilus-window-menus.c: Use the <gnome-xml/> prefix on all includes of gnome-xml headers. This is allowed with the version of libxml1 we use now, and required for libxml2. Note that we now require the newer libxml1 version that allows this, because Bonobo requires it. * components/services/install/lib/eazel-install-xml-package-list.c: (parse_package), (parse_category), (parse_shared), (parse_memory_transaction_file), (parse_local_xml_package_list), (generate_xml_package_list), (osd_parse_dependency), (osd_parse_implementation), (osd_parse_softpkg), (osd_parse_shared): * components/services/summary/lib/eazel-summary-shared.c: (build_services_glist_from_xml), (build_eazel_news_glist_from_xml), (build_update_news_glist_from_xml), (parse_summary_xml_file): * components/services/trilobite/libtrilobite/helixcode-utils.c: (xml_get_value): * components/services/trilobite/libtrilobite/trilobite-redirect.c: (trilobite_redirect_parse_xml): * libnautilus-extensions/nautilus-xml-extensions.c: (nautilus_xml_get_children): Use xmlChildrenNode instead of childs, as recommended by the libxml maintainer for libxml1/libxml2 compatibility. * src/nautilus-main.c: (main): Use the LIBXML_TEST_VERSION macro as recommended by the libxml maintainer for libxml1/libxml2 compatibility. * components/music/nautilus-music-view.c: Added a lot of FIXMEs. Some other rudimentary cleanup.
* implemented an xml-based general theme mechanism, and used it for theAndy Hertzfeld2000-06-261-0/+20
| | | | | | implemented an xml-based general theme mechanism, and used it for the sidebar backgrounds, which isn't quite working yet. Added xml files to our themes.
* First cut at metadata cleanup in preparation for fixing bugDarin Adler2000-05-151-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | with setting metadata before the metafile is read. * libnautilus-extensions/nautilus-directory.h: * libnautilus-extensions/nautilus-directory.c: (get_metadata_list_from_node), (nautilus_directory_get_metadata_list), (nautilus_directory_set_boolean_metadata), (nautilus_directory_set_integer_metadata), (nautilus_directory_get_file_metadata_node), (nautilus_directory_get_file_metadata_list), (nautilus_directory_set_file_metadata), (nautilus_directory_set_file_metadata_list), * libnautilus-extensions/nautilus-file.h: * libnautilus-extensions/nautilus-file.c: (nautilus_file_get_metadata), (nautilus_file_get_metadata_list), (nautilus_file_set_metadata), (nautilus_file_set_metadata_list), (nautilus_file_get_keywords), (nautilus_file_set_keywords): Unified code to deal with metadata lists and made both get and set work the same way. Also got rid of the default value. For lists, the default value is always NULL. * components/notes/ntl-notes.c: (notes_load_metainfo): * libnautilus-extensions/nautilus-directory-async.c: (nautilus_directory_monitor_add_internal), (nautilus_directory_call_when_ready_internal): * libnautilus-extensions/nautilus-directory-private.h: * libnautilus-extensions/nautilus-directory.h: * libnautilus-extensions/nautilus-directory.c: (nautilus_directory_call_when_ready), (nautilus_directory_file_monitor_add), (nautilus_self_check_directory): * libnautilus-extensions/nautilus-file.h: * libnautilus-extensions/nautilus-file.c: (nautilus_file_monitor_add), (nautilus_file_call_when_ready): * src/file-manager/fm-directory-view.c: (fm_directory_view_load_uri), (finish_loading_uri): * src/nautilus-index-title.c: (nautilus_index_title_set_uri): * src/ntl-uri-map.c: (set_initial_content_iid), (get_explicit_content_view_iids_from_metafile), (nautilus_navigation_info_new): Converted to use new API that specifies only that metadata is needed, not which keys. Maciej and I agreed that it's no use to specify which keys you are interested in when you can just get it wrong and have everything work anyway. Also the old API didn't work for metadata lists. * components/services/trilobite/sample/command-line/.cvsignore: Added generated files. * libnautilus-extensions/nautilus-xml-extensions.c: (nautilus_xml_get_property_for_children): Format tweak. * src/file-manager/fm-directory-view.c: (bonobo_menu_delete_callback), (bonobo_menu_duplicate_callback), (bonobo_menu_open_properties_window_callback), (display_selection_info), (notify_selection_change_callback), (queue_pending_files), (append_uri_one), (fm_directory_view_duplicate_selection), (fm_directory_view_trash_selection): Formatting tweaks.
* *** empty log message ***Maciej Stachowiak2000-05-081-0/+54
|
* A quick cleanup of how we use gnome-xml.Darin Adler2000-03-151-0/+85
* libnautilus/Makefile.am: * libnautilus/nautilus-xml-extensions.c: * libnautilus/nautilus-xml-extensions.h: Added some new gnome-xml helper functions. * libnautilus/nautilus-directory.c: (nautilus_directory_get_file_metadata_node): * libnautilus/nautilus-file.c: (nautilus_file_get_keywords): (nautilus_file_set_keywords): * libnautilus/nautilus-icon-factory.c: (get_child_node_by_property): (get_themed_icon_file_path): * src/nautilus-bookmarklist.c: (nautilus_bookmarklist_load_file): Changed to use the new helper functions. * src/nautilus-bookmarklist.c: (nautilus_bookmarklist_save_file): Changed direct uses of root to use xmlDocGet/SetRootElement while I was editing the file. I think this is the same change Pavel made but wasn't able to check in. * src/nautilus-bookmarklist.c: General cleanup.