_dialogs.py 文件源码

python
阅读 19 收藏 0 点赞 0 评论 0

项目:porcupine 作者: Akuli 项目源码 文件源码
def _dialog(action, last_path):
    # pygments supports so many different kinds of file types that
    # showing them all would be insane
    # TODO: allow configuring which file types are shown
    options = {'filetypes': [("All files", "*")]}

    # the mro thing is there to avoid import cycles (lol)
    tab = porcupine.get_tab_manager().current_tab
    if any(cls.__name__ == 'FileTab' for cls in type(tab).__mro__):
        if tab.filetype.patterns:
            options['filetypes'].insert(
                0, ("%s files" % tab.filetype.name, tab.filetype.patterns))
        elif 'filetypes' in last_options:
            options['filetypes'] = last_options['filetypes']

        if tab.path is not None:
            options['initialdir'] = os.path.dirname(tab.path)
        elif 'initialdir' in last_options:
            options['initialdir'] = last_options['initialdir']

    last_options.clear()
    last_options.update(options)

    if action == 'open':
        assert last_path is None
        options['title'] = "Open Files"

        filenames = [os.path.abspath(file)
                     for file in filedialog.askopenfilenames(**options)]
        if filenames:
            last_options['initialdir'] = os.path.dirname(filenames[0])
        return filenames

    assert action == 'save'
    options['title'] = "Save As"
    if last_path is not None:
        options['initialdir'] = os.path.dirname(last_path)
        options['initialfile'] = os.path.basename(last_path)

    # filename can be '' if the user cancelled
    filename = filedialog.asksaveasfilename(**options)
    if filename:
        filename = os.path.abspath(filename)
        last_options['defaultdir'] = os.path.dirname(filename)
        return filename
    return None
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号