PageRenderTime 32ms CodeModel.GetById 23ms app.highlight 8ms RepoModel.GetById 0ms app.codeStats 0ms

/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}