def __init__(self, parent, callback, icon):
        self.parent = parent
        self.callback = callback
        self.icon = icon

        self.window = Tkinter.Toplevel(parent)
        self.window.withdraw()
        self.window.title('Translation progress')
        self.window.transient(parent)
        self.window.group(parent)
        self.window.protocol('WM_DELETE_WINDOW', self.stub)
        self.window.tk.call('wm', 'iconbitmap', self.window, self.icon)

        self.win_panel = TFrame(self.window, borderwidth=10)
        self.win_panel.pack(side=TOP, fill=BOTH)

        top_panel = TFrame(self.win_panel)
        top_panel.pack(side=TOP, fill=X, pady=5)
        self.label1_reference = StringVar(self.window)
        self.label1 = TLabel(top_panel, textvariable=self.label1_reference)
        self.label1.pack(side=LEFT)
        self.label1_reference.set('Start...')

        mid_panel = TFrame(self.win_panel)
        mid_panel.pack(side=TOP, fill=X)
        self.label2_reference = StringVar(self.window)
        self.label2 = TLabel(mid_panel, textvariable=self.label2_reference)
        self.label2.pack(side=LEFT)
        self.label2_reference.set('')

        self.progress_reference = IntVar(self.window)
        self.progress_bar = Ttk.TProgressbar(self.win_panel,
                                             orient='horizontal',
                                             length=450,
                                             variable=self.progress_reference)
        self.progress_bar.pack(side=TOP, anchor='w')
        self.progress_reference.set(10)

        self.window.resizable(False, False)
        self.set_position()
        self.window.deiconify()
    def __init__(self, icon, options, filetypes, file=None, app_ver=None):
        self.icon = icon
        self.options = options
        self.encoding = sys.getfilesystemencoding()
        if self.encoding is None:
            self.encoding = sys.getdefaultencoding()
        if not app_ver is None:
            self.app_ver = app_ver

        exit_message = 'Cancel'
        if not file is None:
            if os.path.isfile(file): self.file = file
        self.filetypes = filetypes

        self.window = Tkinter.Tk()
        self.window.withdraw()
        self.window.title('UniConvertor ' + self.app_ver)
        self.window.tk.call('wm', 'iconbitmap', self.window, self.icon)

        self.win_panel = TFrame(self.window, borderwidth=10)
        self.win_panel.pack(side=TOP, fill=Tkinter.BOTH, expand=1)

        #File selection
        file_panel = TFrame(self.win_panel)

        label = TLabel(file_panel, text='File: ')
        label.pack(side=LEFT, padx=5)

        self.file_button = TButton(file_panel,
                                   text='...',
                                   command=self.openFile,
                                   width=0)
        self.file_button.pack(side=RIGHT)

        self.file_reference = StringVar(self.window)
        self.file_reference.set('<None>')

        self.file_entry = TEntry(file_panel,
                                 text='<None>',
                                 state='readonly',
                                 textvariable=self.file_reference)
        self.file_entry.pack(side=RIGHT, fill=X, expand=1)

        if self.file is None:
            file_panel.pack(side=TOP, fill=X)
            self.stand_alone = True

        #Formats
        label = TLabel(self.win_panel, text=' Convert to: ')
        label.pack(side=TOP, padx=5)

        format_frame = TLabelframe(self.win_panel,
                                   labelwidget=label,
                                   borderwidth=2)
        format_frame.pack(side=TOP, fill=Tkinter.X, expand=1, pady=2)

        formats = []
        for item in self.options:
            formats.append(item[0])

        self.format_reference = StringVar(self.window)
        self.format_reference.set(self.options[1][0])

        self.format_combo = TCombobox(format_frame,
                                      values=formats,
                                      width=50,
                                      state='readonly',
                                      textvariable=self.format_reference)
        self.format_combo.pack(expand=1, padx=10, pady=10)

        #Buttons
        button_panel = TFrame(self.win_panel)
        button_panel.pack(side=BOTTOM, fill=X, expand=1, pady=5)

        self.but_close = TButton(button_panel,
                                 text='Cancel',
                                 width=10,
                                 command=self.close)
        self.but_close.pack(side=RIGHT)

        self.but_convert = TButton(button_panel,
                                   text='Convert',
                                   width=10,
                                   command=self.convert)
        self.but_convert.pack(side=RIGHT, padx=10)
        if self.file is None:
            self.but_convert['state'] = 'disabled'
            self.but_close['text'] = 'Close'

        label = TLabel(button_panel,
                       text='http://sk1project.org',
                       state='disabled')
        label.pack(side=LEFT, anchor='sw')

        self.window.resizable(False, False)
        self.set_position()
        self.window.deiconify()