aboutsummaryrefslogtreecommitdiffstats
path: root/lib/ManaTools/Module.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ManaTools/Module.pm')
-rw-r--r--lib/ManaTools/Module.pm162
1 files changed, 162 insertions, 0 deletions
diff --git a/lib/ManaTools/Module.pm b/lib/ManaTools/Module.pm
new file mode 100644
index 00000000..1e13d92d
--- /dev/null
+++ b/lib/ManaTools/Module.pm
@@ -0,0 +1,162 @@
+# vim: set et ts=4 sw=4:
+# Copyright 2012 Steven Tucker
+#
+# This file is part of ManaTools
+#
+# ManaTools 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.
+#
+# ManaTools 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 ManaTools. If not, see <http://www.gnu.org/licenses/>.
+
+
+#Class Module
+package ManaTools::Module;
+
+use Moose;
+
+=head1 VERSION
+
+Version 0.01
+
+=cut
+
+our $VERSION = '1.0.0';
+
+use yui;
+
+=head1 SUBROUTINES/METHODS
+
+=head2 create - returns a Module object such as a module
+ launcher (this object) or an extension of
+ this class
+
+=cut
+
+sub create {
+ my $class = shift;
+ $class = ref $class || $class;
+ my (%params) = @_;
+
+ my $obj;
+ if ( exists $params{-CLASS} ) {
+ my $driver = $params{-CLASS};
+
+ eval {
+ my $pkg = $driver;
+ $pkg =~ s/::/\//g;
+ $pkg .= '.pm';
+ require $pkg;
+ $obj=$driver->new();
+ };
+ if ( $@ ) {
+ die "Error getting obj for driver $params{-CLASS}: $@";
+ return undef;
+ }
+ }
+ else {
+ $obj = new ManaTools::Module(@_);
+ }
+ return $obj;
+}
+
+has 'icon' => (
+ is => 'rw',
+ isa => 'Str',
+);
+
+has 'name' => (
+ is => 'rw',
+ isa => 'Str',
+);
+
+has 'launch' => (
+ is => 'rw',
+ isa => 'Str',
+);
+
+has 'button' => (
+ is => 'rw',
+ init_arg => undef,
+);
+
+
+#=============================================================
+
+=head2 setButton
+
+=head3 INPUT
+
+$self: this object
+$button: yui push button to be assigned to this module
+
+=head3 DESCRIPTION
+
+This method assignes a button to this module
+
+=cut
+
+#=============================================================
+sub setButton {
+ my ($self, $button) = @_;
+ $self->{button} = $button;
+}
+
+#=============================================================
+
+=head2 removeButton
+
+=head3 INPUT
+
+$self: this object
+
+=head3 DESCRIPTION
+
+This method remove the assigned button from this module
+
+=cut
+
+#=============================================================
+sub removeButton {
+ my($self) = @_;
+
+ undef($self->{button});
+}
+
+# base class launcher
+#=============================================================
+
+=head2 start
+
+=head3 INPUT
+
+$self: this object
+
+=head3 DESCRIPTION
+
+This method is the base class launcher, run external modules.
+
+=cut
+
+#=============================================================
+sub start {
+ my $self = shift;
+
+ if ($self->{launch}) {
+ my $err = yui::YUI::app()->runInTerminal( $self->{launch} . " --ncurses");
+ if ($err == -1) {
+ system($self->{launch});
+ }
+ }
+}
+
+
+no Moose;
+1;