summaryrefslogtreecommitdiff
path: root/dldialog/perl/DlButtonGroup.pm
diff options
context:
space:
mode:
Diffstat (limited to 'dldialog/perl/DlButtonGroup.pm')
-rw-r--r--dldialog/perl/DlButtonGroup.pm127
1 files changed, 127 insertions, 0 deletions
diff --git a/dldialog/perl/DlButtonGroup.pm b/dldialog/perl/DlButtonGroup.pm
new file mode 100644
index 0000000..c66730e
--- /dev/null
+++ b/dldialog/perl/DlButtonGroup.pm
@@ -0,0 +1,127 @@
+#!/usr/bin/perl
+####################################################
+# #
+# File: DlButtonGroup.pm #
+#
+
+package DlButtonGroup;
+
+####################################################
+#
+# Konstruktor new: legt eine neue DlButtonGroup an und gibt
+# die Referenz darauf zurück.
+# Übergabeparameter (optional, aber in fester Reihenfolge):
+# Orientierung ( r|row|c|col|f|form): default 'form'
+# Titel: Titel der WidgetGruppe
+# Titelposition: ( t|top|b|bottom|l|left|r|right)
+# Var: Name der Variablen, die den gedrückten Button zurückgibt.
+# Höhe, Breite: Geometrie der Box (tut in dldialog noch net)
+
+sub new {
+ my $base = shift;
+ my $class = ref($base) || $base;
+ my $self = {};
+ my ($package, $file, $line) = caller();
+
+ # Uebergebene Attribute merken
+ my ($orient, $title, $titlepos, $var, $height, $width) = @_;
+ if ($orient) {
+ if ($orient =~ /(row|r)/i) { $self->{_orientation} = "row" }
+ elsif ($orient =~ /(col|c)/i) { $self->{_orientation} = "col" }
+ elsif ($orient =~ /(form|f)/i) { $self->{_orientation} = "form" }
+ else { $self->{_orientation} = "form" }
+ }
+ if ($title) { $self->{_title} = $title;}
+ if ($titlepos) {
+ if ($titlepos=~/^t/i) { $self->{_titlepos} = "top";}
+ elsif ($titlepos=~/^b/i) { $self->{_titlepos} = "bottom";}
+ elsif ($titlepos=~/^l/i) { $self->{_titlepos} = "left";}
+ elsif ($titlepos=~/^r/i) { $self->{_titlepos} = "right";}
+ }
+ if ($var) { $self->{_var} = $var;}
+ if ($height) { $self->{_height} =$height}
+ if ($width) { $self->{_width} =$width}
+
+ bless($self, $class);
+ return $self;
+}
+
+
+sub insertButton {
+ my $self = shift;
+ push @{$self->{_buttons}} , @_;
+ return $#{$self->{_buttons}}+1;
+}
+
+sub setImage {
+ my $self = shift;
+ my $nr = shift;
+ my $image =shift;
+ return if (($nr <= 0) || !$image);
+ $self->{_images}[$nr-1] = $image;
+}
+
+sub getTitle {
+ my $self = shift;
+ my $title = $self->{_title};
+ return $title;
+}
+
+sub setTitle {
+ my ($self, $title) = @_;
+ my $oldtitle = $self->getTitle();
+ $self->{_title} = $title;
+ return $oldtitle;
+}
+
+sub setText {
+ my ($self, $text, $pos) = @_;
+ if ($pos=~/^b/i) {$self->{_btext}=$text}
+ else {$self->{_text}=$text}
+}
+
+
+sub removeButton {
+ my $self = shift;
+ my $buttonnr = shift;
+ if ($buttonnr <= 0) {return}
+ $buttonnr--;
+ my $i = 0;
+ my @WStack=();
+ my @IStack=();
+ foreach $button (@{$self->{_buttons}}) {
+ unless ($i eq $buttonnr) {
+ push @WStack, $button;
+ push @IStack, $self->{_images}[$i];
+ }
+ $i++;
+ }
+ @{$self->{_buttons}}=@WStack;
+ @{$self->{_images}}=@IStack;
+ return $#{$self->{_buttons}}+1;
+}
+
+sub getCode {
+ my $self = shift;
+ my $code="";
+ if($self->{_text}) { $code.=" text \"$self->{_text}\" "}
+ if($self->{_orientation}) { $code.=" $self->{_orientation} "}
+ if ($self->{_height}) { $code.=" -height $self->{_height} " }
+ if ($self->{_width}) { $code.=" -width $self->{_width} " }
+ if($self->{_orientation}) { $code.=" { "}
+ if ($self->{_title}) { $code.=" text \"$self->{_title}\"; "}
+ my $i=1;
+ foreach $button (@{$self->{_buttons}}) {
+ $code.="button \"$button\" ";
+ if ($self->{_var}) { $code.=" -var $self->{_var} -set \"$i\"" }
+ if ($self->{_images}[$i-1]) { $code.=" -image \"$self->{_images}[$i-1]\"" }
+ $i++;
+ $code.=" -exit;"
+ }
+ if($self->{_orientation}) { $code.=" } "}
+ if($self->{_btext}) { $code.=" text \"$self->{_btext}\"; "}
+ # print "code is:\n$code\n";
+ return $code;
+}
+
+1; # Keep require happy