mirror of
https://github.com/kovidgoyal/kitty
synced 2026-07-27 18:51:41 +02:00
Start work on face panel
This commit is contained in:
58
kittens/choose_fonts/face.go
Normal file
58
kittens/choose_fonts/face.go
Normal 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()
|
||||||
|
}
|
||||||
@@ -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) {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -51,8 +51,9 @@ type handler struct {
|
|||||||
graphics_manager graphics_manager
|
graphics_manager graphics_manager
|
||||||
temp_dir string
|
temp_dir string
|
||||||
|
|
||||||
listing FontList
|
listing FontList
|
||||||
faces faces
|
faces faces
|
||||||
|
face_pane face_panel
|
||||||
|
|
||||||
panes []pane
|
panes []pane
|
||||||
current_pane pane
|
current_pane pane
|
||||||
@@ -75,7 +76,7 @@ func (h *handler) initialize() (err error) {
|
|||||||
h.lp.SetCursorVisible(false)
|
h.lp.SetCursorVisible(false)
|
||||||
h.lp.OnQueryResponse = h.on_query_response
|
h.lp.OnQueryResponse = h.on_query_response
|
||||||
h.lp.QueryTerminal("font_size", "dpi_x", "dpi_y", "foreground", "background")
|
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 {
|
for _, pane := range h.panes {
|
||||||
if err = pane.initialize(h); err != nil {
|
if err = pane.initialize(h); err != nil {
|
||||||
return err
|
return err
|
||||||
|
|||||||
Reference in New Issue
Block a user