Skip to content

Commit faa737d

Browse files
committed
Previous server adresses in quick panel, cookies are not stored
between sessions, so it is possible to be connected to a protected and an unprotected server.
1 parent 680f4ad commit faa737d

3 files changed

Lines changed: 84 additions & 12 deletions

File tree

Main.sublime-menu

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
[
2+
{
3+
"caption": "Preferences",
4+
"mnemonic": "n",
5+
"id": "preferences",
6+
"children":
7+
[
8+
{
9+
"caption": "Package Settings",
10+
"mnemonic": "P",
11+
"id": "package-settings",
12+
"children":
13+
[
14+
{
15+
"caption": "IPython Notebook",
16+
"children":
17+
[
18+
{
19+
"command": "open_file",
20+
"args": {"file": "${packages}/SublimeIPythonNotebook/README.md"},
21+
"caption": "README"
22+
},
23+
{ "caption": "-" },
24+
{
25+
"command": "open_file",
26+
"args": {"file": "${packages}/SublimeIPythonNotebook/SublimeIPythonNotebook.sublime-settings"},
27+
"caption": "Settings – Default"
28+
},
29+
{
30+
"command": "open_file",
31+
"args": {"file": "${packages}/User/SublimeIPythonNotebook.sublime-settings"},
32+
"caption": "Settings – User"
33+
},
34+
{ "caption": "-" },
35+
{
36+
"command": "open_file",
37+
"args": {"file": "${packages}/SublimeIPythonNotebook/Default.sublime-keymap"},
38+
"caption": "Key Bindings – Default"
39+
},
40+
{
41+
"command": "open_file",
42+
"args": {"file": "${packages}/User/Default (OSX).sublime-keymap",},
43+
"caption": "Key Bindings – User"
44+
},
45+
{ "caption": "-" }
46+
]
47+
}
48+
]
49+
}
50+
]
51+
}
52+
]

ipy_connection.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,11 @@
3434
from http.cookiejar import CookieJar
3535

3636
def install_proxy_opener():
37+
global cookies
3738
cookies=CookieJar()
3839
proxy = ProxyHandler({})
3940
opener = build_opener(proxy, HTTPCookieProcessor(cookies))
4041
install_opener(opener)
41-
return cookies
42-
43-
cookies=install_proxy_opener()
4442

4543
def create_uid():
4644
return str(uuid.uuid4())

subl_ipy_notebook.py

Lines changed: 31 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,26 +26,46 @@ def on_modified(self, view):
2626
nbview.on_modified()
2727

2828
def on_close(self, view):
29-
manager.on_close(view)
29+
manager.on_close(view)
3030

3131

3232
def get_last_used_address():
33-
settings = sublime.load_settings("SublimeIPythonNotebook.sublime-settings")
34-
return settings.get("default_address", "http://127.0.0.1:8888")
33+
settings = sublime.load_settings("SublimeIPythonNotebook.sublime-settings")
34+
lst=settings.get("default_address", [])
35+
return lst if type(lst)==list else [lst]
3536

3637

3738
def set_last_used_address(value):
38-
settings = sublime.load_settings("SublimeIPythonNotebook.sublime-settings")
39-
settings.set("default_address", value)
40-
sublime.save_settings("SublimeIPythonNotebook.sublime-settings")
39+
settings = sublime.load_settings("SublimeIPythonNotebook.sublime-settings")
40+
addresses = get_last_used_address()
41+
if value in addresses:
42+
addresses.pop(addresses.index(value))
43+
settings.set("default_address", [value]+addresses)
44+
sublime.save_settings("SublimeIPythonNotebook.sublime-settings")
4145

4246
class InbPromptListNotebooksCommand(sublime_plugin.WindowCommand):
4347
def run(self):
44-
self.window.show_input_panel("Notebook host:port : ", get_last_used_address(),
48+
self.previous_addresses=get_last_used_address()
49+
if len(self.previous_addresses)==0:
50+
self.new_server()
51+
return
52+
self.previous_addresses += ["New Server"]
53+
self.window.show_quick_panel(self.previous_addresses, self.on_done)
54+
55+
def new_server(self):
56+
self.window.show_input_panel("Notebook host:port : ", "http://127.0.0.1:8888",
4557
self.on_done, None, None)
4658

4759
def on_done(self, line):
48-
self.window.run_command("inb_list_notebooks", {"baseurl": line, "psswd": None})
60+
if line==-1:
61+
return
62+
if type(line)==int:
63+
if line==len(self.previous_addresses)-1:
64+
self.new_server()
65+
else:
66+
self.window.run_command("inb_list_notebooks", {"baseurl": self.previous_addresses[line], "psswd": None})
67+
else:
68+
self.window.run_command("inb_list_notebooks", {"baseurl": line, "psswd": None})
4969

5070
class InbPromptPasswordCommand(sublime_plugin.WindowCommand):
5171
def run(self, baseurl):
@@ -59,6 +79,8 @@ def on_done(self, line):
5979

6080
class InbListNotebooksCommand(sublime_plugin.WindowCommand):
6181
def run(self, baseurl, psswd):
82+
ipy_connection.install_proxy_opener()
83+
6284
self.baseurl = baseurl
6385
nbs = ipy_connection.get_notebooks(baseurl, psswd)
6486
if nbs=='psswd':
@@ -73,7 +95,7 @@ def run(self, baseurl, psswd):
7395
for i, nb in enumerate(nbs):
7496
lst.append(str(i+1) + ": " + nb["name"] + "\n")
7597

76-
self.window.show_quick_panel(lst, self.on_done)
98+
sublime.set_timeout(lambda: self.window.show_quick_panel(lst, self.on_done), 1)
7799

78100
def on_done(self, picked):
79101
if picked == -1:

0 commit comments

Comments
 (0)