Jestem w trakcie nauki tworzenia wtyczek Sublime Text 2. Jedną z rzeczy, które chciałbym zrobić, to wziąć zaznaczony tekst, sprawdzić, czy strona internetowa zwróci 200 pod tym adresem, a następnie umieścić niektóre informacje w szybkim panelu (i tak, wiem, że powinienem robić adres URL wyszukiwanie w wątku, aby nie blokował głównego interfejsu użytkownika). Obecnie mam:Uzyskiwanie dostępu do Szybkiego panelu w sublime Text 2 Plugin
import sublime
import sublime_plugin
import urllib2
class CheckUrlPanel(sublime_plugin.WindowCommand):
def quick_panel(self, messages, flags):
self.window.show_quick_panel(messages, None, flags)
class CheckUrlsCommand(sublime_plugin.TextCommand):
def run(self, edit):
urls = []
selections = self.view.sel()
for selection in selections:
urls.append(self.view.substr(selection))
messages = self.validate_urls(urls)
panel = CheckUrlPanel()
panel.quick_panel(messages, sublime.MONOSPACE_FONT)
def validate_urls(self, urls):
messages = []
for url in urls:
try:
request = urllib2.Request(url, headers={ "User-Agent" : "Sublime URL Checker" })
response = urllib2.urlopen(request, timeout=3)
message = '"%s" is a valid URL.' % url
except Exception as (e):
message = '"%s" is an invalid URL.' % url
messages.append(message)
return messages
Błąd pojawia się:
Traceback (most recent call last):
File "./sublime_plugin.py", line 362, in run_
File "./CheckUrls.py", line 19, in run
panel = CheckUrlPanel()
TypeError: __init__() takes exactly 2 arguments (1 given)
Problem polega na tym, że nie wiem jak poprawnie zainicjować klasę WindowCommand, a ja nie potrafię znaleźć żadnego dokumentacja na ten temat. Każda pomoc lub wskazówki tutaj będą mile widziane.
Jesteś poprawne. Pomyślałem o tym około 20 minut po tym, jak opublikowałem nagrodę, ale doceniam twoją dokładną odpowiedź, niezależnie od tego. Dziękuję Ci! (Nagrodzę nagrodę tak szybko, jak pozwoli mi na to SO) –