/libs/perl/Choicetool/Widgets/Menu.pm

# · Perl · 173 lines · 106 code · 44 blank · 23 comment · 5 complexity · 711af0be96352fc634617e8fc01d119a MD5 · raw file

  1. # -*- perl -*-
  2. #
  3. # Menu.pm
  4. #
  5. # Copyright (C) 2008, 2009 Francesco Salvestrini
  6. #
  7. # This program is free software; you can redistribute it and/or modify
  8. # it under the terms of the GNU General Public License as published by
  9. # the Free Software Foundation; either version 2 of the License, or
  10. # (at your option) any later version.
  11. #
  12. # This program is distributed in the hope that it will be useful,
  13. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. # GNU General Public License for more details.
  16. #
  17. # You should have received a copy of the GNU General Public License along
  18. # with this program; if not, write to the Free Software Foundation, Inc.,
  19. # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  20. #
  21. package Choicetool::Widgets::Menu;
  22. use 5.8.0;
  23. use warnings;
  24. use strict;
  25. use diagnostics;
  26. use Choicetool::Base::Debug;
  27. use Choicetool::Base::Trace;
  28. use Choicetool::Widgets::Widget;
  29. use vars qw(@ISA);
  30. @ISA = qw(Choicetool::Widgets::Widget);
  31. sub new ($$)
  32. {
  33. my $class = shift;
  34. my $id = shift;
  35. assert(defined($class));
  36. my $self = $class->SUPER::new($id);
  37. return bless($self, $class);
  38. }
  39. sub type {
  40. my $self = shift;
  41. my $value = shift;
  42. assert(defined($self));
  43. if (defined($value)) {
  44. $self->{TYPE} = $value;
  45. }
  46. return $self->{TYPE};
  47. }
  48. sub label {
  49. my $self = shift;
  50. my $value = shift;
  51. assert(defined($self));
  52. if (defined($value)) {
  53. $self->{LABEL} = $value;
  54. }
  55. return $self->{LABEL};
  56. }
  57. sub default {
  58. my $self = shift;
  59. my $value = shift;
  60. assert(defined($self));
  61. if (defined($value)) {
  62. $self->{DEFAULT} = $value;
  63. }
  64. return $self->{DEFAULT};
  65. }
  66. sub range {
  67. my $self = shift;
  68. my $value = shift;
  69. assert(defined($self));
  70. if (defined($value)) {
  71. $self->{RANGE} = $value;
  72. }
  73. return $self->{RANGE};
  74. }
  75. sub help {
  76. my $self = shift;
  77. my $value = shift;
  78. assert(defined($self));
  79. if (defined($value)) {
  80. $self->{HELP} = $value;
  81. }
  82. return $self->{HELP};
  83. }
  84. sub m4ify_hierarchical_indent ($)
  85. {
  86. my $self = shift;
  87. assert(defined($self));
  88. return " ";
  89. }
  90. #
  91. # M4 related methods
  92. #
  93. sub m4ify_linear_body ($$)
  94. {
  95. my $self = shift;
  96. my $prefix = shift;
  97. assert(defined($self));
  98. assert(defined($prefix));
  99. assert(defined($self->id()));
  100. return
  101. $prefix .
  102. "CT_UI_MENU_DATA([" .
  103. $self->id() .
  104. "])\n";
  105. }
  106. sub m4ify_hierarchical_header ($$)
  107. {
  108. my $self = shift;
  109. my $prefix = shift;
  110. assert(defined($self));
  111. assert(defined($prefix));
  112. assert(defined($self->id()));
  113. assert(defined($self->label()));
  114. return
  115. $prefix .
  116. "CT_UI_MENU_WIDGET([". $self->id() .
  117. "],[" .
  118. $self->label() .
  119. "],[\n";
  120. }
  121. sub m4ify_hierarchical_footer ($$)
  122. {
  123. my $self = shift;
  124. my $prefix = shift;
  125. assert(defined($self));
  126. assert(defined($prefix));
  127. return $prefix . "])\n";
  128. }
  129. 1;