/
CDC-1.2b/
CDC-1.2b/src/
parent $user_interfaces
object $tree_ui

var $root dbref 'tree_ui
var $root child_index 0
var $root fertile 0
var $root manager $tree_ui
var $root owned [$tree_ui]
var $root owners [$]
var $root writable []
var $root readable ['parameters, 'methods, 'code]
var $old_command_environment verb_cache #[]
var $old_command_environment command_cache []
var $old_command_environment shortcuts_cache []
var $has_commands commands [["@tparents * tree *", 'parents_by_tree_cmd], ["@tparents *", 'parents_by_tree_cmd], ["@tkids|@tchildren * tree *", 'children_by_tree_cmd], ["@tkids|@tchildren *", 'children_by_tree_cmd]]
var $has_commands shortcuts []
var $root inited 1

method parents_by_tree_cmd
    arg com, obj, [tree];
    var parents, line, par, colx, col, x;
    
    if (!tree)
        tree = "tree inheritance";
    tree = tosym(sublist(tree.to_list(" "), 2).to_string());
    obj = .match_env_nice(obj);
    if (tree == 'inheritance)
        parents = obj.parents();
    else
        parents = obj.parents_by_tree(tree);
    col = (.linelen()) / 8;
    colx = col * 3;
    line = "Parent" + ((listlen(parents) > 1) ? "s" | "");
    .tell(((((line + " of ") + (obj.namef('ref))) + " in tree ") + tostr(tree)) + ":");
    line = pad(" Name", colx + 2) + pad(" Perms", col - 2);
    .tell((line + pad("Size ", -col)) + "Manager");
    for par in (parents) {
        line = " " + (par.namef('xref));
        line = pad(line, colx + 2);
        line = line + pad(" " + ($object.see_perms(par)), col - 2);
        line = line + pad(tostr(par.size()) + " ", -col);
        line = line + pad($object.get_name(par.manager(), 'namef, ['xref]), colx);
    }
    .tell(line);
.

method children_by_tree_cmd
    arg com, obj, [tree];
    var children, line, child, colx, col, x;
    
    tree = [@tree, "", "inheritance"][2];
    tree = tosym(tree);
    obj = .match_env_nice(obj);
    if (tree == 'inheritance) {
        children = obj.children();
    } else {
        catch ~treenf {
            children = obj.children_by_tree(tree);
        } with handler {
            children = [];
        }
    }
    if (!children) {
        .tell(((("Children of " + (obj.namef('xref))) + "in tree ") + tostr(tree)) + ": ** None **");
    } else {
        col = (.linelen()) / 8;
        colx = col * 3;
        line = "Children" + ((listlen(children) > 1) ? "s" | "");
        .tell(((((line + " of ") + (obj.namef('ref))) + " in tree ") + tostr(tree)) + ":");
        line = pad(" Name", colx + 2) + pad(" Perms", col - 2);
        .tell((line + pad("Size ", -col)) + "Manager");
        for child in (children) {
            line = " " + (child.namef('xref));
            line = pad(line, colx + 2);
            line = line + pad(" " + ($object.see_perms(child)), col - 2);
            line = line + pad(tostr(child.size()) + " ", -col);
            line = line + pad($object.get_name(child.manager(), 'namef, ['xref]), colx);
            .tell(line);
        }
    }
.