Start work on face panel

This commit is contained in:
Kovid Goyal 2024-05-14 20:03:06 +05:30
parent 4a0aa012e4
commit 5d86f5c93f
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
3 changed files with 78 additions and 3 deletions

View File

@ -0,0 +1,58 @@
package choose_fonts
import (
"fmt"
"kitty/tools/tui/loop"
"sync"
)
var _ = fmt.Print
type face_panel struct {
handler *handler
family, which string
settings faces_settings
setting string
preview_cache map[faces_preview_key]map[string]RenderedSampleTransmit
preview_cache_mutex sync.Mutex
}
func (self *face_panel) draw_screen() (err error) {
return
}
func (self *face_panel) initialize(h *handler) (err error) {
self.handler = h
self.preview_cache = make(map[faces_preview_key]map[string]RenderedSampleTransmit)
return
}
func (self *face_panel) on_wakeup() error {
return self.handler.draw_screen()
}
func (self *face_panel) on_click(id string) (err error) {
return
}
func (self *face_panel) on_key_event(event *loop.KeyEvent) (err error) {
if event.MatchesPressOrRepeat("esc") {
event.Handled = true
self.handler.current_pane = &self.handler.faces
return self.handler.draw_screen()
}
return
}
func (self *face_panel) on_text(text string, from_key_event bool, in_bracketed_paste bool) (err error) {
return
}
func (self *face_panel) on_enter(family, which string, settings faces_settings) error {
self.family = family
self.settings = settings
self.which = which
self.handler.current_pane = self
return self.handler.draw_screen()
}

View File

@ -117,6 +117,22 @@ func (self *faces) on_key_event(event *loop.KeyEvent) (err error) {
}
func (self *faces) on_text(text string, from_key_event bool, in_bracketed_paste bool) (err error) {
if from_key_event {
which := ""
switch text {
case "r", "R":
which = "font_family"
case "b", "B":
which = "bold_font"
case "i", "I":
which = "italic_font"
case "o", "O":
which = "bold_italic_font"
}
if which != "" {
return self.handler.face_pane.on_enter(self.family, which, self.settings)
}
}
return
}

View File

@ -51,8 +51,9 @@ type handler struct {
graphics_manager graphics_manager
temp_dir string
listing FontList
faces faces
listing FontList
faces faces
face_pane face_panel
panes []pane
current_pane pane
@ -75,7 +76,7 @@ func (h *handler) initialize() (err error) {
h.lp.SetCursorVisible(false)
h.lp.OnQueryResponse = h.on_query_response
h.lp.QueryTerminal("font_size", "dpi_x", "dpi_y", "foreground", "background")
h.panes = []pane{&h.listing, &h.faces}
h.panes = []pane{&h.listing, &h.faces, &h.face_pane}
for _, pane := range h.panes {
if err = pane.initialize(h); err != nil {
return err