/TeXmacs-1.0.7.11-src/src/Plugins/Widkit/Composite/aligned_widget.cpp
C++ | 47 lines | 33 code | 5 blank | 9 comment | 4 complexity | 559db608583dfe37169dc02c3806698e MD5 | raw file
Possible License(s): GPL-3.0, GPL-2.0, MPL-2.0-no-copyleft-exception
1
2/******************************************************************************
3* MODULE : aligned_widget.cpp
4* DESCRIPTION: aligned widgets
5* COPYRIGHT : (C) 2010 Joris van der Hoeven
6*******************************************************************************
7* This software falls under the GNU general public license version 3 or later.
8* It comes WITHOUT ANY WARRANTY WHATSOEVER. For details, see the file LICENSE
9* in the root directory or <http://www.gnu.org/licenses/gpl-3.0.html>.
10******************************************************************************/
11
12#include "renderer.hpp"
13#include "Widkit/wk_widget.hpp"
14
15wk_widget
16aligned_widget (array<wk_widget> lhs, array<wk_widget> rhs,
17 SI hsep, SI vsep, SI lpad, SI rpad)
18{
19 ASSERT (N(lhs) > 0, "at least one widget expected");
20 ASSERT (N(lhs) == N(rhs), "sizes don't match");
21 int i, n= N (lhs);
22 SI max_w= 0;
23 for (i=0; i<n; i++) {
24 SI ww=1280*PIXEL, hh=64*PIXEL;
25 lhs[i] << get_size (ww, hh, 0);
26 max_w= max (ww, max_w);
27 }
28
29 array<wk_widget> fields_w (2*n-1);
30 for (i=0; i<n; i++) {
31 SI ww=1280*PIXEL, hh=64*PIXEL;
32 lhs[i] << get_size (ww, hh, 0);
33 array<wk_widget> line_w (5);
34 array<string> line_n (5);
35 line_w[0]= glue_wk_widget (false, false, lpad + max_w - ww);
36 line_w[1]= lhs[i];
37 line_n[1]= "prompt";
38 line_w[2]= glue_wk_widget (false, false, hsep);
39 line_w[3]= rhs[i];
40 line_n[3]= "input";
41 line_w[4]= glue_wk_widget (false, false, rpad);
42 fields_w[2*i]= horizontal_list (line_w, line_n);
43 if (i < n-1) fields_w[2*i + 1]= glue_wk_widget (false, false, 0, vsep);
44 }
45
46 return vertical_list (fields_w);
47}