Example #1
0
File: fget.py Project: vit-001/fget
class FGetMain(Frame):
    def __init__(self, master=None):
        Frame.__init__(self, master)

        self.url = StringVar(
            value='http://www.bravoerotica.com/hegre/luba/table-for-two/')
        self.name = StringVar(value='%02d.jpg')
        self.start = IntVar(value=1)
        self.end = IntVar(value=12)

        self.base_path = 'e:/out/'

        self.loader = BadFileLoader(self.on_file_loaded,
                                    self.on_all_files_loaded,
                                    self.on_loading_started,
                                    self.on_load_error)

        self.make_widgets()

    def make_widgets(self):
        self.status = StatusBar(self)
        self.status.right('IDLE')

        self.loaded_list = ObjectList(self,
                                      on_click=self.on_loaded_listbox_click)
        self.loaded_list.pack(side=RIGHT, fill=Y)

        frame = Frame(self)
        frame.pack(side=TOP, fill=X)

        self.file_list = ObjectList(frame,
                                    width=15,
                                    on_click=self.on_file_listbox_click)
        self.file_list.pack(side=RIGHT)

        self.block = EntryBlock(frame,
                                callback=self.on_input_data_change,
                                label_width=8)
        self.block.pack(side=TOP, fill=X, expand=NO)
        self.block.add_line('Url', self.url)
        self.block.add_line('Name', self.name)
        self.block.add_line('Start', self.start)
        self.block.add_line('End', self.end)

        self.buttons = ButtonLine(frame)
        self.buttons.pack(side=TOP)
        self.buttons.add_button('Get', self.on_get_button_click)
        self.buttons.add_button('Stop', self.loader.stop)

        self.preview = PreviewFrame(self, temp_dir='e:/out/')
        self.preview.pack(fill=BOTH, expand=YES)

        self.on_input_data_change()

    def on_input_data_change(self):
        self.file_list.clear()

        url = self.url.get()
        path = urlparse(url)
        if path[0] == '': url = 'http://' + url

        filepath = path[1] + '/' + path[2].strip(' /').replace('/', '..')
        fullpath = self.base_path + filepath + '/'

        for i in range(self.start.get(), self.end.get() + 1):
            fname = self.name.get() % i
            fullname = fullpath + fname
            self.file_list.add(FileData(url + fname, fullname, fname))

    def on_get_button_click(self):
        for item in self.file_list:
            self.loader.add(item.url(), item.filename())
        self.loader.start()

    def on_load_error(self, text):
        self.status.center(text)

    def on_file_loaded(self, address, fname):
        self.status.center('Loaded: ' + address)
        self.loaded_list.add(ViewString(fname, 30))

    def on_loading_started(self):
        self.status.left('Loading...')
        self.status.right('BUSY')

    def on_all_files_loaded(self, n):
        self.status.left('Loaded ' + str(n) + ' files')
        self.status.right('IDLE')

    def on_loaded_listbox_click(self, item):
        self.preview.set_picture_from_file(item.get())

    def on_file_listbox_click(self, item):
        print('Click', item.url())
        self.preview.set_picture_from_url(item.url(), str(item))