From 3058e526badb5555dc1168838c048d3c0b9e1791 Mon Sep 17 00:00:00 2001 From: Chiel92 Date: Tue, 22 Jan 2013 21:32:05 +0100 Subject: [PATCH] sample files added --- ftplugin/html.vim | 2 +- samples/html-test.html | 4 + samples/python-test.py | 210 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 215 insertions(+), 1 deletion(-) create mode 100644 samples/html-test.html create mode 100644 samples/python-test.py diff --git a/ftplugin/html.vim b/ftplugin/html.vim index 881e40b..c7a022d 100644 --- a/ftplugin/html.vim +++ b/ftplugin/html.vim @@ -5,7 +5,7 @@ let b:did_ftplugin = 1 "Set the formatter name and arguments for this filetype let s:prgname = "tidy" -let s:arguments = "-q --show-errors 0 --show-warnings 0 --indent auto --indent-spaces 2 --vertical-space yes --tidy-mark no" +let s:arguments = "-q --show-errors 0 --show-warnings 0 --indent auto --indent-spaces 2 --vertical-space yes --tidy-mark no --wrap 68" "Set the formatprg option, if the formatter is installed "globally or in the formatters/ folder diff --git a/samples/html-test.html b/samples/html-test.html new file mode 100644 index 0000000..9c61ccf --- /dev/null +++ b/samples/html-test.html @@ -0,0 +1,4 @@ +Google Gebruikers van schermlezers kunnen hier klikken om Google Instant uit te schakelen.

