Xfce Wiki

Sub domains
 

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
dev:xfdesktop:port-to-gio-progress [2010/10/17 19:31] – created 217.229.117.83dev:xfdesktop:port-to-gio-progress [2010/10/24 21:42] (current) 217.229.124.132
Line 6: Line 6:
  
 Calls ''thunar_vfs_init()'' and ''thunar_vfs_shutdown()''. Those calls can be removed. Calls ''thunar_vfs_init()'' and ''thunar_vfs_shutdown()''. Those calls can be removed.
- 
-==== xfce-desktop.c ==== 
- 
-=== xfce_desktop_setup_icon_view() === 
- 
-Use a ''GFile'' instead of a ''ThunarVfsPath'' when creating the file icon manager.  
-Pass the ''GFile'' to the manager object instead of the ''ThunarVfsPath'' 
  
 ==== xfdesktop-file-icon.{c,h} ==== ==== xfdesktop-file-icon.{c,h} ====
Line 28: Line 21:
  
 Make the interface method ''peek_info'' return a ''GFileInfo''. Make the interface method ''peek_info'' return a ''GFileInfo''.
 +
 ==== xfdesktop-file-icon-manager.{c,h} ==== ==== xfdesktop-file-icon-manager.{c,h} ====
- 
-=== xfdesktop_file_icon_menu_rename() === 
- 
-Use Thunar's ''Rename()'' (or ''RenameFiles?'') D-Bus method. For this we only 
-need the ''GFile'' of the icon, not the file info. Use ''xfdesktop_file_icon_get_file()'' 
-instead of ''xfdesktop_file_icon_peek_info()'' 
- 
-=== xfdesktop_file_icon_manager_trash_files() === 
- 
-Again, use ''xfdesktop_file_icon_get_file()'' instead of ''xfdesktop_file_icon_peek_info()'' 
-to obtain the URIs of the files supposed to be trashed. 
- 
-=== xfdesktop_file_icon_menu_mime_app_executed() === 
- 
-Use ''GAppInfo'' instead of ''ThunarVfsMimeApplication'' and call ''g_app_info_launch()'' 
-instead of ''thunar_vfs_mime_handler_exec()''. Make sure to change the working directory 
-before and after this call (similar to how Thunar does it). 
- 
-=== xfdesktop_menu_item_from_mime_handler() === 
- 
-Replace this method with a similar one based on ''GAppInfo'' instead of 
-''ThunarVfsMimeApplication'' 
- 
-=== xfdesktop_file_icon_menu_open_folder() === 
- 
-We don't need the ''ThunarVfsInfo'' here. Use ''xfdesktop_file_icon_get_file()'' 
-instead of ''xfdesktop_file_icon_peek_info()''. Make ''xfdesktop_file_utils_open_folder()'' 
-take a ''GFile'' instead of a ''ThunarVfsInfo''. 
- 
-=== xfdesktop_file_icon_menu_open_desktop() === 
- 
-See the previous function. 
- 
-=== xfdesktop_file_icon_menu_other_app() === 
- 
-Again, we only need the ''GFile'', not the file info, in order to obtain the file URI. 
-Replace ''xfdesktop_file_icon_peek_info()'' with ''xfdesktop_file_icon_get_file()'' 
-and ''ThunarVfsInfo''/''ThunarVfsPath'' with ''GFile''. 
- 
-=== xfdesktop_file_icon_menu_properties() === 
- 
-Again, we only need the ''GFile'' to obtain the URI. Don't use the no-D-Bus-fallback 
-properties dialog (what's it good for? Thunar should always be running for other 
-parts of xfdesktop to be working anyway). 
- 
-=== xfdesktop_file_icon_create_directory_error() === 
- 
-Remove this function. We'll create directories through the Thunar D-Bus API. We'll 
-probably have to add another D-Bus method for creating directories. 
- 
-=== xfdesktop_file_icon_menu_create_launcher() === 
- 
-Use a ''GFile'' instead of the ''ThunarVfsInfo'' and ''ThunarVfsPath'' to obtain 
-the file URI. Feed exo-desktop-item-edit with the URI instead of a local path. 
-The function ''launcher_dialog_item_button_clicked()'' in  
-xfce4-panel/plugins/launcher/launcher-dialog.c has an example of how we can do  
-this. 
- 
-=== xfdesktop_file_icon_menu_create_folder() === 
- 
-Create the directory using a new Thunar D-Bus method instead of implementing 
-this feature in xfdesktop internally. We'll have to create the D-Bus method  
-first. It should be called ''CreateFolder()'' or ''CreateFile()'' (with a 
-type parameter). Need to think about this a bit more. 
- 
-=== xfdesktop_file_icon_create_file_error() === 
- 
-Remove this function. 
  
 === xfdesktop_file_icon_interactive_job_ask() === === xfdesktop_file_icon_interactive_job_ask() ===
  
 Remove this function. Remove this function.
