Xavier Nayrac

Accro au TDD, rubyiste mais pas que, maker, heureux utilisateur de Vim.
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