Skip to content

Commit

Permalink
multiwindow finished. TODO: test
Browse files Browse the repository at this point in the history
  • Loading branch information
qiray committed May 30, 2018
1 parent aed270c commit e285e1f
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 119 deletions.
54 changes: 0 additions & 54 deletions listview.py

This file was deleted.

34 changes: 7 additions & 27 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,11 @@
from .common import UNTITLED_NAME, debug, SYNTAX_EXTENSION
from .show import show, first
from .treeview import Tree
from .listview import List
from .GotoWindow import focus_window
else: # ST2 imports
from common import UNTITLED_NAME, debug, SYNTAX_EXTENSION
from show import show, first
from treeview import Tree
from listview import List
from GotoWindow import focus_window

def view_name(view):
Expand Down Expand Up @@ -65,13 +63,6 @@ def generate_trees(view_list, localtrees):
count += 1
return result

def generate_list(view_list):
result = List()
for view in view_list:
name = view_name(view)
result.add_filename(name, view.id(), is_file=False if view.file_name() is None else True)
return result

def draw_view(window, edit, view_object, focus=False, other_window=False):
plugin_settings = sublime.load_settings('opened_files.sublime-settings')
group_position = plugin_settings.get('group_position')
Expand All @@ -97,7 +88,6 @@ class OpenedFilesCommand(sublime_plugin.TextCommand): #view.run_command('opened_

OPENED_FILES_VIEW = None
trees = []
files_list = List()

def run(self, edit, focus=False, other_window=False):
window = self.view.window()
Expand All @@ -119,13 +109,8 @@ def run(self, edit, focus=False, other_window=False):
else:
view_list[count].append(view)
count += 1
plugin_settings = sublime.load_settings('opened_files.sublime-settings')
if plugin_settings.get('tree_view'): #treeview
OpenedFilesCommand.trees = generate_trees(view_list, OpenedFilesCommand.trees)
draw_view(window, edit, OpenedFilesCommand.trees, focus, other_window)
else: #listview
OpenedFilesCommand.files_list = generate_list(view_list)
draw_view(window, edit, OpenedFilesCommand.files_list, focus, other_window)
OpenedFilesCommand.trees = generate_trees(view_list, OpenedFilesCommand.trees)
draw_view(window, edit, OpenedFilesCommand.trees, focus, other_window)

class OpenedFilesActCommand(sublime_plugin.TextCommand):
def run(self, edit, act='default'):
Expand All @@ -135,15 +120,6 @@ def run(self, edit, act='default'):
def open_file(self, edit, selection, act):
window = self.view.window()
(row, _) = self.view.rowcol(selection.begin())

plugin_settings = sublime.load_settings('opened_files.sublime-settings')
if not plugin_settings.get('tree_view'): #list view
view_id = OpenedFilesCommand.files_list.get_view_id(row + 1)
view = first(window.views(), lambda v: v.id() == view_id)
window.focus_view(view)
goto_linenumber = row + 1
return

curtree = 0
length, prevlength = 0, 0
for tree in OpenedFilesCommand.trees: #calc used tree
Expand All @@ -156,14 +132,18 @@ def open_file(self, edit, selection, act):
action = OpenedFilesCommand.trees[curtree].get_action(row - prevlength)
if action is None:
return
node = OpenedFilesCommand.trees[curtree].nodes[action['id']]
if 'id' in action:
node = OpenedFilesCommand.trees[curtree].nodes[action['id']]
goto_linenumber = row + 1
if action['action'] == 'file' and act == 'default':
for win in sublime.windows():
view = first(win.views(), lambda v: v.id() == action['view_id'])
if view:
focus_window(win, view)
break
elif action['action'] == 'window':
OpenedFilesCommand.trees[curtree].hidden = not OpenedFilesCommand.trees[curtree].hidden
draw_view(window, edit, OpenedFilesCommand.trees)
elif action['action'] == 'fold' and act != 'unfold':
OpenedFilesCommand.trees[curtree].nodes[action['id']].status = 'unfold'
draw_view(window, edit, OpenedFilesCommand.trees)
Expand Down
106 changes: 68 additions & 38 deletions treeview.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,11 @@ def print_children(self, array, actions_map, length, stringnum):

class Tree(object):
tree_size = 0
tree_view = False