- 
-=== xfdesktop_file_icon_template_item_activated() === 
- 
-TODO: This needs more thought. Thunar implements the same functionality, so 
-maybe we can reuse its implementation through D-Bus. If not, then at least 
-the ThunarVFS stuff should be replaced with ''GFile'' and ''GFileInfo''. The 
-calls to ''thunar_vfs_copy_file()'' and ''thunar_vfs_create_file()'' should 
-be replaced with Thunar D-Bus method calls. 
- 
-=== info_compare() === 
- 
-If this is still needed after the other refactorings, make it compare 
-''GFileInfo'' objects instead of ''ThunarVfsInfo'' structs. 
- 
-=== xfdesktop_file_icon_menu_fill_template_menu() === 
- 
-Use ''GFile'', ''GFileEnumerator'' and ''GFileInfo'' instead of the corresponding 
-ThunarVFS structures. Maybe we can reuse some code from Thunar implementing 
-the same thing. 
- 
-=== xfdesktop_file_icon_manager_populate_context_menu() === 
- 
-Use ''GFileInfo'' instead of ''ThunarVfsInfo'' and ''GFile'' instead of ''ThunarVfsPath''. 
-Use ''GAppInfo'' instead of ''ThunarVfsMimeDatabase'' and  
-''ThunarVfsMimeHandler''/''ThunarVfsMimeApplication''. 
- 
-=== xfdesktop_file_icon_manager_add_icon() === 
- 
-Use ''GFile'' instead of ''ThunarVfsInfo''. 
- 
-=== xfdesktop_file_icon_manager_add_regular_icon() === 
- 
-Use ''GFileInfo'' to query the content type and ''GFile'' instead of 
-''ThunarVfsPath'' to query the file path passed to ''XfceRc''. 
  
 === xfdesktop_file_icon_manager_add_volume_icon() === === xfdesktop_file_icon_manager_add_volume_icon() ===
  
 Use ''GVolume'' instead of ''ThunarVfsVolume''. Use ''GVolume'' instead of ''ThunarVfsVolume''.
- 
-=== xfdesktop_file_icon_manager_vfs_monitor_cb() === 
- 
-Replace this with a monitor callback for ''GFileMonitor''. 
- 
-=== xfdesktop_file_icon_manager_listdir_infos_ready_cb() === 
- 
-This function will have to be replaced with something similar because we 
-cannot use the list dir job from ThunarVfsJob anymore.  
- 
-=== xfdesktop_file_icon_manager_listdir_finished_cb() === 
- 
-This function will have to be replaced with something similar because we 
-cannot use the list dir job from ThunarVfsJob anymore.  
- 
-=== xfdesktop_file_icon_manager_listdir_error_cb() === 
- 
-This function will have to be replaced with something similar because we 
-cannot use the list dir job from ThunarVfsJob anymore.  
- 
-=== xfdesktop_file_icon_manager_load_desktop_folder() === 
- 
-Asynchronously load the folder using ''GFileEnumerator''. 
  
 === xfdesktop_file_icon_manager_volume_changed() === === xfdesktop_file_icon_manager_volume_changed() ===
Line 200: Line 69:
 === xfdesktop_file_icon_manager_real_init() === === xfdesktop_file_icon_manager_real_init() ===
  
