Browse Source

Исправления после редактирования

SVI 3 năm trước cách đây
mục cha
commit
2a1c2a4b98

+ 1 - 1
libtui/v0/examples/show_app/main.go

@@ -7,7 +7,7 @@ import (
 	"log"
 	"os"
 
-	"p78git.ddns.net/svi/libtui/kernel"
+	"p78git.ddns.net/svi/libtui/lib/kernel"
 )
 
 func main() {

+ 1 - 1
libtui/v0/lib/cursor/cursor.go

@@ -7,7 +7,7 @@ import (
 	"github.com/gdamore/tcell"
 
 	"p78git.ddns.net/svi/libtui/alias"
-	"p78git.ddns.net/svi/libtui/line_cell/cell"
+	"p78git.ddns.net/svi/libtui/lib/line_cell/cell"
 	"p78git.ddns.net/svi/libtui/types"
 )
 

+ 2 - 2
libtui/v0/lib/kernel/kernel.go

@@ -5,8 +5,8 @@ import (
 	"context"
 	"fmt"
 
-	"p78git.ddns.net/svi/libtui/cursor"
-	"p78git.ddns.net/svi/libtui/screen"
+	"p78git.ddns.net/svi/libtui/lib/cursor"
+	"p78git.ddns.net/svi/libtui/lib/screen"
 	"p78git.ddns.net/svi/libtui/types"
 )
 

+ 77 - 0
libtui/v0/lib/line/line_cell/line_cell.go

@@ -0,0 +1,77 @@
+// package line_cell -- строка ячеек
+package line_cell
+
+import (
+	"fmt"
+
+	"github.com/gdamore/tcell"
+
+	"p78git.ddns.net/svi/libtui/alias"
+	"p78git.ddns.net/svi/libtui/lib/line_cell/cell"
+	"p78git.ddns.net/svi/libtui/types"
+)
+
+// LineCell -- строка ячеек
+type LineCell struct {
+	app types.IKernel
+	scr types.IScreen
+	lst []types.ICell
+}
+
+// NewLineCell -- возвращает новую строку ячеек
+func NewLineCell(app types.IKernel) (*LineCell, error) {
+	if app == nil {
+		return nil, fmt.Errorf("NewLineCell(): IApp==nil")
+	}
+	sf := &LineCell{
+		app: app,
+		scr: app.Screen(),
+		lst: make([]types.ICell, 0),
+	}
+	return sf, nil
+}
+
+// Draw -- отрисовывает линию ячеек
+func (sf *LineCell) Draw() {
+	// for adr, _ := range sf.lst {
+	// fmt.Printf("LineCell.Draw(): %v\n", adr)
+	// sf.scr.SetCell(cell)
+	cell := cell.NewCell()
+	cell.SetLit(alias.Lit([]rune("=")[0]))
+	st0 := tcell.StyleDefault
+	st0 = st0.Background(tcell.ColorBlue).Foreground(tcell.ColorYellow)
+	cell.SetStyle(alias.Style(st0))
+	x0, y0 := sf.app.Cursor().Pos()
+	scr := sf.app.Screen()
+	for x := x0; x < x0+20; x++ {
+		for y := y0; y < y0+5; y++ {
+			cell.SetPos(x, y)
+			scr.SetCell(cell)
+		}
+	}
+	// }
+}
+
+// GetCell -- возвращает ячейку по смещению
+func (sf *LineCell) GetCell(adr int) (types.ICell, error) {
+	if adr >= len(sf.lst) {
+		return nil, fmt.Errorf("LineCell.GetCell(): adr(%v)>=lenLine(%v)", adr, len(sf.lst))
+	}
+	return sf.lst[adr], nil
+}
+
+// AddCell -- добавляет ячейку в линию
+func (sf *LineCell) AddCell(cell types.ICell) error {
+	if cell == nil {
+		return fmt.Errorf("LineCell.AddCell(): ICell==nil")
+	}
+	sf.lst = append(sf.lst, cell)
+	return nil
+}
+
+// SetPos -- устанавливает новую позицию линии
+func (sf *LineCell) SetPos(posX alias.PosX, posY alias.PosY) {
+	for adr, cell := range sf.lst {
+		cell.SetPos(posX+alias.PosX(adr), posY)
+	}
+}

+ 92 - 0
libtui/v0/lib/line/screen/win_debug/win_debug.go

@@ -0,0 +1,92 @@
+// package win_debug -- окно отладки для экрана
+package win_debug
+
+import (
+	"fmt"
+
+	"github.com/gdamore/tcell"
+
+	"p78git.ddns.net/svi/libtui/alias"
+	"p78git.ddns.net/svi/libtui/lib/line_cell/cell"
+	"p78git.ddns.net/svi/libtui/types"
+	"p78git.ddns.net/svi/libtui/lib/widget"
+)
+
+// WinDebug -- окно отладки для экрана
+type WinDebug struct {
+	*widget.Widget
+	app    types.IKernel
+	screen types.IScreen
+}
+
+// NewWinDebug -- возвращает новое окно отладки для экрана
+func NewWinDebug(app types.IKernel) (*WinDebug, error) {
+	if app == nil {
+		return nil, fmt.Errorf("NewWinDebug(): IApp==nil")
+	}
+	widget, err := widget.NewWidget(app)
+	if err != nil {
+		return nil, fmt.Errorf("NewWinDebug(): in create IWidget, err=\n\t%w", err)
+	}
+	sf := &WinDebug{
+		Widget: widget,
+		app:    app,
+		screen: app.Screen(),
+	}
+	return sf, nil
+}
+
+// Hide -- скрыть окно отладки экрана
+func (sf *WinDebug) Hide() {
+	sf.Widget.Hide()
+}
+
+// Show -- показать окно отладки экрана
+func (sf *WinDebug) Show() {
+	sf.Widget.Show()
+}
+
+// SetPos -- устанавливает позицию окна отладки
+func (sf *WinDebug) SetPos(x alias.PosX, y alias.PosY) {
+	// Сначала вычислить квадрант экрана
+	sizeX, sizeY := sf.app.Screen().Size()
+	if alias.SizeX(x) >= sizeX/2 { // Кусор в правой половине
+		x -= 30
+	} else {
+		x += 5
+	}
+	if alias.SizeY(y) >= sizeY/2 { // Курсор в нижней половине
+		y -= 5
+	} else {
+		y += 5
+	}
+	sf.Widget.SetPos(x, y)
+}
+
+// Draw -- перерисовывает окноотладки по требованию
+func (sf *WinDebug) Draw() {
+	if !sf.Widget.IsVisible() {
+		return
+	}
+	sf.Widget.Draw()
+
+	posX, posY := sf.app.Cursor().Pos()
+	strOut := fmt.Sprintf("WinDebug.Draw(): pos=%v:%v", posX, posY)
+	colorFg := tcell.NewRGBColor(200, 200, 200)
+	style1 := tcell.StyleDefault
+	colorBg := tcell.NewRGBColor(0, 0, 255)
+	style1 = style1.Foreground(colorFg).Background(colorBg)
+	sf.drawText(alias.Style(style1), strOut)
+
+}
+
+func (sf *WinDebug) drawText(style alias.Style, text string) {
+	posX, posY := sf.Pos()
+	for adr, r := range text {
+		cell := cell.NewCell()
+		cell.SetPos(posX+alias.PosX(adr), posY)
+		cell.SetLit(alias.Lit(r))
+		cell.SetStyle(style)
+		sf.screen.SetCell(cell)
+	}
+}

+ 1 - 1
libtui/v0/lib/line_cell/cell/cell.go

@@ -5,7 +5,7 @@ import (
 	"github.com/gdamore/tcell"
 
 	"p78git.ddns.net/svi/libtui/alias"
-	"p78git.ddns.net/svi/libtui/pos"
+	"p78git.ddns.net/svi/libtui/lib/pos"
 	"p78git.ddns.net/svi/libtui/types"
 )
 

+ 1 - 1
libtui/v0/lib/line_cell/line_cell.go

@@ -7,7 +7,7 @@ import (
 	"github.com/gdamore/tcell"
 
 	"p78git.ddns.net/svi/libtui/alias"
-	"p78git.ddns.net/svi/libtui/line_cell/cell"
+	"p78git.ddns.net/svi/libtui/lib/line_cell/cell"
 	"p78git.ddns.net/svi/libtui/types"
 )
 

+ 2 - 2
libtui/v0/lib/pos/pos.go

@@ -3,8 +3,8 @@ package pos
 
 import (
 	"p78git.ddns.net/svi/libtui/alias"
-	"p78git.ddns.net/svi/libtui/pos/posx"
-	"p78git.ddns.net/svi/libtui/pos/posy"
+	"p78git.ddns.net/svi/libtui/lib/pos/posx"
+	"p78git.ddns.net/svi/libtui/lib/pos/posy"
 	"p78git.ddns.net/svi/libtui/types"
 )
 

+ 3 - 3
libtui/v0/lib/screen/screen.go

@@ -7,11 +7,11 @@ import (
 	"github.com/gdamore/tcell"
 
 	"p78git.ddns.net/svi/libtui/alias"
-	"p78git.ddns.net/svi/libtui/line_cell/cell"
-	"p78git.ddns.net/svi/libtui/pos"
+	"p78git.ddns.net/svi/libtui/lib/line_cell/cell"
+	"p78git.ddns.net/svi/libtui/lib/pos"
 
 	// "p78git.ddns.net/svi/libtui/screen/win_debug"
-	"p78git.ddns.net/svi/libtui/size"
+	"p78git.ddns.net/svi/libtui/lib/size"
 	"p78git.ddns.net/svi/libtui/types"
 )
 

+ 2 - 2
libtui/v0/lib/screen/win_debug/win_debug.go

@@ -7,9 +7,9 @@ import (
 	"github.com/gdamore/tcell"
 
 	"p78git.ddns.net/svi/libtui/alias"
-	"p78git.ddns.net/svi/libtui/line_cell/cell"
+	"p78git.ddns.net/svi/libtui/lib/line_cell/cell"
 	"p78git.ddns.net/svi/libtui/types"
-	"p78git.ddns.net/svi/libtui/widget"
+	"p78git.ddns.net/svi/libtui/lib/widget"
 )
 
 // WinDebug -- окно отладки для экрана

+ 2 - 2
libtui/v0/lib/size/size.go

@@ -3,8 +3,8 @@ package size
 
 import (
 	"p78git.ddns.net/svi/libtui/alias"
-	"p78git.ddns.net/svi/libtui/size/sizex"
-	"p78git.ddns.net/svi/libtui/size/sizey"
+	"p78git.ddns.net/svi/libtui/lib/size/sizex"
+	"p78git.ddns.net/svi/libtui/lib/size/sizey"
 	"p78git.ddns.net/svi/libtui/types"
 )
 

+ 6 - 6
libtui/v0/lib/widget/widget.go

@@ -7,12 +7,12 @@ import (
 	"github.com/gdamore/tcell"
 
 	"p78git.ddns.net/svi/libtui/alias"
-	"p78git.ddns.net/svi/libtui/color"
-	"p78git.ddns.net/svi/libtui/line_cell"
-	"p78git.ddns.net/svi/libtui/line_cell/cell"
-	"p78git.ddns.net/svi/libtui/pos"
-	"p78git.ddns.net/svi/libtui/safe_bool"
-	"p78git.ddns.net/svi/libtui/size"
+	"p78git.ddns.net/svi/libtui/lib/color"
+	"p78git.ddns.net/svi/libtui/lib/line_cell"
+	"p78git.ddns.net/svi/libtui/lib/line_cell/cell"
+	"p78git.ddns.net/svi/libtui/lib/pos"
+	"p78git.ddns.net/svi/libtui/lib/safe_bool"
+	"p78git.ddns.net/svi/libtui/lib/size"
 	"p78git.ddns.net/svi/libtui/types"
 )
 

+ 6 - 6
libtui/v0/tui.go

@@ -3,12 +3,12 @@ package libtui
 
 import (
 	"p78git.ddns.net/svi/libtui/alias"
-	"p78git.ddns.net/svi/libtui/pos"
-	"p78git.ddns.net/svi/libtui/pos/posx"
-	"p78git.ddns.net/svi/libtui/pos/posy"
-	"p78git.ddns.net/svi/libtui/size"
-	"p78git.ddns.net/svi/libtui/size/sizex"
-	"p78git.ddns.net/svi/libtui/size/sizey"
+	"p78git.ddns.net/svi/libtui/lib/pos"
+	"p78git.ddns.net/svi/libtui/lib/pos/posx"
+	"p78git.ddns.net/svi/libtui/lib/pos/posy"
+	"p78git.ddns.net/svi/libtui/lib/size"
+	"p78git.ddns.net/svi/libtui/lib/size/sizex"
+	"p78git.ddns.net/svi/libtui/lib/size/sizey"
 	"p78git.ddns.net/svi/libtui/types"
 )