{"action":"closed","number":568,"pull_request":{"url":"https://api.github.com/repos/mate-desktop/caja/pulls/568","id":73492671,"html_url":"https://github.com/mate-desktop/caja/pull/568","diff_url":"https://github.com/mate-desktop/caja/pull/568.diff","patch_url":"https://github.com/mate-desktop/caja/pull/568.patch","issue_url":"https://api.github.com/repos/mate-desktop/caja/issues/568","number":568,"state":"closed","locked":false,"title":"Implement copy queue and pausing","user":{"login":"emanuele-f","id":5488003,"avatar_url":"https://avatars.githubusercontent.com/u/5488003?v=3","gravatar_id":"","url":"https://api.github.com/users/emanuele-f","html_url":"https://github.com/emanuele-f","followers_url":"https://api.github.com/users/emanuele-f/followers","following_url":"https://api.github.com/users/emanuele-f/following{/other_user}","gists_url":"https://api.github.com/users/emanuele-f/gists{/gist_id}","starred_url":"https://api.github.com/users/emanuele-f/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/emanuele-f/subscriptions","organizations_url":"https://api.github.com/users/emanuele-f/orgs","repos_url":"https://api.github.com/users/emanuele-f/repos","events_url":"https://api.github.com/users/emanuele-f/events{/privacy}","received_events_url":"https://api.github.com/users/emanuele-f/received_events","type":"User","site_admin":false},"body":"As many users (see #124), including me, have missed this feature from caja file manager for a long time, I've finally decided to try to implement a prototype of it. I've very little experience in glib/gtk framework so please watch out for errors!\r\n\r\n![copy](https://cloud.githubusercontent.com/assets/5488003/15990577/a654d1a2-3096-11e6-86fd-a8e54cf3d396.png)\r\n\r\nThis pull request implements start/pause/queue logic for caja-file-operations. Since caja-file-operations uses GIO functions, a single file copy cannot be stopped in the middle. Instead, the actual stop is performed before handling next file.\r\n\r\n![sm](https://cloud.githubusercontent.com/assets/5488003/15990580/becd0a42-3096-11e6-8742-02a86018b659.png)\r\n\r\nThe buttons and internal events drive the state machine in figure. Progress widgets are visually sorted based on their current queue order.\r\n\r\n- The start/pause button can be used to put the operation on sleep and to resume it later\r\n  \r\n- The queue button puts the operation in queue. When no more operations are in progress, the first operation of the queue is resumed\r\n  \r\n- The cancel button has been moved to the left side of the progress bar\r\n\r\nI'm using some stock buttons, but I feel they are not appropriate.\r\n\r\nPausing and resuming execution is performed by waiting_c condition variable.\r\n\r\nThe operations can be started either as \"running\" or as \"queued\". Since the function caja_progress_info.c::new_op_started introduces a delay of 2 seconds before the windows showing up, move and copy operations now are not started until that point (this is a change of the previous behaviour, maybe a point to improove..).\r\n\r\nIt would be nice to implement user preferencies to define queue policy. For example, the policy QUEUE_ON_DEVICE_WRITING could indicate that a new operation should be queue if another operation exists which is writing the same device. Others could be QUEUE_ON_DEVICE_USED, QUEUE_ALWAYS, START_ALWAYS.\r\n\r\nI hope you are interested in further developing this feature. I look forward for your feedback.","created_at":"2016-06-12T10:16:30Z","updated_at":"2016-10-17T18:05:03Z","closed_at":"2016-10-17T18:05:03Z","merged_at":null,"merge_commit_sha":"343764b29f929349ce9bf7dea1d2f0127343b9ca","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/mate-desktop/caja/pulls/568/commits","review_comments_url":"https://api.github.com/repos/mate-desktop/caja/pulls/568/comments","review_comment_url":"https://api.github.com/repos/mate-desktop/caja/pulls/comments{/number}","comments_url":"https://api.github.com/repos/mate-desktop/caja/issues/568/comments","statuses_url":"https://api.github.com/repos/mate-desktop/caja/statuses/124df5f4f8006a83e851a43fc7d019f06a180ed8","head":{"label":"emanuele-f:master","ref":"master","sha":"124df5f4f8006a83e851a43fc7d019f06a180ed8","user":{"login":"emanuele-f","id":5488003,"avatar_url":"https://avatars.githubusercontent.com/u/5488003?v=3","gravatar_id":"","url":"https://api.github.com/users/emanuele-f","html_url":"https://github.com/emanuele-f","followers_url":"https://api.github.com/users/emanuele-f/followers","following_url":"https://api.github.com/users/emanuele-f/following{/other_user}","gists_url":"https://api.github.com/users/emanuele-f/gists{/gist_id}","starred_url":"https://api.github.com/users/emanuele-f/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/emanuele-f/subscriptions","organizations_url":"https://api.github.com/users/emanuele-f/orgs","repos_url":"https://api.github.com/users/emanuele-f/repos","events_url":"https://api.github.com/users/emanuele-f/events{/privacy}","received_events_url":"https://api.github.com/users/emanuele-f/received_events","type":"User","site_admin":false},"repo":{"id":60738959,"name":"caja","full_name":"emanuele-f/caja","owner":{"login":"emanuele-f","id":5488003,"avatar_url":"https://avatars.githubusercontent.com/u/5488003?v=3","gravatar_id":"","url":"https://api.github.com/users/emanuele-f","html_url":"https://github.com/emanuele-f","followers_url":"https://api.github.com/users/emanuele-f/followers","following_url":"https://api.github.com/users/emanuele-f/following{/other_user}","gists_url":"https://api.github.com/users/emanuele-f/gists{/gist_id}","starred_url":"https://api.github.com/users/emanuele-f/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/emanuele-f/subscriptions","organizations_url":"https://api.github.com/users/emanuele-f/orgs","repos_url":"https://api.github.com/users/emanuele-f/repos","events_url":"https://api.github.com/users/emanuele-f/events{/privacy}","received_events_url":"https://api.github.com/users/emanuele-f/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/emanuele-f/caja","description":"Caja, the file manager for the MATE desktop","fork":true,"url":"https://api.github.com/repos/emanuele-f/caja","forks_url":"https://api.github.com/repos/emanuele-f/caja/forks","keys_url":"https://api.github.com/repos/emanuele-f/caja/keys{/key_id}","collaborators_url":"https://api.github.com/repos/emanuele-f/caja/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/emanuele-f/caja/teams","hooks_url":"https://api.github.com/repos/emanuele-f/caja/hooks","issue_events_url":"https://api.github.com/repos/emanuele-f/caja/issues/events{/number}","events_url":"https://api.github.com/repos/emanuele-f/caja/events","assignees_url":"https://api.github.com/repos/emanuele-f/caja/assignees{/user}","branches_url":"https://api.github.com/repos/emanuele-f/caja/branches{/branch}","tags_url":"https://api.github.com/repos/emanuele-f/caja/tags","blobs_url":"https://api.github.com/repos/emanuele-f/caja/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/emanuele-f/caja/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/emanuele-f/caja/git/refs{/sha}","trees_url":"https://api.github.com/repos/emanuele-f/caja/git/trees{/sha}","statuses_url":"https://api.github.com/repos/emanuele-f/caja/statuses/{sha}","languages_url":"https://api.github.com/repos/emanuele-f/caja/languages","stargazers_url":"https://api.github.com/repos/emanuele-f/caja/stargazers","contributors_url":"https://api.github.com/repos/emanuele-f/caja/contributors","subscribers_url":"https://api.github.com/repos/emanuele-f/caja/subscribers","subscription_url":"https://api.github.com/repos/emanuele-f/caja/subscription","commits_url":"https://api.github.com/repos/emanuele-f/caja/commits{/sha}","git_commits_url":"https://api.github.com/repos/emanuele-f/caja/git/commits{/sha}","comments_url":"https://api.github.com/repos/emanuele-f/caja/comments{/number}","issue_comment_url":"https://api.github.com/repos/emanuele-f/caja/issues/comments{/number}","contents_url":"https://api.github.com/repos/emanuele-f/caja/contents/{+path}","compare_url":"https://api.github.com/repos/emanuele-f/caja/compare/{base}...{head}","merges_url":"https://api.github.com/repos/emanuele-f/caja/merges","archive_url":"https://api.github.com/repos/emanuele-f/caja/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/emanuele-f/caja/downloads","issues_url":"https://api.github.com/repos/emanuele-f/caja/issues{/number}","pulls_url":"https://api.github.com/repos/emanuele-f/caja/pulls{/number}","milestones_url":"https://api.github.com/repos/emanuele-f/caja/milestones{/number}","notifications_url":"https://api.github.com/repos/emanuele-f/caja/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/emanuele-f/caja/labels{/name}","releases_url":"https://api.github.com/repos/emanuele-f/caja/releases{/id}","deployments_url":"https://api.github.com/repos/emanuele-f/caja/deployments","created_at":"2016-06-09T00:02:28Z","updated_at":"2016-06-09T00:02:35Z","pushed_at":"2016-10-17T14:36:14Z","git_url":"git://github.com/emanuele-f/caja.git","ssh_url":"git@github.com:emanuele-f/caja.git","clone_url":"https://github.com/emanuele-f/caja.git","svn_url":"https://github.com/emanuele-f/caja","homepage":"http://www.mate-desktop.org/","size":47889,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"mate-desktop:master","ref":"master","sha":"c27cc572f8f33bdfbbc3dfea8786d05a1818b910","user":{"login":"mate-desktop","id":1236121,"avatar_url":"https://avatars.githubusercontent.com/u/1236121?v=3","gravatar_id":"","url":"https://api.github.com/users/mate-desktop","html_url":"https://github.com/mate-desktop","followers_url":"https://api.github.com/users/mate-desktop/followers","following_url":"https://api.github.com/users/mate-desktop/following{/other_user}","gists_url":"https://api.github.com/users/mate-desktop/gists{/gist_id}","starred_url":"https://api.github.com/users/mate-desktop/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mate-desktop/subscriptions","organizations_url":"https://api.github.com/users/mate-desktop/orgs","repos_url":"https://api.github.com/users/mate-desktop/repos","events_url":"https://api.github.com/users/mate-desktop/events{/privacy}","received_events_url":"https://api.github.com/users/mate-desktop/received_events","type":"Organization","site_admin":false},"repo":{"id":2895474,"name":"caja","full_name":"mate-desktop/caja","owner":{"login":"mate-desktop","id":1236121,"avatar_url":"https://avatars.githubusercontent.com/u/1236121?v=3","gravatar_id":"","url":"https://api.github.com/users/mate-desktop","html_url":"https://github.com/mate-desktop","followers_url":"https://api.github.com/users/mate-desktop/followers","following_url":"https://api.github.com/users/mate-desktop/following{/other_user}","gists_url":"https://api.github.com/users/mate-desktop/gists{/gist_id}","starred_url":"https://api.github.com/users/mate-desktop/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mate-desktop/subscriptions","organizations_url":"https://api.github.com/users/mate-desktop/orgs","repos_url":"https://api.github.com/users/mate-desktop/repos","events_url":"https://api.github.com/users/mate-desktop/events{/privacy}","received_events_url":"https://api.github.com/users/mate-desktop/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mate-desktop/caja","description":"Caja, the file manager for the MATE desktop","fork":false,"url":"https://api.github.com/repos/mate-desktop/caja","forks_url":"https://api.github.com/repos/mate-desktop/caja/forks","keys_url":"https://api.github.com/repos/mate-desktop/caja/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mate-desktop/caja/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mate-desktop/caja/teams","hooks_url":"https://api.github.com/repos/mate-desktop/caja/hooks","issue_events_url":"https://api.github.com/repos/mate-desktop/caja/issues/events{/number}","events_url":"https://api.github.com/repos/mate-desktop/caja/events","assignees_url":"https://api.github.com/repos/mate-desktop/caja/assignees{/user}","branches_url":"https://api.github.com/repos/mate-desktop/caja/branches{/branch}","tags_url":"https://api.github.com/repos/mate-desktop/caja/tags","blobs_url":"https://api.github.com/repos/mate-desktop/caja/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mate-desktop/caja/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mate-desktop/caja/git/refs{/sha}","trees_url":"https://api.github.com/repos/mate-desktop/caja/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mate-desktop/caja/statuses/{sha}","languages_url":"https://api.github.com/repos/mate-desktop/caja/languages","stargazers_url":"https://api.github.com/repos/mate-desktop/caja/stargazers","contributors_url":"https://api.github.com/repos/mate-desktop/caja/contributors","subscribers_url":"https://api.github.com/repos/mate-desktop/caja/subscribers","subscription_url":"https://api.github.com/repos/mate-desktop/caja/subscription","commits_url":"https://api.github.com/repos/mate-desktop/caja/commits{/sha}","git_commits_url":"https://api.github.com/repos/mate-desktop/caja/git/commits{/sha}","comments_url":"https://api.github.com/repos/mate-desktop/caja/comments{/number}","issue_comment_url":"https://api.github.com/repos/mate-desktop/caja/issues/comments{/number}","contents_url":"https://api.github.com/repos/mate-desktop/caja/contents/{+path}","compare_url":"https://api.github.com/repos/mate-desktop/caja/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mate-desktop/caja/merges","archive_url":"https://api.github.com/repos/mate-desktop/caja/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mate-desktop/caja/downloads","issues_url":"https://api.github.com/repos/mate-desktop/caja/issues{/number}","pulls_url":"https://api.github.com/repos/mate-desktop/caja/pulls{/number}","milestones_url":"https://api.github.com/repos/mate-desktop/caja/milestones{/number}","notifications_url":"https://api.github.com/repos/mate-desktop/caja/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mate-desktop/caja/labels{/name}","releases_url":"https://api.github.com/repos/mate-desktop/caja/releases{/id}","deployments_url":"https://api.github.com/repos/mate-desktop/caja/deployments","created_at":"2011-12-02T01:33:31Z","updated_at":"2016-10-12T16:50:24Z","pushed_at":"2016-10-17T18:03:54Z","git_url":"git://github.com/mate-desktop/caja.git","ssh_url":"git@github.com:mate-desktop/caja.git","clone_url":"https://github.com/mate-desktop/caja.git","svn_url":"https://github.com/mate-desktop/caja","homepage":"http://www.mate-desktop.org/","size":48718,"stargazers_count":56,"watchers_count":56,"language":"C","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":53,"mirror_url":null,"open_issues_count":162,"forks":53,"open_issues":162,"watchers":56,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/mate-desktop/caja/pulls/568"},"html":{"href":"https://github.com/mate-desktop/caja/pull/568"},"issue":{"href":"https://api.github.com/repos/mate-desktop/caja/issues/568"},"comments":{"href":"https://api.github.com/repos/mate-desktop/caja/issues/568/comments"},"review_comments":{"href":"https://api.github.com/repos/mate-desktop/caja/pulls/568/comments"},"review_comment":{"href":"https://api.github.com/repos/mate-desktop/caja/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/mate-desktop/caja/pulls/568/commits"},"statuses":{"href":"https://api.github.com/repos/mate-desktop/caja/statuses/124df5f4f8006a83e851a43fc7d019f06a180ed8"}},"merged":false,"mergeable":true,"mergeable_state":"clean","merged_by":null,"comments":27,"review_comments":0,"commits":18,"additions":601,"deletions":59,"changed_files":3}}
{"actor":{"display_login":"lukefromdc"}}