aboutsummaryrefslogtreecommitdiffstats
path: root/Category.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Category.pm')
-rw-r--r--Category.pm132
1 files changed, 132 insertions, 0 deletions
diff --git a/Category.pm b/Category.pm
new file mode 100644
index 00000000..6e4a58d4
--- /dev/null
+++ b/Category.pm
@@ -0,0 +1,132 @@
+# Copyright 2012 Steven Tucker
+#
+# This file is part of AdminPanel
+#
+# AdminPanel is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# AdminPanel is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with AdminPanel. If not, see <http://www.gnu.org/licenses/>.
+
+
+#Class Category
+package Category;
+
+use strict;
+use warnings;
+use diagnostics;
+use yui;
+
+## Can only add the config file data at constructor
+## The Gui elements are added in setupGui inside MainDisplay
+sub new {
+ my ($class, $newName, $newIcon) = @_;
+ my $self = {
+ my $name = 0,
+ my $button = 0,
+ my $icon = 0,
+ my $modules = 0
+ };
+ bless $self, 'Category';
+
+ $self->{name} = $newName;
+ $self->{icon} = $newIcon;
+
+ return $self;
+}
+
+## Add a new module to the list
+sub loadModule {
+ my ($self, $module) = @_;
+
+ push ( @{$self->{modules}}, $module );
+
+}
+
+## Create and add buttons for each module
+sub addButtons {
+ my($self, $pane, $factory) = @_;
+ my $count = 0;
+ my $tmpButton;
+ my $currLayout = 0;
+ $factory->createVSpacing($pane, 2);
+ foreach my $mod (@{$self->{modules}}) {
+ if(($count % 2) != 1)
+ {
+ $currLayout = $factory->createHBox($pane);
+ $factory->createHStretch($currLayout);
+ }
+ $count++;
+ $tmpButton = $factory->createPushButton($currLayout,
+ $mod->{name}
+ );
+ $mod->setButton($tmpButton);
+ $tmpButton->setLabel($mod->{name});
+ $tmpButton->setIcon($mod->{icon});
+ $factory->createHStretch($currLayout);
+ if(($count % 2) != 1)
+ {
+ $factory->createVSpacing($pane, 2);
+ }
+ }
+ $factory->createVStretch($pane);
+}
+
+## Delete the module buttons
+sub removeButtons {
+ my($self) = @_;
+
+ for(@{$self->{modules}}) {
+ $_->removeButton();
+ }
+}
+
+sub setIcon {
+ my($self) = @_;
+
+ $self->{button}->setIcon($self->{icon});
+}
+
+1;
+__END__
+
+=pod
+
+=head1 NAME
+
+ Category - add new category to window
+
+=head1 SYNOPSIS
+
+ $category = new Category('Category Name');
+
+
+=head1 USAGE
+
+ my $display = new MainDisplay();
+
+ my $category = new Category('Network');
+ $display->loadCategory($category);
+
+ $display->start();
+
+=head1 FUNCTIONS
+
+=head2 new (name)
+
+ Constructor: creates a new category named Name
+
+ $category = new Category('Name');
+
+=head3 name (String)
+
+ The name of the category
+
+=cut