diff --git a/samples/python-test.py b/samples/python-test.py new file mode 100644 index 0000000..b4feb40 --- /dev/null +++ b/samples/python-test.py @@ -0,0 +1,210 @@ +#! /usr/bin/env python +"""Tkinter-based GUI for websucker. +Easy use: type or paste source URL and destination directory in +their respective text boxes,click GO or hit return,and presto. +""" +from Tkinter import * +import Tkinter +import websucker +import sys +import os +import threading +import Queue +import time +VERBOSE=2 +try: + class Canceled(Exception): + "Exception used to cancel run()." +except (NameError,TypeError): + Canceled=__name__ + ".Canceled" +class SuckerThread(websucker.Sucker): + stopit=0 + savedir=None + rootdir=None + def __init__(self,msgq): + self.msgq=msgq + websucker.Sucker.__init__(self) + self.setflags(verbose=VERBOSE) + self.urlopener.addheaders=[ + ('User-agent','websucker/%s' % websucker.__version__), + ] + def message(self,format,*args): + if args: + format=format%args + ##print format + self.msgq.put(format) + def run1(self,url): + try: + try: + self.reset() + self.addroot(url) + self.run() + except Canceled: + self.message("[canceled]") + else: + self.message("[done]") + finally: + self.msgq.put(None) + def savefile(self,text,path): + if self.stopit: + raise Canceled + websucker.Sucker.savefile(self,text,path) + def getpage(self,url): + if self.stopit: + raise Canceled + return websucker.Sucker.getpage(self,url) + def savefilename(self,url): + path=websucker.Sucker.savefilename(self,url) + if self.savedir: + n=len(self.rootdir) + if path[:n] == self.rootdir: + path=path[n:] + while path[:1] == os.sep: + path=path[1:] + path=os.path.join(self.savedir,path) + return path + def XXXaddrobot(self,*args): + pass + def XXXisallowed(self,*args): + return 1 + +class App: + sucker=None + msgq=None + def __init__(self,top): + self.top=top + top.columnconfigure(99,weight=1) + self.url_label=Label(top,text="URL:") + self.url_label.grid(row=0,column=0,sticky='e') + self.url_entry=Entry(top,width=60,exportselection=0) + self.url_entry.grid(row=0,column=1,sticky='we', + columnspan=99) + self.url_entry.focus_set() + self.url_entry.bind("",self.go) + self.dir_label=Label(top,text="Directory:") + self.dir_label.grid(row=1,column=0,sticky='e') + self.dir_entry=Entry(top) + self.dir_entry.grid(row=1,column=1,sticky='we', + columnspan=99) + self.go_button=Button(top,text="Go",command=self.go) + self.go_button.grid(row=2,column=1,sticky='w') + self.cancel_button=Button(top,text="Cancel", + command=self.cancel, + state=DISABLED) + self.cancel_button.grid(row=2,column=2,sticky='w') + self.auto_button=Button(top,text="Paste+Go", + command=self.auto) + self.auto_button.grid(row=2,column=3,sticky='w') + self.status_label=Label(top,text="[idle]") + self.status_label.grid(row=2,column=4,sticky='w') + self.top.update_idletasks() + self.top.grid_propagate(0) + def message(self,text,*args): + if args: + text=text % args + self.status_label.config(text=text) + def check_msgq(self): + while not self.msgq.empty(): + msg=self.msgq.get() + if msg is None: + self.go_button.configure(state=NORMAL) + self.auto_button.configure(state=NORMAL) + self.cancel_button.configure(state=DISABLED) + if self.sucker: + self.sucker.stopit=0 + self.top.bell() + else: + self.message(msg) + self.top.after(100,self.check_msgq) + def go(self,event=None): + if not self.msgq: + self.msgq=Queue.Queue(0) + self.check_msgq() + if not self.sucker: + self.sucker=SuckerThread(self.msgq) + if self.sucker.stopit: + return + self.url_entry.selection_range(0,END) + url=self.url_entry.get() + url=url.strip() + if not url: + self.top.bell() + self.message("[Error: No URL entered]") + return + self.rooturl=url + dir=self.dir_entry.get().strip() + if not dir: + self.sucker.savedir=None + else: + self.sucker.savedir=dir + self.sucker.rootdir=os.path.dirname( + websucker.Sucker.savefilename(self.sucker,url)) + self.go_button.configure(state=DISABLED) + self.auto_button.configure(state=DISABLED) + self.cancel_button.configure(state=NORMAL) + self.message( '[running...]') + self.sucker.stopit=0 + t=threading.Thread(target=self.sucker.run1,args=(url,)) + t.start() + def cancel(self): + if self.sucker: + self.sucker.stopit=1 + self.message("[canceling...]") + def auto(self): + tries=['PRIMARY','CLIPBOARD'] + text="" + for t in tries: + try: + text=self.top.selection_get(selection=t) + except TclError: + continue + text=text.strip() + if text: + break + if not text: + self.top.bell() + self.message("[Error: clipboard is empty]") + return + self.url_entry.delete(0,END) + self.url_entry.insert(0,text) + self.go() + +class AppArray: + def __init__(self,top=None): + if not top: + top=Tk() + top.title("websucker GUI") + top.iconname("wsgui") + top.wm_protocol('WM_DELETE_WINDOW',self.exit) + self.top=top + self.appframe=Frame(self.top) + self.appframe.pack(fill='both') + self.applist=[] + self.exit_button=Button(top,text="Exit",command=self.exit) + self.exit_button.pack(side=RIGHT) + self.new_button=Button(top,text="New",command=self.addsucker) + self.new_button.pack(side=LEFT) + self.addsucker() + ##self.applist[0].url_entry.insert(END,"http://www.python.org/doc/essays/") + def addsucker(self): + self.top.geometry("") + frame=Frame(self.appframe,borderwidth=2,relief=GROOVE) + frame.pack(fill='x') + app=App(frame) + self.applist.append(app) + done=0 + def mainloop(self): + while not self.done: + time.sleep(0.1) + self.top.update() + def exit(self): + for app in self.applist: + app.cancel() + app.message("[exiting...]") + self.done=1 + +def main(): + AppArray().mainloop() +if __name__ == '__main__': + main() +