Xfce Wiki

Sub domains
 

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
dev:xfdesktop:port-to-gio-progress [2010/10/18 12:54] 217.229.80.161dev: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_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 194: 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 232: 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 286: 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 309: 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 317: 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 345: 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 388: 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} ====