-Get rid of the ''ThunarVfsMimeDatabase'' and the global ''ThunarVfsVolumeManager''+Get rid of the global ''ThunarVfsVolumeManager''.
-The hash table needs to use either URIs or ''GFile'' as well as the right hash +
-and equal functions for them. URIs are easier due to the availability of string +
-hash and equal functions, I guess. +
- +
-We'll have to change the ''ThunarVfsInfo'' parameter of ''xfdesktop_regular_file_icon_new()'' +
-to a ''GFile'' or ''GFileInfo''. We can use ''g_file_new_for_path()'' instead of  +
-''thunar_vfs_info_new_for_path()'' here when creating the ''GFile'' for the desktop folder, +
-if the ''folder'' member isn't a ''GFile'' already.+
  
 === xfdesktop_file_icon_manager_fini() === === xfdesktop_file_icon_manager_fini() ===
  
 The counterpart to the previous function. Same deal. The counterpart to the previous function. Same deal.
- 
-=== xfdesktop_file_icon_manager_drag_drop() === 
- 
-Use '''xfdesktop_file_icon_peek_file()'' instead of ''..._peek_info()''. The file type 
-can then be determined with ''g_file_query_file_type()'' 
- 
-Use ''g_file_get_child()'' instead of ''thunar_vfs_path_relative()'' and ''g_file_get_uri()'' 
-instead of ''thunar_vfs_path_dup_uri()''. 
  
 === xfdesktop_file_icon_manager_drag_data_received() === === xfdesktop_file_icon_manager_drag_data_received() ===
Line 238: Line 91:
 The code block dealing with jobs needs to be reworked around ''GFile'', ''GFileInfo'' The code block dealing with jobs needs to be reworked around ''GFile'', ''GFileInfo''
 and the Thunar D-Bus API completely. Maybe danielm's branch implements this already? and the Thunar D-Bus API completely. Maybe danielm's branch implements this already?
- 
-=== xfdesktop_file_icon_manager_new() === 
- 
-Change the ''ThunarVfsPath'' parameter to a ''GFile''. That's all. 
  
 === _XfdesktopFileIconManagerPrivate === === _XfdesktopFileIconManagerPrivate ===
- 
-Change the ''ThunarVfsPath'' folder member to a ''GFile'' 
  
 Replace the ''ThunarVfsMonitor'' with a ''GVolumeMonitor'' and remove  Replace the ''ThunarVfsMonitor'' with a ''GVolumeMonitor'' and remove 
 the ''ThunarVfsMonitorHandle''. the ''ThunarVfsMonitorHandle''.
- 
-Remove the ''ThunarVfsJob *list_job'' member. 
- 
-=== xfdesktop_file_icon_manager_class_init() === 
- 
-Alter the "folder" property so that it becomes an object property  
-using the ''G_TYPE_FILE'' object type. 
- 
-=== xfdesktop_file_icon_manager_set_property() === 
- 
-Change the "folder" property code to reflect the changes to the property 
-type made in the class_init function. 
- 
-=== xfdesktop_file_icon_manager_get_property() === 
- 
-Same here, see above. 
- 
-=== xfdesktop_file_icon_manager_finalize() === 
- 
-Use ''g_object_unref()'' instead of ''thunar_vfs_path_unref()''. 
- 
-=== xfdesktop_file_icon_manager_check_create_desktop_folder() === 
- 
-Replace the code with something similar based on ''GFile'', ''g_file_query_exists()'', 
-''g_file_query_file_type()'' and ''g_file_make_directory()''. 
  
 ==== xfdesktop-file-properties-dialog.{c,h} ==== ==== xfdesktop-file-properties-dialog.{c,h} ====
  
 Remove entirely. We'll re-use Thunar's properties dialog via its D-Bus API. Remove entirely. We'll re-use Thunar's properties dialog via its D-Bus API.
 +
 ==== xfdesktop-file-utils.{c,h} ==== ==== xfdesktop-file-utils.{c,h} ====
  
Line 292: Line 115:
 If this is still needed after refactoring, then make it take a ''GFileInfo'' If this is still needed after refactoring, then make it take a ''GFileInfo''
 and rewrite the checks based on ''GFileInfo'' attributes. and rewrite the checks based on ''GFileInfo'' attributes.
- 
-=== xfdesktop_file_utils_file_icon_list_to_path_list() === 
- 
-Replace with a function called ''xfdesktop_file_utils_file_icon_list_to_g_file_list()'' 
-that creates a list of ''GFile'' objects. 
  
 === xfdesktop_file_utils_get_fallback_icon() === === xfdesktop_file_utils_get_fallback_icon() ===
Line 315: Line 133:
 hard that we can't provide any real functionality without it anyway. hard that we can't provide any real functionality without it anyway.
  
-=== xfdesktop_file_utils_display_folder_cb() === 
- 
-Remove fallback code. 
 ==== xfdesktop-regular-file-icon.{c,h} ==== ==== xfdesktop-regular-file-icon.{c,h} ====
  
Line 323: Line 138:
  
 Replace the ''ThunarVfsInfo *info'' member with ''GFile'' and ''GFileInfo'' members. Replace the ''ThunarVfsInfo *info'' member with ''GFile'' and ''GFileInfo'' members.
- 
-=== xfdesktop_regular_file_icon_peek_info() === 
- 
-Return a ''GFileInfo''. 
- 
-=== xfdesktop_regular_file_icon_update_info() === 
- 
-TODO: Replace the ''ThunarVfsInfo'' parameter with ''GFileInfo''. Maybe we also need 
-to add a ''GFile'' parameter because ''GFileInfo'' contains no path information. 
- 
-=== xfdesktop_delete_regular_file_finished() === 
- 
-Remove. 
- 
-=== xfdesktop_regular_file_icon_finalize() === 
- 
-Call ''g_object_unref()'' instead of ''thunar_vfs_info_unref()''. Also release the 
-new ''GFile'' member. 
- 
-=== xfdesktop_regular_file_icon_tfi_init() === 
- 
-Update this to Thunarx 2. Need to set ''iface->get_file_info'', ''iface->get_filesystem_info'' 
-and ''iface->get_location''. 
  
 === xfdesktop_regular_file_icon_peek_pixbuf() === === xfdesktop_regular_file_icon_peek_pixbuf() ===
Line 351: Line 143:
 Need to rewrite this to make use of ''g_file_get_icon()'' and tumbler. Maybe a new thumbnailer Need to rewrite this to make use of ''g_file_get_icon()'' and tumbler. Maybe a new thumbnailer
 or icon factory class like in thunar could be introduced. or icon factory class like in thunar could be introduced.
- 
-=== xfdesktop_regular_file_icon_get_allowed_drag_actions() === 
- 
-Use ''GFileInfo'' instead of ''ThunarVfsInfo''. Instead of ''ThunarVfsInfo'' flags we have 
-to query ''GFileInfo'' attributes to determine the readable/writable state of the target icon. 
- 
-=== xfdesktop_regular_file_icon_get_allowed_drop_actions() === 
- 
-See the previous function. 
  
 === xfdesktop_regular_file_icon_drag_job_error() === === xfdesktop_regular_file_icon_drag_job_error() ===
Line 394: Line 177:
  
 Here we can simply rewrite the code to use ''GFile'' and ''GFileInfo''. Here we can simply rewrite the code to use ''GFile'' and ''GFileInfo''.
- 
-=== xfdesktop_delete_file_error() === 
- 
-Remove. 
- 
-=== xfdesktop_delete_file_finished() === 
- 
-Remove. 
- 
-=== xfdesktop_regular_file_icon_delete_file() === 
- 
-Instead of ''thunar_vfs_unlink_file()'', use the Thunar D-Bus API here. Fire 
-and forget. 
- 
-=== xfdesktop_regular_file_icon_rename_file() === 
- 
-See previous function. 
  
 === xfdesktop_regular_file_icon_peek_info() === === xfdesktop_regular_file_icon_peek_info() ===
  
 Change the return type to ''GFileInfo''. Change the return type to ''GFileInfo''.
- 
-=== xfdesktop_regular_file_icon_update_info() === 
- 
-TODO: Check how and where this function is being used and what we can do in order 
-to replace the ''ThunarVfsInfo'' parameter. 
- 
-=== xfdesktop_regular_file_icon_new() === 
- 
-Add a ''GFile'' parameter, update the code to use ''g_object_ref()'' instead of 
-''thunar_vfs_info_ref()''. 
  
 ==== xfdesktop_special_file_icon.{c,h} ==== ==== xfdesktop_special_file_icon.{c,h} ====