def __init__(self, name = ""):
self.name = name
self.hidden = False
self.hidden = False #if True then hide this window's tree
self.nodes = {}
self.parents = {}
self.opened_views = {}
Expand Down Expand Up @@ -93,49 +94,62 @@ def add_filename(self, filename, view_id, is_file):
else:
self.nodes[name] = Node(name, {}, 'file', os.sep.join(arr[:i - 1]), view_id)

def __str__(self):
result = ''
if self.hidden:
result = '▸ ' + self.name
else:
result = '▾ ' + self.name
self.actions_map.clear()
def draw_list(self, result):
stringnum = 1
length = 0 if self.name == '' else 1
nodes = sorted(self.nodes)
nodes.sort(key=lambda x: x.split(os.sep)[-1]) #sort by short filenames
for name in nodes:
node = self.nodes[name]
if node.view_id:
temp, stringnum = node.print_children(self.nodes, self.actions_map, length, stringnum)
result += temp
self.size = stringnum
return result

def prepare_default_tree(self, printed_parents):
result = []
for name in printed_parents:
tempname = name
flag = True
while len(self.nodes[tempname].children) == 1:
tempname = sorted(self.nodes[tempname].children)[0]
if self.nodes[tempname].status == 'file':
tempname = self.nodes[tempname].parent
result.append(tempname)
flag = False
break
if flag:
result.append(tempname)
result.sort(key=lambda x: x.split(os.sep)[-1].lower())
return result

def prepare_notfull_tree(self, printed_parents):
result = []
while len(printed_parents) == 1:
key = printed_parents[0]
result = sorted(self.nodes[key].children)
result.sort(key=lambda x: self.nodes[x].status == 'file')
flag = False
for filename in result:
if self.nodes[filename].status == 'file':
flag = True
break
if flag:
break
printed_parents = result
return printed_parents

def draw_tree(self, result):
printed_parents = sorted(self.parents) #dict here becomes list!
printed_parents.sort(key=lambda x: self.nodes[x].status == 'file')
plugin_settings = sublime.load_settings('opened_files.sublime-settings')
Tree.tree_size = plugin_settings.get('tree_size')
if Tree.tree_size != 'default' and Tree.tree_size != 'full' and Tree.tree_size != 'medium':
Tree.tree_size = 'default'
if Tree.tree_size != 'full':
while len(printed_parents) == 1:
key = printed_parents[0]
templist = sorted(self.nodes[key].children)
templist.sort(key=lambda x: self.nodes[x].status == 'file')
flag = False
for filename in templist:
if self.nodes[filename].status == 'file':
flag = True
break
if flag:
break
printed_parents = templist
stringnum = 1
printed_parents = self.prepare_notfull_tree(printed_parents)
if Tree.tree_size == 'default':
templist = []
for name in printed_parents:
tempname = name
flag = True
while len(self.nodes[tempname].children) == 1:
tempname = sorted(self.nodes[tempname].children)[0]
if self.nodes[tempname].status == 'file':
tempname = self.nodes[tempname].parent
templist.append(tempname)
flag = False
break
if flag:
templist.append(tempname)
templist.sort(key=lambda x: x.split(os.sep)[-1].lower())
printed_parents = templist
printed_parents = self.prepare_default_tree(printed_parents)
stringnum = 1
length = 0 if self.name == '' else 1
for name in printed_parents:
temp, stringnum = self.nodes[name].print_children(self.nodes, self.actions_map, length, stringnum)
Expand All @@ -146,6 +160,19 @@ def __str__(self):
self.size = stringnum
return result

def __str__(self):
self.actions_map.clear()
self.actions_map.set_window_action()
if self.hidden:
return '▸ ' + self.name
result = '▾ ' + self.name
plugin_settings = sublime.load_settings('opened_files.sublime-settings')
Tree.tree_size = plugin_settings.get('tree_size')
Tree.tree_view = plugin_settings.get('tree_view')
if not Tree.tree_view:
return self.draw_list(result)
return self.draw_tree(result)

def get_action(self, number):
return self.actions_map.get_action(number)

Expand All @@ -155,6 +182,9 @@ def __init__(self):
self.map = {}
self.count = 0

def set_window_action(self):
self.map[0] = {'action' : "window"}

def add_action(self, node):
self.count += 1
self.map[self.count] = {'action' : node.status, 'id' : node.node_id, 'view_id' : node.view_id}
Expand Down

0 comments on commit e285e1f

Please sign in to comment.