{"action":"created","comment":{"url":"https://api.github.com/repos/DynamoDS/Dynamo/pulls/comments/145554991","pull_request_review_id":70372517,"id":145554991,"diff_hunk":"@@ -531,8 +531,9 @@ public bool HasUnsavedChanges\n         /// Returns if current workspace is readonly.\n         /// </summary>\n         public bool IsReadOnly\n-        {\n-            get { return isReadOnly; }\n+        {   \n+            //if the workspace contains xmlDummyNodes it's effectively a readonly graph.\n+            get { return isReadOnly || this.containsXmlDummyNodes(); }","path":"src/DynamoCore/Graph/Workspaces/WorkspaceModel.cs","position":8,"original_position":8,"commit_id":"1635f51cedd2bdfb15d771c5dc1960f11259a93e","original_commit_id":"1635f51cedd2bdfb15d771c5dc1960f11259a93e","user":{"login":"mjkkirschner","id":508936,"avatar_url":"https://avatars3.githubusercontent.com/u/508936?v=4","gravatar_id":"","url":"https://api.github.com/users/mjkkirschner","html_url":"https://github.com/mjkkirschner","followers_url":"https://api.github.com/users/mjkkirschner/followers","following_url":"https://api.github.com/users/mjkkirschner/following{/other_user}","gists_url":"https://api.github.com/users/mjkkirschner/gists{/gist_id}","starred_url":"https://api.github.com/users/mjkkirschner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mjkkirschner/subscriptions","organizations_url":"https://api.github.com/users/mjkkirschner/orgs","repos_url":"https://api.github.com/users/mjkkirschner/repos","events_url":"https://api.github.com/users/mjkkirschner/events{/privacy}","received_events_url":"https://api.github.com/users/mjkkirschner/received_events","type":"User","site_admin":false},"body":"@QilongTang yeah, we want this to be recomputed whenever there readonly gets checked during different save pathways - if someone removes the nodes from a graph we should let them save over the original file for instance.","created_at":"2017-10-18T22:00:36Z","updated_at":"2017-10-18T22:00:36Z","html_url":"https://github.com/DynamoDS/Dynamo/pull/8266#discussion_r145554991","pull_request_url":"https://api.github.com/repos/DynamoDS/Dynamo/pulls/8266","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/DynamoDS/Dynamo/pulls/comments/145554991"},"html":{"href":"https://github.com/DynamoDS/Dynamo/pull/8266#discussion_r145554991"},"pull_request":{"href":"https://api.github.com/repos/DynamoDS/Dynamo/pulls/8266"}},"in_reply_to_id":145536716},"pull_request":{"url":"https://api.github.com/repos/DynamoDS/Dynamo/pulls/8266","id":146946702,"html_url":"https://github.com/DynamoDS/Dynamo/pull/8266","diff_url":"https://github.com/DynamoDS/Dynamo/pull/8266.diff","patch_url":"https://github.com/DynamoDS/Dynamo/pull/8266.patch","issue_url":"https://api.github.com/repos/DynamoDS/Dynamo/issues/8266","number":8266,"state":"open","locked":false,"title":"Do not save files when xmlDummyNodes are present","user":{"login":"mjkkirschner","id":508936,"avatar_url":"https://avatars3.githubusercontent.com/u/508936?v=4","gravatar_id":"","url":"https://api.github.com/users/mjkkirschner","html_url":"https://github.com/mjkkirschner","followers_url":"https://api.github.com/users/mjkkirschner/followers","following_url":"https://api.github.com/users/mjkkirschner/following{/other_user}","gists_url":"https://api.github.com/users/mjkkirschner/gists{/gist_id}","starred_url":"https://api.github.com/users/mjkkirschner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mjkkirschner/subscriptions","organizations_url":"https://api.github.com/users/mjkkirschner/orgs","repos_url":"https://api.github.com/users/mjkkirschner/repos","events_url":"https://api.github.com/users/mjkkirschner/events{/privacy}","received_events_url":"https://api.github.com/users/mjkkirschner/received_events","type":"User","site_admin":false},"body":"\r\n\r\n\r\n### Purpose\r\nIf a graph is opened that contains xml based DummyNodes, a notification and message box are both displayed with a similar message about the state of the graph - alerting the user that saving the file will activate SaveAs and that saving the graph in the current state will lose the unresolved nodes.\r\nhttps://jira.autodesk.com/browse/QNTM-2080\r\n\r\nif a user hits the save button or save menuitem in this state, a saveAs dialog box will appear letting them save over the original file or create a new file.\r\n\r\nif a user opens the JSON file which is now missing unresolved nodes messages are logged to the console for the missing connectors and nodes. I'm thinking we may also want to log notifications so this state is clear without checking the console.\r\n\r\nI have not been able to reproduce the crash from opening a graph in this state any longer.\r\n\r\nI need to add tests.\r\n\r\n<img width=\"1429\" alt=\"screen shot 2017-10-17 at 1 31 32 am\" src=\"https://user-images.githubusercontent.com/508936/31648464-df773fe2-b2db-11e7-8a5d-32e86568a6f5.png\">\r\n<img width=\"1488\" alt=\"screen shot 2017-10-17 at 1 31 21 am\" src=\"https://user-images.githubusercontent.com/508936/31648465-df8c40b8-b2db-11e7-8b70-20752d76c423.png\">\r\n\r\n### Declarations\r\n\r\nCheck these if you believe they are true\r\n\r\n- [ ] The code base is in a better state after this PR\r\n- [ ] Is documented according to the [standards](https://github.com/DynamoDS/Dynamo/wiki/Coding-Standards)\r\n- [ ] The level of testing this PR includes is appropriate\r\n- [ ] User facing strings, if any, are extracted into `*.resx` files\r\n- [ ] All tests pass using the self-service CI.\r\n- [ ] Snapshot of UI changes, if any.\r\n- [ ] Changes to the API follow [Semantic Versioning](https://github.com/DynamoDS/Dynamo/wiki/Dynamo-Versions), and are documented in the [API Changes](https://github.com/DynamoDS/Dynamo/wiki/API-Changes) document.\r\n\r\n### Reviewers\r\n\r\n@QilongTang \r\n@ColinDayOrg \r\n### FYIs\r\n\r\n@smangarole @Racel ","created_at":"2017-10-17T05:30:41Z","updated_at":"2017-10-18T22:00:36Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d59cd9886da5ec1f9e96f8a74a39a805177766e9","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/DynamoDS/Dynamo/pulls/8266/commits","review_comments_url":"https://api.github.com/repos/DynamoDS/Dynamo/pulls/8266/comments","review_comment_url":"https://api.github.com/repos/DynamoDS/Dynamo/pulls/comments{/number}","comments_url":"https://api.github.com/repos/DynamoDS/Dynamo/issues/8266/comments","statuses_url":"https://api.github.com/repos/DynamoDS/Dynamo/statuses/1635f51cedd2bdfb15d771c5dc1960f11259a93e","head":{"label":"mjkkirschner:XMLDummyNoSave","ref":"XMLDummyNoSave","sha":"1635f51cedd2bdfb15d771c5dc1960f11259a93e","user":{"login":"mjkkirschner","id":508936,"avatar_url":"https://avatars3.githubusercontent.com/u/508936?v=4","gravatar_id":"","url":"https://api.github.com/users/mjkkirschner","html_url":"https://github.com/mjkkirschner","followers_url":"https://api.github.com/users/mjkkirschner/followers","following_url":"https://api.github.com/users/mjkkirschner/following{/other_user}","gists_url":"https://api.github.com/users/mjkkirschner/gists{/gist_id}","starred_url":"https://api.github.com/users/mjkkirschner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mjkkirschner/subscriptions","organizations_url":"https://api.github.com/users/mjkkirschner/orgs","repos_url":"https://api.github.com/users/mjkkirschner/repos","events_url":"https://api.github.com/users/mjkkirschner/events{/privacy}","received_events_url":"https://api.github.com/users/mjkkirschner/received_events","type":"User","site_admin":false},"repo":{"id":14159492,"name":"Dynamo","full_name":"mjkkirschner/Dynamo","owner":{"login":"mjkkirschner","id":508936,"avatar_url":"https://avatars3.githubusercontent.com/u/508936?v=4","gravatar_id":"","url":"https://api.github.com/users/mjkkirschner","html_url":"https://github.com/mjkkirschner","followers_url":"https://api.github.com/users/mjkkirschner/followers","following_url":"https://api.github.com/users/mjkkirschner/following{/other_user}","gists_url":"https://api.github.com/users/mjkkirschner/gists{/gist_id}","starred_url":"https://api.github.com/users/mjkkirschner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mjkkirschner/subscriptions","organizations_url":"https://api.github.com/users/mjkkirschner/orgs","repos_url":"https://api.github.com/users/mjkkirschner/repos","events_url":"https://api.github.com/users/mjkkirschner/events{/privacy}","received_events_url":"https://api.github.com/users/mjkkirschner/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/mjkkirschner/Dynamo","description":"Visual Programming For Revit","fork":true,"url":"https://api.github.com/repos/mjkkirschner/Dynamo","forks_url":"https://api.github.com/repos/mjkkirschner/Dynamo/forks","keys_url":"https://api.github.com/repos/mjkkirschner/Dynamo/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mjkkirschner/Dynamo/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mjkkirschner/Dynamo/teams","hooks_url":"https://api.github.com/repos/mjkkirschner/Dynamo/hooks","issue_events_url":"https://api.github.com/repos/mjkkirschner/Dynamo/issues/events{/number}","events_url":"https://api.github.com/repos/mjkkirschner/Dynamo/events","assignees_url":"https://api.github.com/repos/mjkkirschner/Dynamo/assignees{/user}","branches_url":"https://api.github.com/repos/mjkkirschner/Dynamo/branches{/branch}","tags_url":"https://api.github.com/repos/mjkkirschner/Dynamo/tags","blobs_url":"https://api.github.com/repos/mjkkirschner/Dynamo/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mjkkirschner/Dynamo/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mjkkirschner/Dynamo/git/refs{/sha}","trees_url":"https://api.github.com/repos/mjkkirschner/Dynamo/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mjkkirschner/Dynamo/statuses/{sha}","languages_url":"https://api.github.com/repos/mjkkirschner/Dynamo/languages","stargazers_url":"https://api.github.com/repos/mjkkirschner/Dynamo/stargazers","contributors_url":"https://api.github.com/repos/mjkkirschner/Dynamo/contributors","subscribers_url":"https://api.github.com/repos/mjkkirschner/Dynamo/subscribers","subscription_url":"https://api.github.com/repos/mjkkirschner/Dynamo/subscription","commits_url":"https://api.github.com/repos/mjkkirschner/Dynamo/commits{/sha}","git_commits_url":"https://api.github.com/repos/mjkkirschner/Dynamo/git/commits{/sha}","comments_url":"https://api.github.com/repos/mjkkirschner/Dynamo/comments{/number}","issue_comment_url":"https://api.github.com/repos/mjkkirschner/Dynamo/issues/comments{/number}","contents_url":"https://api.github.com/repos/mjkkirschner/Dynamo/contents/{+path}","compare_url":"https://api.github.com/repos/mjkkirschner/Dynamo/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mjkkirschner/Dynamo/merges","archive_url":"https://api.github.com/repos/mjkkirschner/Dynamo/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mjkkirschner/Dynamo/downloads","issues_url":"https://api.github.com/repos/mjkkirschner/Dynamo/issues{/number}","pulls_url":"https://api.github.com/repos/mjkkirschner/Dynamo/pulls{/number}","milestones_url":"https://api.github.com/repos/mjkkirschner/Dynamo/milestones{/number}","notifications_url":"https://api.github.com/repos/mjkkirschner/Dynamo/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mjkkirschner/Dynamo/labels{/name}","releases_url":"https://api.github.com/repos/mjkkirschner/Dynamo/releases{/id}","deployments_url":"https://api.github.com/repos/mjkkirschner/Dynamo/deployments","created_at":"2013-11-06T01:18:42Z","updated_at":"2015-01-20T19:30:58Z","pushed_at":"2017-10-18T20:31:14Z","git_url":"git://github.com/mjkkirschner/Dynamo.git","ssh_url":"git@github.com:mjkkirschner/Dynamo.git","clone_url":"https://github.com/mjkkirschner/Dynamo.git","svn_url":"https://github.com/mjkkirschner/Dynamo","homepage":"http://dynamobim.org","size":1052070,"stargazers_count":0,"watchers_count":0,"language":"C#","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"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":"DynamoDS:master","ref":"master","sha":"7bdd673a58782160f692e1d68edbc8a024a3f790","user":{"login":"DynamoDS","id":6528209,"avatar_url":"https://avatars3.githubusercontent.com/u/6528209?v=4","gravatar_id":"","url":"https://api.github.com/users/DynamoDS","html_url":"https://github.com/DynamoDS","followers_url":"https://api.github.com/users/DynamoDS/followers","following_url":"https://api.github.com/users/DynamoDS/following{/other_user}","gists_url":"https://api.github.com/users/DynamoDS/gists{/gist_id}","starred_url":"https://api.github.com/users/DynamoDS/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DynamoDS/subscriptions","organizations_url":"https://api.github.com/users/DynamoDS/orgs","repos_url":"https://api.github.com/users/DynamoDS/repos","events_url":"https://api.github.com/users/DynamoDS/events{/privacy}","received_events_url":"https://api.github.com/users/DynamoDS/received_events","type":"Organization","site_admin":false},"repo":{"id":3395179,"name":"Dynamo","full_name":"DynamoDS/Dynamo","owner":{"login":"DynamoDS","id":6528209,"avatar_url":"https://avatars3.githubusercontent.com/u/6528209?v=4","gravatar_id":"","url":"https://api.github.com/users/DynamoDS","html_url":"https://github.com/DynamoDS","followers_url":"https://api.github.com/users/DynamoDS/followers","following_url":"https://api.github.com/users/DynamoDS/following{/other_user}","gists_url":"https://api.github.com/users/DynamoDS/gists{/gist_id}","starred_url":"https://api.github.com/users/DynamoDS/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DynamoDS/subscriptions","organizations_url":"https://api.github.com/users/DynamoDS/orgs","repos_url":"https://api.github.com/users/DynamoDS/repos","events_url":"https://api.github.com/users/DynamoDS/events{/privacy}","received_events_url":"https://api.github.com/users/DynamoDS/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/DynamoDS/Dynamo","description":"Open Source Graphical Programming for Design","fork":false,"url":"https://api.github.com/repos/DynamoDS/Dynamo","forks_url":"https://api.github.com/repos/DynamoDS/Dynamo/forks","keys_url":"https://api.github.com/repos/DynamoDS/Dynamo/keys{/key_id}","collaborators_url":"https://api.github.com/repos/DynamoDS/Dynamo/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/DynamoDS/Dynamo/teams","hooks_url":"https://api.github.com/repos/DynamoDS/Dynamo/hooks","issue_events_url":"https://api.github.com/repos/DynamoDS/Dynamo/issues/events{/number}","events_url":"https://api.github.com/repos/DynamoDS/Dynamo/events","assignees_url":"https://api.github.com/repos/DynamoDS/Dynamo/assignees{/user}","branches_url":"https://api.github.com/repos/DynamoDS/Dynamo/branches{/branch}","tags_url":"https://api.github.com/repos/DynamoDS/Dynamo/tags","blobs_url":"https://api.github.com/repos/DynamoDS/Dynamo/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/DynamoDS/Dynamo/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/DynamoDS/Dynamo/git/refs{/sha}","trees_url":"https://api.github.com/repos/DynamoDS/Dynamo/git/trees{/sha}","statuses_url":"https://api.github.com/repos/DynamoDS/Dynamo/statuses/{sha}","languages_url":"https://api.github.com/repos/DynamoDS/Dynamo/languages","stargazers_url":"https://api.github.com/repos/DynamoDS/Dynamo/stargazers","contributors_url":"https://api.github.com/repos/DynamoDS/Dynamo/contributors","subscribers_url":"https://api.github.com/repos/DynamoDS/Dynamo/subscribers","subscription_url":"https://api.github.com/repos/DynamoDS/Dynamo/subscription","commits_url":"https://api.github.com/repos/DynamoDS/Dynamo/commits{/sha}","git_commits_url":"https://api.github.com/repos/DynamoDS/Dynamo/git/commits{/sha}","comments_url":"https://api.github.com/repos/DynamoDS/Dynamo/comments{/number}","issue_comment_url":"https://api.github.com/repos/DynamoDS/Dynamo/issues/comments{/number}","contents_url":"https://api.github.com/repos/DynamoDS/Dynamo/contents/{+path}","compare_url":"https://api.github.com/repos/DynamoDS/Dynamo/compare/{base}...{head}","merges_url":"https://api.github.com/repos/DynamoDS/Dynamo/merges","archive_url":"https://api.github.com/repos/DynamoDS/Dynamo/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/DynamoDS/Dynamo/downloads","issues_url":"https://api.github.com/repos/DynamoDS/Dynamo/issues{/number}","pulls_url":"https://api.github.com/repos/DynamoDS/Dynamo/pulls{/number}","milestones_url":"https://api.github.com/repos/DynamoDS/Dynamo/milestones{/number}","notifications_url":"https://api.github.com/repos/DynamoDS/Dynamo/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/DynamoDS/Dynamo/labels{/name}","releases_url":"https://api.github.com/repos/DynamoDS/Dynamo/releases{/id}","deployments_url":"https://api.github.com/repos/DynamoDS/Dynamo/deployments","created_at":"2012-02-09T07:35:33Z","updated_at":"2017-10-18T07:59:26Z","pushed_at":"2017-10-18T21:08:19Z","git_url":"git://github.com/DynamoDS/Dynamo.git","ssh_url":"git@github.com:DynamoDS/Dynamo.git","clone_url":"https://github.com/DynamoDS/Dynamo.git","svn_url":"https://github.com/DynamoDS/Dynamo","homepage":"http://dynamobim.org","size":1003224,"stargazers_count":500,"watchers_count":500,"language":"C#","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":313,"mirror_url":null,"open_issues_count":651,"forks":313,"open_issues":651,"watchers":500,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/DynamoDS/Dynamo/pulls/8266"},"html":{"href":"https://github.com/DynamoDS/Dynamo/pull/8266"},"issue":{"href":"https://api.github.com/repos/DynamoDS/Dynamo/issues/8266"},"comments":{"href":"https://api.github.com/repos/DynamoDS/Dynamo/issues/8266/comments"},"review_comments":{"href":"https://api.github.com/repos/DynamoDS/Dynamo/pulls/8266/comments"},"review_comment":{"href":"https://api.github.com/repos/DynamoDS/Dynamo/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/DynamoDS/Dynamo/pulls/8266/commits"},"statuses":{"href":"https://api.github.com/repos/DynamoDS/Dynamo/statuses/1635f51cedd2bdfb15d771c5dc1960f11259a93e"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"mjkkirschner"}}