diff --git a/src/Editor/Editor.php b/src/Editor/Editor.php index 3bf69a3..ea46af0 100644 --- a/src/Editor/Editor.php +++ b/src/Editor/Editor.php @@ -174,6 +174,8 @@ class Editor 'value' => "Insert Value", 'object' => "Insert Object{}", 'array' => "Insert Array[]", + 'sep0' => "---", + '__paste' => "Paste from clipboard", ], 'Insert'); $this->redrawInfoBar([ '^C' => 'Cancel', '↑/↓' => 'Select option', 'Enter' => 'Accept' ]); $sel = $menu->display(0, 0, 30, 0, "value"); diff --git a/src/Editor/Menu.php b/src/Editor/Menu.php index 294e230..b613e26 100644 --- a/src/Editor/Menu.php +++ b/src/Editor/Menu.php @@ -81,7 +81,7 @@ class Menu private function redraw(int $left, int $top, int $width, int $height) { - $visibleItems = $height - 4; + $visibleItems = $height - 2; $scrollTop = $this->scroll; $scrollVisible = $visibleItems / count($this->items); // / $visibleItems; @@ -93,24 +93,30 @@ class Menu echo "\e[40;37m"; $this->terminal ->writeAt($left, $top + 0, self::U_CORNER_ROUNDED_TOPLEFT.str_repeat(self::U_EDGE_HORIZONTAL,$width - 2).self::U_CORNER_ROUNDED_TOPRIGHT) - ->writeAt($left, $top + 1, self::U_EDGE_VERTICAL.str_repeat(" ",$width - 2).self::U_EDGE_VERTICAL) - ->writeAt($left + 2, $top + 1, "\e[1m" . $this->title . "\e[22m") - ->writeAt($left, $top + 2, self::U_EDGE_VERTICAL_RIGHT.str_repeat(self::U_EDGE_HORIZONTAL,$width - 2).self::U_EDGE_VERTICAL_LEFT) + //->writeAt($left, $top + 1, self::U_EDGE_VERTICAL.str_repeat(" ",$width - 2).self::U_EDGE_VERTICAL) + //->writeAt($left + 2, $top + 1, "\e[1m" . $this->title . "\e[22m") + //->writeAt($left, $top + 2, self::U_EDGE_VERTICAL_RIGHT.str_repeat(self::U_EDGE_HORIZONTAL,$width - 2).self::U_EDGE_VERTICAL_LEFT) ->writeAt($left, $top + $height - 1, self::U_CORNER_BOTTOMLEFT.str_repeat(self::U_EDGE_HORIZONTAL,$width - 2).self::U_CORNER_BOTTOMRIGHT) ; $keys = array_keys($this->items); for ($n = 0; $n < $visibleItems; $n++) { $key = $keys[$n]??null; - $item = " " . ($key ? ($this->items[$key]) : null); - $item = $item . str_repeat(" ", $width - 2 - $this->itemlen($item)) . "\e[40;37m"; - $item = (($n == $this->index)?"\e[37;44m":"\e[40;37m") . $item; + $item = ($key ? ($this->items[$key]) : null); + if ($item === "---") { + $item = "\e[2m".str_repeat("\u{2500}", $width - 2)."\e[22m"; + } elseif (is_null($item)) { + $item = str_repeat(" ", $width - 2); + } else { + $item = " " . $item . str_repeat(" ", $width - 3 - $this->itemlen($item)) . "\e[40;37m"; + $item = (($n == $this->index)?"\e[37;44m":"\e[40;37m") . $item; + } if ($n >= $thumbTop && $n <= $thumbBottom) { $scrollbar = "\e[97;1m".self::U_EDGE_VERTICAL_THUMB."\e[40;37;22m"; } else { $scrollbar = "\e[37;2m".self::U_EDGE_VERTICAL_SCROLL."\e[40;37;22m"; } $this->terminal - ->writeAt($left, $top + 3 + $n, self::U_EDGE_VERTICAL.$item.$scrollbar); + ->writeAt($left, $top + 1 + $n, self::U_EDGE_VERTICAL.$item.$scrollbar); } echo "\e[0m"; } diff --git a/src/List/TreeList.php b/src/List/TreeList.php index 51f75e1..89797f9 100644 --- a/src/List/TreeList.php +++ b/src/List/TreeList.php @@ -175,14 +175,14 @@ class TreeList implements Countable if ($entry->node instanceof ArrayNode) { echo "[" . (Settings::$compactGroups ? "…]":""); if ($entry->node->isCollapsed()) { - echo " \e[90m\u{25ba} \e[2m".count($entry->node->items)."\e[22m"; + echo " \e[90m\u{25ba} \e[2m[".count($entry->node->items)."]\e[22m"; } else { echo " \e[90m\u{25bc}"; } } elseif ($entry->node instanceof ObjectNode) { echo "{" . (Settings::$compactGroups ? "…}":""); if ($entry->node->isCollapsed()) { - echo " \e[90m\u{25ba} \e[2m".count($entry->node->properties)."\e[22m"; + echo " \e[90m\u{25ba} \e[2m".join(", ",array_keys($entry->node->properties))."\e[22m"; } else { echo " \e[90m\u{25bc}"; }