{"action":"created","issue":{"url":"https://api.github.com/repos/ejeschke/ginga/issues/639","repository_url":"https://api.github.com/repos/ejeschke/ginga","labels_url":"https://api.github.com/repos/ejeschke/ginga/issues/639/labels{/name}","comments_url":"https://api.github.com/repos/ejeschke/ginga/issues/639/comments","events_url":"https://api.github.com/repos/ejeschke/ginga/issues/639/events","html_url":"https://github.com/ejeschke/ginga/pull/639","id":304620694,"node_id":"MDExOlB1bGxSZXF1ZXN0MTc0NTUzMDAz","number":639,"title":"Profile support","user":{"login":"ejeschke","id":1305473,"node_id":"MDQ6VXNlcjEzMDU0NzM=","avatar_url":"https://avatars3.githubusercontent.com/u/1305473?v=4","gravatar_id":"","url":"https://api.github.com/users/ejeschke","html_url":"https://github.com/ejeschke","followers_url":"https://api.github.com/users/ejeschke/followers","following_url":"https://api.github.com/users/ejeschke/following{/other_user}","gists_url":"https://api.github.com/users/ejeschke/gists{/gist_id}","starred_url":"https://api.github.com/users/ejeschke/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ejeschke/subscriptions","organizations_url":"https://api.github.com/users/ejeschke/orgs","repos_url":"https://api.github.com/users/ejeschke/repos","events_url":"https://api.github.com/users/ejeschke/events{/privacy}","received_events_url":"https://api.github.com/users/ejeschke/received_events","type":"User","site_admin":false},"labels":[{"id":7618478,"node_id":"MDU6TGFiZWw3NjE4NDc4","url":"https://api.github.com/repos/ejeschke/ginga/labels/enhancement","name":"enhancement","color":"84b6eb","default":true}],"state":"open","locked":false,"assignee":{"login":"ejeschke","id":1305473,"node_id":"MDQ6VXNlcjEzMDU0NzM=","avatar_url":"https://avatars3.githubusercontent.com/u/1305473?v=4","gravatar_id":"","url":"https://api.github.com/users/ejeschke","html_url":"https://github.com/ejeschke","followers_url":"https://api.github.com/users/ejeschke/followers","following_url":"https://api.github.com/users/ejeschke/following{/other_user}","gists_url":"https://api.github.com/users/ejeschke/gists{/gist_id}","starred_url":"https://api.github.com/users/ejeschke/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ejeschke/subscriptions","organizations_url":"https://api.github.com/users/ejeschke/orgs","repos_url":"https://api.github.com/users/ejeschke/repos","events_url":"https://api.github.com/users/ejeschke/events{/privacy}","received_events_url":"https://api.github.com/users/ejeschke/received_events","type":"User","site_admin":false},"assignees":[{"login":"ejeschke","id":1305473,"node_id":"MDQ6VXNlcjEzMDU0NzM=","avatar_url":"https://avatars3.githubusercontent.com/u/1305473?v=4","gravatar_id":"","url":"https://api.github.com/users/ejeschke","html_url":"https://github.com/ejeschke","followers_url":"https://api.github.com/users/ejeschke/followers","following_url":"https://api.github.com/users/ejeschke/following{/other_user}","gists_url":"https://api.github.com/users/ejeschke/gists{/gist_id}","starred_url":"https://api.github.com/users/ejeschke/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ejeschke/subscriptions","organizations_url":"https://api.github.com/users/ejeschke/orgs","repos_url":"https://api.github.com/users/ejeschke/repos","events_url":"https://api.github.com/users/ejeschke/events{/privacy}","received_events_url":"https://api.github.com/users/ejeschke/received_events","type":"User","site_admin":false}],"milestone":null,"comments":12,"created_at":"2018-03-13T04:04:16Z","updated_at":"2018-08-11T16:48:44Z","closed_at":null,"author_association":"OWNER","pull_request":{"url":"https://api.github.com/repos/ejeschke/ginga/pulls/639","html_url":"https://github.com/ejeschke/ginga/pull/639","diff_url":"https://github.com/ejeschke/ginga/pull/639.diff","patch_url":"https://github.com/ejeschke/ginga/pull/639.patch"},"body":"This PR does two things: 1) refactors the way `RGBMap` objects manage their state, so that they can share the settings object of a ginga viewer widget; and 2) unifies the format of an \"image profile\" with a viewer `SettingGroup` object.  This simplifies the management of state between the viewer and the RGB mapper, but more importantly, opens up new possibilities for more advanced use cases for profiles.\r\n\r\nUntil now, profiles were only objects attached to the metadata of a `BaseImage`-subclassed object.  Using the Preferences (under the \"Remember\" category), certain state could be saved and restored to the viewer when moving between different images. Under this PR, basically almost all state from the viewer (meaning a channel image viewer in the context of a reference viewer) can be captured in a profile and saved and restored.  This opens up the interesting possibility of being able to manage profiles explicitly from the user's perspective (save from viewer, restore to viewer, attach to images).  Furthermore, using the sharing capabilities of the settings object, any parts of a profile could be shared with another profile, allowing fairly interesting setups in the reference viewer (think `WCSMatch`, but more powerful).  For example, using this it should be straightforward to implement the ds9 \"lock\" features, but with even more control by the user over what is \"locked\" (shared between channels)."},"comment":{"url":"https://api.github.com/repos/ejeschke/ginga/issues/comments/412287246","html_url":"https://github.com/ejeschke/ginga/pull/639#issuecomment-412287246","issue_url":"https://api.github.com/repos/ejeschke/ginga/issues/639","id":412287246,"node_id":"MDEyOklzc3VlQ29tbWVudDQxMjI4NzI0Ng==","user":{"login":"pllim","id":2090236,"node_id":"MDQ6VXNlcjIwOTAyMzY=","avatar_url":"https://avatars2.githubusercontent.com/u/2090236?v=4","gravatar_id":"","url":"https://api.github.com/users/pllim","html_url":"https://github.com/pllim","followers_url":"https://api.github.com/users/pllim/followers","following_url":"https://api.github.com/users/pllim/following{/other_user}","gists_url":"https://api.github.com/users/pllim/gists{/gist_id}","starred_url":"https://api.github.com/users/pllim/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pllim/subscriptions","organizations_url":"https://api.github.com/users/pllim/orgs","repos_url":"https://api.github.com/users/pllim/repos","events_url":"https://api.github.com/users/pllim/events{/privacy}","received_events_url":"https://api.github.com/users/pllim/received_events","type":"User","site_admin":false},"created_at":"2018-08-11T16:48:44Z","updated_at":"2018-08-11T16:48:44Z","author_association":"COLLABORATOR","body":"Unfortunately, I still see these errors:\r\n```\r\n2018-08-11 12:43:17,644 | W | Settings.py:245 (load) | Error loading\r\n  '~/.ginga/channel_Image.cfg' at line 49:\r\n  unexpected EOF while parsing (<unknown>, line 1)\r\n2018-08-11 12:43:24,637 | W | Settings.py:245 (load) | Error loading\r\n  '~/.ginga/channel_Image0.cfg' at line 48:\r\n  unexpected EOF while parsing (<unknown>, line 1)\r\n```\r\nI had 2 images in `Image` channel and 1 in `Image0` channel. I chose to restore Pan for the former, and Scale and Cuts for the latter. The `cfg` files are attached.\r\n[channel_Image.cfg.txt](https://github.com/ejeschke/ginga/files/2280394/channel_Image.cfg.txt)\r\n[channel_Image0.cfg.txt](https://github.com/ejeschke/ginga/files/2280395/channel_Image0.cfg.txt)\r\n"}}
{"actor":{"display_login":"pllim"}}