Xavier Nayrac

Rubyiste accro au TDD, serial blogger, apprenti data scientist, heureux utilisateur de Vim, accordéoniste.
Si vous vous sentez particulièrement généreux, suivez moi sur Twitter.

Écrire un éditeur pour le terminal - partie 5

| Comments

Niveau : intermédiaire

La bibliothèque curses sait gérer le fenêtrage. Voici un programme qui montre comment faire.

C’est une traduction en ruby d’un programme C issu d’un tutoriel sur ncurses (dont je ne retrouve plus la référence dans l’immédiat).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
require 'curses'
include Curses

def create_newwin(height, width, top, left)
  local_win = Window.new(height, width, top, left)
  local_win.box(?|, ?-)
  local_win.refresh
  local_win
end

def destroy_win(w)
  w.clear
  w.refresh
  w.close
end

begin
  init_screen
  cbreak
  stdscr.keypad(true)
  height = 3
  width = 10
  top = (lines - height) / 2
  left = (cols - width) / 2
  addstr("Press F1 to exit")
  refresh
  my_win = create_newwin(height, width, top, left)

  while (ch = getch) != KEY_F1
    case ch
    when KEY_LEFT then left -= 1
    when KEY_RIGHT then left += 1
    when KEY_UP then top -= 1
    when KEY_DOWN then top += 1
    end
    destroy_win(my_win)
    my_win = create_newwin(height, width, top, left)
  end
ensure
  close_screen
end

En étudiant ce programme avec en parallèle la documentation ruby de curses, vous devriez comprendre sans problèmes la gestion des fenêtres.

À demain.

Articles connexes

Commentaires