/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

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