{"action":"created","comment":{"url":"https://api.github.com/repos/Ultimaker/Cura/pulls/comments/156701266","pull_request_review_id":83221586,"id":156701266,"diff_hunk":"@@ -0,0 +1,46 @@\n+# Copyright (c) 2017 Ultimaker B.V.\n+# Cura is released under the terms of the LGPLv3 or higher.\n+\n+from UM.Logger import Logger\n+\n+MYPY = False\n+if MYPY:\n+    from cura.PrinterOutput.PrintJobOutputModel import PrintJobOutputModel\n+    from cura.PrinterOutput.ExtruderOuputModel import ExtruderOuputModel\n+    from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel\n+\n+\n+class PrinterOutputController:","path":"cura/PrinterOutput/PrinterOutputController.py","position":13,"original_position":13,"commit_id":"b61832bc03b6367b18d8182c4e10fd51275317b5","original_commit_id":"b61832bc03b6367b18d8182c4e10fd51275317b5","user":{"login":"sedwards2009","id":6926644,"avatar_url":"https://avatars3.githubusercontent.com/u/6926644?v=4","gravatar_id":"","url":"https://api.github.com/users/sedwards2009","html_url":"https://github.com/sedwards2009","followers_url":"https://api.github.com/users/sedwards2009/followers","following_url":"https://api.github.com/users/sedwards2009/following{/other_user}","gists_url":"https://api.github.com/users/sedwards2009/gists{/gist_id}","starred_url":"https://api.github.com/users/sedwards2009/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sedwards2009/subscriptions","organizations_url":"https://api.github.com/users/sedwards2009/orgs","repos_url":"https://api.github.com/users/sedwards2009/repos","events_url":"https://api.github.com/users/sedwards2009/events{/privacy}","received_events_url":"https://api.github.com/users/sedwards2009/received_events","type":"User","site_admin":false},"body":"I'm trying to figure out the value of the `PrinterOutputController` and its relation to the `PrinterOutputModel`. Is the controller needed? Right now it just looks like the controller contains the verbs and the model contains the nouns, or more accurately, the data is in the model and the functions which operate on the data live in the controller. In a way OOP was about combining data with the functions that operate on it. i.e. objects have data and can do things.\r\n","created_at":"2017-12-13T16:01:07Z","updated_at":"2017-12-13T16:01:07Z","html_url":"https://github.com/Ultimaker/Cura/pull/2974#discussion_r156701266","pull_request_url":"https://api.github.com/repos/Ultimaker/Cura/pulls/2974","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/Ultimaker/Cura/pulls/comments/156701266"},"html":{"href":"https://github.com/Ultimaker/Cura/pull/2974#discussion_r156701266"},"pull_request":{"href":"https://api.github.com/repos/Ultimaker/Cura/pulls/2974"}}},"pull_request":{"url":"https://api.github.com/repos/Ultimaker/Cura/pulls/2974","id":158110560,"html_url":"https://github.com/Ultimaker/Cura/pull/2974","diff_url":"https://github.com/Ultimaker/Cura/pull/2974.diff","patch_url":"https://github.com/Ultimaker/Cura/pull/2974.patch","issue_url":"https://api.github.com/repos/Ultimaker/Cura/issues/2974","number":2974,"state":"open","locked":false,"title":"Network rewrite (WIP)","user":{"login":"nallath","id":3922611,"avatar_url":"https://avatars0.githubusercontent.com/u/3922611?v=4","gravatar_id":"","url":"https://api.github.com/users/nallath","html_url":"https://github.com/nallath","followers_url":"https://api.github.com/users/nallath/followers","following_url":"https://api.github.com/users/nallath/following{/other_user}","gists_url":"https://api.github.com/users/nallath/gists{/gist_id}","starred_url":"https://api.github.com/users/nallath/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nallath/subscriptions","organizations_url":"https://api.github.com/users/nallath/orgs","repos_url":"https://api.github.com/users/nallath/repos","events_url":"https://api.github.com/users/nallath/events{/privacy}","received_events_url":"https://api.github.com/users/nallath/received_events","type":"User","site_admin":false},"body":"This is a work in progress of the network rewrite. Note that USB printing and octoprint are not yet fixed. \r\n\r\nThe main difference is that the PrinterOutputDevice is no longer 1-1 connected with a single printer, but  1-*. So instead of a PrinterOutputDevice directly controling a single printer, it has a list of PrinterOutputModels that double as convenient qObjects, so they can also be used as models in QML. \r\n\r\n\r\n\r\n","created_at":"2017-12-13T14:39:04Z","updated_at":"2017-12-13T16:01:07Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/Ultimaker/Cura/pulls/2974/commits","review_comments_url":"https://api.github.com/repos/Ultimaker/Cura/pulls/2974/comments","review_comment_url":"https://api.github.com/repos/Ultimaker/Cura/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Ultimaker/Cura/issues/2974/comments","statuses_url":"https://api.github.com/repos/Ultimaker/Cura/statuses/b61832bc03b6367b18d8182c4e10fd51275317b5","head":{"label":"Ultimaker:network_rewrite","ref":"network_rewrite","sha":"b61832bc03b6367b18d8182c4e10fd51275317b5","user":{"login":"Ultimaker","id":499557,"avatar_url":"https://avatars1.githubusercontent.com/u/499557?v=4","gravatar_id":"","url":"https://api.github.com/users/Ultimaker","html_url":"https://github.com/Ultimaker","followers_url":"https://api.github.com/users/Ultimaker/followers","following_url":"https://api.github.com/users/Ultimaker/following{/other_user}","gists_url":"https://api.github.com/users/Ultimaker/gists{/gist_id}","starred_url":"https://api.github.com/users/Ultimaker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Ultimaker/subscriptions","organizations_url":"https://api.github.com/users/Ultimaker/orgs","repos_url":"https://api.github.com/users/Ultimaker/repos","events_url":"https://api.github.com/users/Ultimaker/events{/privacy}","received_events_url":"https://api.github.com/users/Ultimaker/received_events","type":"Organization","site_admin":false},"repo":{"id":20884782,"name":"Cura","full_name":"Ultimaker/Cura","owner":{"login":"Ultimaker","id":499557,"avatar_url":"https://avatars1.githubusercontent.com/u/499557?v=4","gravatar_id":"","url":"https://api.github.com/users/Ultimaker","html_url":"https://github.com/Ultimaker","followers_url":"https://api.github.com/users/Ultimaker/followers","following_url":"https://api.github.com/users/Ultimaker/following{/other_user}","gists_url":"https://api.github.com/users/Ultimaker/gists{/gist_id}","starred_url":"https://api.github.com/users/Ultimaker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Ultimaker/subscriptions","organizations_url":"https://api.github.com/users/Ultimaker/orgs","repos_url":"https://api.github.com/users/Ultimaker/repos","events_url":"https://api.github.com/users/Ultimaker/events{/privacy}","received_events_url":"https://api.github.com/users/Ultimaker/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Ultimaker/Cura","description":"3D printer / slicing GUI built on top of the Uranium framework","fork":false,"url":"https://api.github.com/repos/Ultimaker/Cura","forks_url":"https://api.github.com/repos/Ultimaker/Cura/forks","keys_url":"https://api.github.com/repos/Ultimaker/Cura/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Ultimaker/Cura/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Ultimaker/Cura/teams","hooks_url":"https://api.github.com/repos/Ultimaker/Cura/hooks","issue_events_url":"https://api.github.com/repos/Ultimaker/Cura/issues/events{/number}","events_url":"https://api.github.com/repos/Ultimaker/Cura/events","assignees_url":"https://api.github.com/repos/Ultimaker/Cura/assignees{/user}","branches_url":"https://api.github.com/repos/Ultimaker/Cura/branches{/branch}","tags_url":"https://api.github.com/repos/Ultimaker/Cura/tags","blobs_url":"https://api.github.com/repos/Ultimaker/Cura/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Ultimaker/Cura/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Ultimaker/Cura/git/refs{/sha}","trees_url":"https://api.github.com/repos/Ultimaker/Cura/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Ultimaker/Cura/statuses/{sha}","languages_url":"https://api.github.com/repos/Ultimaker/Cura/languages","stargazers_url":"https://api.github.com/repos/Ultimaker/Cura/stargazers","contributors_url":"https://api.github.com/repos/Ultimaker/Cura/contributors","subscribers_url":"https://api.github.com/repos/Ultimaker/Cura/subscribers","subscription_url":"https://api.github.com/repos/Ultimaker/Cura/subscription","commits_url":"https://api.github.com/repos/Ultimaker/Cura/commits{/sha}","git_commits_url":"https://api.github.com/repos/Ultimaker/Cura/git/commits{/sha}","comments_url":"https://api.github.com/repos/Ultimaker/Cura/comments{/number}","issue_comment_url":"https://api.github.com/repos/Ultimaker/Cura/issues/comments{/number}","contents_url":"https://api.github.com/repos/Ultimaker/Cura/contents/{+path}","compare_url":"https://api.github.com/repos/Ultimaker/Cura/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Ultimaker/Cura/merges","archive_url":"https://api.github.com/repos/Ultimaker/Cura/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Ultimaker/Cura/downloads","issues_url":"https://api.github.com/repos/Ultimaker/Cura/issues{/number}","pulls_url":"https://api.github.com/repos/Ultimaker/Cura/pulls{/number}","milestones_url":"https://api.github.com/repos/Ultimaker/Cura/milestones{/number}","notifications_url":"https://api.github.com/repos/Ultimaker/Cura/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Ultimaker/Cura/labels{/name}","releases_url":"https://api.github.com/repos/Ultimaker/Cura/releases{/id}","deployments_url":"https://api.github.com/repos/Ultimaker/Cura/deployments","created_at":"2014-06-16T12:55:31Z","updated_at":"2017-12-12T08:03:55Z","pushed_at":"2017-12-13T15:47:45Z","git_url":"git://github.com/Ultimaker/Cura.git","ssh_url":"git@github.com:Ultimaker/Cura.git","clone_url":"https://github.com/Ultimaker/Cura.git","svn_url":"https://github.com/Ultimaker/Cura","homepage":"","size":123515,"stargazers_count":609,"watchers_count":609,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":360,"mirror_url":null,"archived":false,"open_issues_count":630,"license":{"key":"lgpl-3.0","name":"GNU Lesser General Public License v3.0","spdx_id":"LGPL-3.0","url":"https://api.github.com/licenses/lgpl-3.0"},"forks":360,"open_issues":630,"watchers":609,"default_branch":"master"}},"base":{"label":"Ultimaker:master","ref":"master","sha":"a44cea7ac6f3572e4eed4a9c024ee8395cb635f8","user":{"login":"Ultimaker","id":499557,"avatar_url":"https://avatars1.githubusercontent.com/u/499557?v=4","gravatar_id":"","url":"https://api.github.com/users/Ultimaker","html_url":"https://github.com/Ultimaker","followers_url":"https://api.github.com/users/Ultimaker/followers","following_url":"https://api.github.com/users/Ultimaker/following{/other_user}","gists_url":"https://api.github.com/users/Ultimaker/gists{/gist_id}","starred_url":"https://api.github.com/users/Ultimaker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Ultimaker/subscriptions","organizations_url":"https://api.github.com/users/Ultimaker/orgs","repos_url":"https://api.github.com/users/Ultimaker/repos","events_url":"https://api.github.com/users/Ultimaker/events{/privacy}","received_events_url":"https://api.github.com/users/Ultimaker/received_events","type":"Organization","site_admin":false},"repo":{"id":20884782,"name":"Cura","full_name":"Ultimaker/Cura","owner":{"login":"Ultimaker","id":499557,"avatar_url":"https://avatars1.githubusercontent.com/u/499557?v=4","gravatar_id":"","url":"https://api.github.com/users/Ultimaker","html_url":"https://github.com/Ultimaker","followers_url":"https://api.github.com/users/Ultimaker/followers","following_url":"https://api.github.com/users/Ultimaker/following{/other_user}","gists_url":"https://api.github.com/users/Ultimaker/gists{/gist_id}","starred_url":"https://api.github.com/users/Ultimaker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Ultimaker/subscriptions","organizations_url":"https://api.github.com/users/Ultimaker/orgs","repos_url":"https://api.github.com/users/Ultimaker/repos","events_url":"https://api.github.com/users/Ultimaker/events{/privacy}","received_events_url":"https://api.github.com/users/Ultimaker/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Ultimaker/Cura","description":"3D printer / slicing GUI built on top of the Uranium framework","fork":false,"url":"https://api.github.com/repos/Ultimaker/Cura","forks_url":"https://api.github.com/repos/Ultimaker/Cura/forks","keys_url":"https://api.github.com/repos/Ultimaker/Cura/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Ultimaker/Cura/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Ultimaker/Cura/teams","hooks_url":"https://api.github.com/repos/Ultimaker/Cura/hooks","issue_events_url":"https://api.github.com/repos/Ultimaker/Cura/issues/events{/number}","events_url":"https://api.github.com/repos/Ultimaker/Cura/events","assignees_url":"https://api.github.com/repos/Ultimaker/Cura/assignees{/user}","branches_url":"https://api.github.com/repos/Ultimaker/Cura/branches{/branch}","tags_url":"https://api.github.com/repos/Ultimaker/Cura/tags","blobs_url":"https://api.github.com/repos/Ultimaker/Cura/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Ultimaker/Cura/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Ultimaker/Cura/git/refs{/sha}","trees_url":"https://api.github.com/repos/Ultimaker/Cura/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Ultimaker/Cura/statuses/{sha}","languages_url":"https://api.github.com/repos/Ultimaker/Cura/languages","stargazers_url":"https://api.github.com/repos/Ultimaker/Cura/stargazers","contributors_url":"https://api.github.com/repos/Ultimaker/Cura/contributors","subscribers_url":"https://api.github.com/repos/Ultimaker/Cura/subscribers","subscription_url":"https://api.github.com/repos/Ultimaker/Cura/subscription","commits_url":"https://api.github.com/repos/Ultimaker/Cura/commits{/sha}","git_commits_url":"https://api.github.com/repos/Ultimaker/Cura/git/commits{/sha}","comments_url":"https://api.github.com/repos/Ultimaker/Cura/comments{/number}","issue_comment_url":"https://api.github.com/repos/Ultimaker/Cura/issues/comments{/number}","contents_url":"https://api.github.com/repos/Ultimaker/Cura/contents/{+path}","compare_url":"https://api.github.com/repos/Ultimaker/Cura/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Ultimaker/Cura/merges","archive_url":"https://api.github.com/repos/Ultimaker/Cura/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Ultimaker/Cura/downloads","issues_url":"https://api.github.com/repos/Ultimaker/Cura/issues{/number}","pulls_url":"https://api.github.com/repos/Ultimaker/Cura/pulls{/number}","milestones_url":"https://api.github.com/repos/Ultimaker/Cura/milestones{/number}","notifications_url":"https://api.github.com/repos/Ultimaker/Cura/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Ultimaker/Cura/labels{/name}","releases_url":"https://api.github.com/repos/Ultimaker/Cura/releases{/id}","deployments_url":"https://api.github.com/repos/Ultimaker/Cura/deployments","created_at":"2014-06-16T12:55:31Z","updated_at":"2017-12-12T08:03:55Z","pushed_at":"2017-12-13T15:47:45Z","git_url":"git://github.com/Ultimaker/Cura.git","ssh_url":"git@github.com:Ultimaker/Cura.git","clone_url":"https://github.com/Ultimaker/Cura.git","svn_url":"https://github.com/Ultimaker/Cura","homepage":"","size":123515,"stargazers_count":609,"watchers_count":609,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":360,"mirror_url":null,"archived":false,"open_issues_count":630,"license":{"key":"lgpl-3.0","name":"GNU Lesser General Public License v3.0","spdx_id":"LGPL-3.0","url":"https://api.github.com/licenses/lgpl-3.0"},"forks":360,"open_issues":630,"watchers":609,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Ultimaker/Cura/pulls/2974"},"html":{"href":"https://github.com/Ultimaker/Cura/pull/2974"},"issue":{"href":"https://api.github.com/repos/Ultimaker/Cura/issues/2974"},"comments":{"href":"https://api.github.com/repos/Ultimaker/Cura/issues/2974/comments"},"review_comments":{"href":"https://api.github.com/repos/Ultimaker/Cura/pulls/2974/comments"},"review_comment":{"href":"https://api.github.com/repos/Ultimaker/Cura/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Ultimaker/Cura/pulls/2974/commits"},"statuses":{"href":"https://api.github.com/repos/Ultimaker/Cura/statuses/b61832bc03b6367b18d8182c4e10fd51275317b5"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"sedwards2009"}}