{"action":"created","comment":{"url":"https://api.github.com/repos/bokeh/bokeh/pulls/comments/79326770","id":79326770,"diff_hunk":"@@ -392,6 +392,41 @@ class BoxZoomTool(Drag):\n \n     \"\"\")\n \n+class ZoomInTool(Action):\n+    \"\"\" *toolbar icon*: |zoom_in_icon|\n+\n+    The zoom-in tool allows users to click a button to zoom in\n+    by a fixed amount.\n+\n+    .. |zoom_in_icon| image:: /_images/icons/ZoomIn.png\n+        :height: 18pt\n+\n+    \"\"\"\n+    # TODO ZoomInTool dimensions should probably be constrained to be the same as ZoomOutTool","path":"bokeh/models/tools.py","position":24,"original_position":14,"commit_id":"35385460661c80ff21888c3864f1698cb2b26eb1","original_commit_id":"f47cc7884bbb71aad5ade3c406d5cd40fe922c0a","user":{"login":"timsnyder","id":83846,"avatar_url":"https://avatars.githubusercontent.com/u/83846?v=3","gravatar_id":"","url":"https://api.github.com/users/timsnyder","html_url":"https://github.com/timsnyder","followers_url":"https://api.github.com/users/timsnyder/followers","following_url":"https://api.github.com/users/timsnyder/following{/other_user}","gists_url":"https://api.github.com/users/timsnyder/gists{/gist_id}","starred_url":"https://api.github.com/users/timsnyder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/timsnyder/subscriptions","organizations_url":"https://api.github.com/users/timsnyder/orgs","repos_url":"https://api.github.com/users/timsnyder/repos","events_url":"https://api.github.com/users/timsnyder/events{/privacy}","received_events_url":"https://api.github.com/users/timsnyder/received_events","type":"User","site_admin":false},"body":"Sounds good.  I agree with you and mattpap that we shouldn't try to do all of the things here.","created_at":"2016-09-19T04:23:49Z","updated_at":"2016-09-19T04:23:49Z","html_url":"https://github.com/bokeh/bokeh/pull/4841#discussion_r79326770","pull_request_url":"https://api.github.com/repos/bokeh/bokeh/pulls/4841","_links":{"self":{"href":"https://api.github.com/repos/bokeh/bokeh/pulls/comments/79326770"},"html":{"href":"https://github.com/bokeh/bokeh/pull/4841#discussion_r79326770"},"pull_request":{"href":"https://api.github.com/repos/bokeh/bokeh/pulls/4841"}}},"pull_request":{"url":"https://api.github.com/repos/bokeh/bokeh/pulls/4841","id":78165346,"html_url":"https://github.com/bokeh/bokeh/pull/4841","diff_url":"https://github.com/bokeh/bokeh/pull/4841.diff","patch_url":"https://github.com/bokeh/bokeh/pull/4841.patch","issue_url":"https://api.github.com/repos/bokeh/bokeh/issues/4841","number":4841,"state":"open","locked":false,"title":"Refactor wheel_zoom_tool. Add zoom button tools #916","user":{"login":"timsnyder","id":83846,"avatar_url":"https://avatars.githubusercontent.com/u/83846?v=3","gravatar_id":"","url":"https://api.github.com/users/timsnyder","html_url":"https://github.com/timsnyder","followers_url":"https://api.github.com/users/timsnyder/followers","following_url":"https://api.github.com/users/timsnyder/following{/other_user}","gists_url":"https://api.github.com/users/timsnyder/gists{/gist_id}","starred_url":"https://api.github.com/users/timsnyder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/timsnyder/subscriptions","organizations_url":"https://api.github.com/users/timsnyder/orgs","repos_url":"https://api.github.com/users/timsnyder/repos","events_url":"https://api.github.com/users/timsnyder/events{/privacy}","received_events_url":"https://api.github.com/users/timsnyder/received_events","type":"User","site_admin":false},"body":"- [x] issues: fixes #916\r\n- [ ] tests added / passed\r\n- [ ] release document entry (if new feature or API change)\r\n\r\nRefactors models/tools/gestures/wheel_zoom_tool into\r\na scale_range() helper provided by models/tools/zoom_util.\r\n\r\nscale_range() is then used to add zoom_in_tool and zoom_out_tool\r\nto models/tools/actions, implementing toolbar buttons that will\r\nzoom\r\n\r\nRemaining work on #916 includes:\r\n\r\n- [x] add new models to bokehjs/src/coffee/api/typings/models/tools.d.ts. somehow I missed those in my initial commit\r\n\r\n- [X] ~~actual design done for icons/Zoom{In,Out}.png.~~ I think what I slapped together is good enough until the tool icons are revisited en masse in #3250 \r\n\r\n- [X] ~~ensure zoom-in and zoom-out are \"bundled\"~~ won't be included in this issue, will address at some point in the future.\r\n\r\n- [x] add 'factor' as a parameter on the zoom buttons.  Currently, it\r\n  is hardcoded to 10%\r\n\r\n- [x] review user-guide for documentation needs\r\n\r\n- [x] ~~possibly rebase this into multiple commits~~. won't do since squash merge will be used per [this comment by mattpap](https://github.com/bokeh/bokeh/pull/4907#issuecomment-238055182)\r\n\r\nPossible work for future (or already existing) tickets:\r\n- Does it make sense to expose zoom-only mode on wheel-zoom? I\r\n  personally find it awkward to use wheel-zoom when it pans and zooms\r\n  at the same time.  This could be implemented easily now by\r\n  programmatically eliding the 'center' parameter to scale_range().\r\n  Perhaps it could be implemented as wheel-zoom button having a dropdown\r\n  radio-button list like tap tool that lets the user choose to lock down the center of the plot and only scale in and out\r\n    - I think this should be attempted in #5135. I made this comment [over there as well.](https://github.com/bokeh/bokeh/issues/5135#issuecomment-247895010)","created_at":"2016-07-20T15:13:51Z","updated_at":"2016-09-19T04:23:49Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e323ede3ad7cd67803efab9781666bbf349d7aa7","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/bokeh/bokeh/pulls/4841/commits","review_comments_url":"https://api.github.com/repos/bokeh/bokeh/pulls/4841/comments","review_comment_url":"https://api.github.com/repos/bokeh/bokeh/pulls/comments{/number}","comments_url":"https://api.github.com/repos/bokeh/bokeh/issues/4841/comments","statuses_url":"https://api.github.com/repos/bokeh/bokeh/statuses/35385460661c80ff21888c3864f1698cb2b26eb1","head":{"label":"timsnyder:916_add_zoom_buttons","ref":"916_add_zoom_buttons","sha":"35385460661c80ff21888c3864f1698cb2b26eb1","user":{"login":"timsnyder","id":83846,"avatar_url":"https://avatars.githubusercontent.com/u/83846?v=3","gravatar_id":"","url":"https://api.github.com/users/timsnyder","html_url":"https://github.com/timsnyder","followers_url":"https://api.github.com/users/timsnyder/followers","following_url":"https://api.github.com/users/timsnyder/following{/other_user}","gists_url":"https://api.github.com/users/timsnyder/gists{/gist_id}","starred_url":"https://api.github.com/users/timsnyder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/timsnyder/subscriptions","organizations_url":"https://api.github.com/users/timsnyder/orgs","repos_url":"https://api.github.com/users/timsnyder/repos","events_url":"https://api.github.com/users/timsnyder/events{/privacy}","received_events_url":"https://api.github.com/users/timsnyder/received_events","type":"User","site_admin":false},"repo":{"id":63422444,"name":"bokeh","full_name":"timsnyder/bokeh","owner":{"login":"timsnyder","id":83846,"avatar_url":"https://avatars.githubusercontent.com/u/83846?v=3","gravatar_id":"","url":"https://api.github.com/users/timsnyder","html_url":"https://github.com/timsnyder","followers_url":"https://api.github.com/users/timsnyder/followers","following_url":"https://api.github.com/users/timsnyder/following{/other_user}","gists_url":"https://api.github.com/users/timsnyder/gists{/gist_id}","starred_url":"https://api.github.com/users/timsnyder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/timsnyder/subscriptions","organizations_url":"https://api.github.com/users/timsnyder/orgs","repos_url":"https://api.github.com/users/timsnyder/repos","events_url":"https://api.github.com/users/timsnyder/events{/privacy}","received_events_url":"https://api.github.com/users/timsnyder/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/timsnyder/bokeh","description":"Interactive Web Plotting for Python","fork":true,"url":"https://api.github.com/repos/timsnyder/bokeh","forks_url":"https://api.github.com/repos/timsnyder/bokeh/forks","keys_url":"https://api.github.com/repos/timsnyder/bokeh/keys{/key_id}","collaborators_url":"https://api.github.com/repos/timsnyder/bokeh/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/timsnyder/bokeh/teams","hooks_url":"https://api.github.com/repos/timsnyder/bokeh/hooks","issue_events_url":"https://api.github.com/repos/timsnyder/bokeh/issues/events{/number}","events_url":"https://api.github.com/repos/timsnyder/bokeh/events","assignees_url":"https://api.github.com/repos/timsnyder/bokeh/assignees{/user}","branches_url":"https://api.github.com/repos/timsnyder/bokeh/branches{/branch}","tags_url":"https://api.github.com/repos/timsnyder/bokeh/tags","blobs_url":"https://api.github.com/repos/timsnyder/bokeh/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/timsnyder/bokeh/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/timsnyder/bokeh/git/refs{/sha}","trees_url":"https://api.github.com/repos/timsnyder/bokeh/git/trees{/sha}","statuses_url":"https://api.github.com/repos/timsnyder/bokeh/statuses/{sha}","languages_url":"https://api.github.com/repos/timsnyder/bokeh/languages","stargazers_url":"https://api.github.com/repos/timsnyder/bokeh/stargazers","contributors_url":"https://api.github.com/repos/timsnyder/bokeh/contributors","subscribers_url":"https://api.github.com/repos/timsnyder/bokeh/subscribers","subscription_url":"https://api.github.com/repos/timsnyder/bokeh/subscription","commits_url":"https://api.github.com/repos/timsnyder/bokeh/commits{/sha}","git_commits_url":"https://api.github.com/repos/timsnyder/bokeh/git/commits{/sha}","comments_url":"https://api.github.com/repos/timsnyder/bokeh/comments{/number}","issue_comment_url":"https://api.github.com/repos/timsnyder/bokeh/issues/comments{/number}","contents_url":"https://api.github.com/repos/timsnyder/bokeh/contents/{+path}","compare_url":"https://api.github.com/repos/timsnyder/bokeh/compare/{base}...{head}","merges_url":"https://api.github.com/repos/timsnyder/bokeh/merges","archive_url":"https://api.github.com/repos/timsnyder/bokeh/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/timsnyder/bokeh/downloads","issues_url":"https://api.github.com/repos/timsnyder/bokeh/issues{/number}","pulls_url":"https://api.github.com/repos/timsnyder/bokeh/pulls{/number}","milestones_url":"https://api.github.com/repos/timsnyder/bokeh/milestones{/number}","notifications_url":"https://api.github.com/repos/timsnyder/bokeh/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/timsnyder/bokeh/labels{/name}","releases_url":"https://api.github.com/repos/timsnyder/bokeh/releases{/id}","deployments_url":"https://api.github.com/repos/timsnyder/bokeh/deployments","created_at":"2016-07-15T13:05:06Z","updated_at":"2016-08-15T14:16:15Z","pushed_at":"2016-09-18T23:40:02Z","git_url":"git://github.com/timsnyder/bokeh.git","ssh_url":"git@github.com:timsnyder/bokeh.git","clone_url":"https://github.com/timsnyder/bokeh.git","svn_url":"https://github.com/timsnyder/bokeh","homepage":"http://bokeh.pydata.org/en/latest/","size":131073,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"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":"bokeh:master","ref":"master","sha":"568c4ed7963f478f9214974a0c3e6566ade2679a","user":{"login":"bokeh","id":8440965,"avatar_url":"https://avatars.githubusercontent.com/u/8440965?v=3","gravatar_id":"","url":"https://api.github.com/users/bokeh","html_url":"https://github.com/bokeh","followers_url":"https://api.github.com/users/bokeh/followers","following_url":"https://api.github.com/users/bokeh/following{/other_user}","gists_url":"https://api.github.com/users/bokeh/gists{/gist_id}","starred_url":"https://api.github.com/users/bokeh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bokeh/subscriptions","organizations_url":"https://api.github.com/users/bokeh/orgs","repos_url":"https://api.github.com/users/bokeh/repos","events_url":"https://api.github.com/users/bokeh/events{/privacy}","received_events_url":"https://api.github.com/users/bokeh/received_events","type":"Organization","site_admin":false},"repo":{"id":3834332,"name":"bokeh","full_name":"bokeh/bokeh","owner":{"login":"bokeh","id":8440965,"avatar_url":"https://avatars.githubusercontent.com/u/8440965?v=3","gravatar_id":"","url":"https://api.github.com/users/bokeh","html_url":"https://github.com/bokeh","followers_url":"https://api.github.com/users/bokeh/followers","following_url":"https://api.github.com/users/bokeh/following{/other_user}","gists_url":"https://api.github.com/users/bokeh/gists{/gist_id}","starred_url":"https://api.github.com/users/bokeh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bokeh/subscriptions","organizations_url":"https://api.github.com/users/bokeh/orgs","repos_url":"https://api.github.com/users/bokeh/repos","events_url":"https://api.github.com/users/bokeh/events{/privacy}","received_events_url":"https://api.github.com/users/bokeh/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/bokeh/bokeh","description":"Interactive Web Plotting for Python","fork":false,"url":"https://api.github.com/repos/bokeh/bokeh","forks_url":"https://api.github.com/repos/bokeh/bokeh/forks","keys_url":"https://api.github.com/repos/bokeh/bokeh/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bokeh/bokeh/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bokeh/bokeh/teams","hooks_url":"https://api.github.com/repos/bokeh/bokeh/hooks","issue_events_url":"https://api.github.com/repos/bokeh/bokeh/issues/events{/number}","events_url":"https://api.github.com/repos/bokeh/bokeh/events","assignees_url":"https://api.github.com/repos/bokeh/bokeh/assignees{/user}","branches_url":"https://api.github.com/repos/bokeh/bokeh/branches{/branch}","tags_url":"https://api.github.com/repos/bokeh/bokeh/tags","blobs_url":"https://api.github.com/repos/bokeh/bokeh/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bokeh/bokeh/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bokeh/bokeh/git/refs{/sha}","trees_url":"https://api.github.com/repos/bokeh/bokeh/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bokeh/bokeh/statuses/{sha}","languages_url":"https://api.github.com/repos/bokeh/bokeh/languages","stargazers_url":"https://api.github.com/repos/bokeh/bokeh/stargazers","contributors_url":"https://api.github.com/repos/bokeh/bokeh/contributors","subscribers_url":"https://api.github.com/repos/bokeh/bokeh/subscribers","subscription_url":"https://api.github.com/repos/bokeh/bokeh/subscription","commits_url":"https://api.github.com/repos/bokeh/bokeh/commits{/sha}","git_commits_url":"https://api.github.com/repos/bokeh/bokeh/git/commits{/sha}","comments_url":"https://api.github.com/repos/bokeh/bokeh/comments{/number}","issue_comment_url":"https://api.github.com/repos/bokeh/bokeh/issues/comments{/number}","contents_url":"https://api.github.com/repos/bokeh/bokeh/contents/{+path}","compare_url":"https://api.github.com/repos/bokeh/bokeh/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bokeh/bokeh/merges","archive_url":"https://api.github.com/repos/bokeh/bokeh/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bokeh/bokeh/downloads","issues_url":"https://api.github.com/repos/bokeh/bokeh/issues{/number}","pulls_url":"https://api.github.com/repos/bokeh/bokeh/pulls{/number}","milestones_url":"https://api.github.com/repos/bokeh/bokeh/milestones{/number}","notifications_url":"https://api.github.com/repos/bokeh/bokeh/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bokeh/bokeh/labels{/name}","releases_url":"https://api.github.com/repos/bokeh/bokeh/releases{/id}","deployments_url":"https://api.github.com/repos/bokeh/bokeh/deployments","created_at":"2012-03-26T15:40:01Z","updated_at":"2016-09-19T00:10:41Z","pushed_at":"2016-09-19T00:02:40Z","git_url":"git://github.com/bokeh/bokeh.git","ssh_url":"git@github.com:bokeh/bokeh.git","clone_url":"https://github.com/bokeh/bokeh.git","svn_url":"https://github.com/bokeh/bokeh","homepage":"http://bokeh.pydata.org/en/latest/","size":183940,"stargazers_count":4634,"watchers_count":4634,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":1053,"mirror_url":null,"open_issues_count":726,"forks":1053,"open_issues":726,"watchers":4634,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/bokeh/bokeh/pulls/4841"},"html":{"href":"https://github.com/bokeh/bokeh/pull/4841"},"issue":{"href":"https://api.github.com/repos/bokeh/bokeh/issues/4841"},"comments":{"href":"https://api.github.com/repos/bokeh/bokeh/issues/4841/comments"},"review_comments":{"href":"https://api.github.com/repos/bokeh/bokeh/pulls/4841/comments"},"review_comment":{"href":"https://api.github.com/repos/bokeh/bokeh/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/bokeh/bokeh/pulls/4841/commits"},"statuses":{"href":"https://api.github.com/repos/bokeh/bokeh/statuses/35385460661c80ff21888c3864f1698cb2b26eb1"}}}}
{"actor":{"display_login":"timsnyder"}}