aboutsummaryrefslogtreecommitdiffstats
path: root/lib/AdminPanel/Shared.pm
diff options
context:
space:
mode:
authorAngelo Naselli <anaselli@linux.it>2014-06-22 14:30:00 +0200
committerAngelo Naselli <anaselli@linux.it>2014-06-22 14:30:00 +0200
commitb54e21071a02cdc0705622257339a68dbb1f0153 (patch)
tree8fd68e204fd8ce0e884d50bcd09f75b06c797727 /lib/AdminPanel/Shared.pm
parent50ce18253f6fdb65e8d3f490578dc2a33c62a850 (diff)
downloadmanatools-b54e21071a02cdc0705622257339a68dbb1f0153.tar
manatools-b54e21071a02cdc0705622257339a68dbb1f0153.tar.gz
manatools-b54e21071a02cdc0705622257339a68dbb1f0153.tar.bz2
manatools-b54e21071a02cdc0705622257339a68dbb1f0153.tar.xz
manatools-b54e21071a02cdc0705622257339a68dbb1f0153.zip
GUI functions moved to Shared::GUI
Diffstat (limited to 'lib/AdminPanel/Shared.pm')
-rw-r--r--lib/AdminPanel/Shared.pm597
1 files changed, 39 insertions, 558 deletions
diff --git a/lib/AdminPanel/Shared.pm b/lib/AdminPanel/Shared.pm
index 9b270723..dff57a72 100644
--- a/lib/AdminPanel/Shared.pm
+++ b/lib/AdminPanel/Shared.pm
@@ -34,14 +34,10 @@ This module collects all the routines shared between AdminPanel and its modules.
=head1 EXPORT
- warningMsgBox
- msgBox
- infoMsgBox
- ask_YesOrNo
- ask_OkCancel
- AboutDialog
- trim
-
+ trim
+ member
+ md5sum
+ pathList2hash
=head1 SUPPORT
@@ -80,24 +76,15 @@ use diagnostics;
use Digest::MD5;
-use lib qw(/usr/lib/libDrakX);
-use common qw(N
- N_);
use yui;
use base qw(Exporter);
# TODO move GUI dialogs to Shared::GUI
our @EXPORT = qw(
- warningMsgBox
- msgBox
- infoMsgBox
- ask_YesOrNo
- ask_OkCancel
- ask_fromList
- AboutDialog
trim
member
md5sum
+ pathList2hash
);
@@ -109,550 +96,10 @@ Version 0.01
our $VERSION = '0.01';
-=head1 License
-
-GPL2 license content text, it can be used to be shown
-in dialogs.
-
-=cut
-
-our $License = N_("This program 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, or (at your option)
-any later version.
-
-This program 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 this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-");
-
-
-#=============================================================
-
-=head2 warningMsgBox
-
-=head3 INPUT
-
- $st: string to be swhon into the dialog
-
-=head3 DESCRIPTION
-
-This function creates an Warning dialog and show the message
-passed as input.
-
-=cut
-
-#=============================================================
-
-sub warningMsgBox {
- my ($st) = @_;
- my $factory = yui::YUI::widgetFactory;
- my $msg_box = $factory->createPopupDialog($yui::YDialogWarnColor);
- my $layout = $factory->createVBox($msg_box);
- my $align = $factory->createAlignment($layout, 3, 0);
- $factory->createLabel( $align, $st, 1, 0);
- $align = $factory->createAlignment($layout, 3, 0);
- $factory->createPushButton($align, N("Ok"));
- $msg_box->waitForEvent();
-
- destroy $msg_box;
-}
-
-#=============================================================
-
-=head2 infoMsgBox
-
-=head3 INPUT
-
- $st: string to be swhon into the dialog
-
-=head3 DESCRIPTION
-
-This function creates an Info dialog and show the message
-passed as input.
-
-=cut
-
-#=============================================================
-
-sub infoMsgBox {
- my ($st) = @_;
- my $factory = yui::YUI::widgetFactory;
- my $msg_box = $factory->createPopupDialog($yui::YDialogInfoColor);
- my $layout = $factory->createVBox($msg_box);
- my $align = $factory->createAlignment($layout, 3, 0);
- $factory->createLabel( $align, $st, 1, 0);
- $align = $factory->createAlignment($layout, 3, 0);
- $factory->createPushButton($align, N("Ok"));
- $msg_box->waitForEvent();
-
- destroy $msg_box;
-}
-
-#=============================================================
-
-=head2 msgBox
-
-=head3 INPUT
-
- $st: string to be swhon into the dialog
-
-=head3 DESCRIPTION
-
-This function creates a dialog and show the message passed as input.
-
-=cut
-
-#=============================================================
-
-sub msgBox {
- my ($st) = @_;
- my $factory = yui::YUI::widgetFactory;
- my $msg_box = $factory->createPopupDialog($yui::YDialogNormalColor);
- my $layout = $factory->createVBox($msg_box);
- my $align = $factory->createAlignment($layout, 3, 0);
- $factory->createLabel( $align, $st, 1, 0);
- $align = $factory->createAlignment($layout, 3, 0);
- $factory->createPushButton($align, N("Ok"));
- $msg_box->waitForEvent();
-
- destroy $msg_box;
-}
-
-#=============================================================
-
-=head2 ask_OkCancel
-
-=head3 INPUT
-
- $title: Title shown as heading
- $text: text to be shown into the dialog
-
-=head3 OUTPUT
-
- 0: Cancel button has been pressed
- 1: Ok button has been pressed
-
-=head3 DESCRIPTION
-
-This function create an OK-Cancel dialog with a 'title' and a
-'text' passed as parameters.
-
-=cut
-
-#=============================================================
-
-sub ask_OkCancel {
- my ($title, $text) = @_;
- my $retVal = 0;
- yui::YUI::widgetFactory;
- my $factory = yui::YExternalWidgets::externalWidgetFactory("mga");
- $factory = yui::YMGAWidgetFactory::getYMGAWidgetFactory($factory);
- my $dlg = $factory->createDialogBox($yui::YMGAMessageBox::B_TWO);
- $dlg->setTitle($title);
- $dlg->setText($text);
- $dlg->setButtonLabel(N("Ok"), $yui::YMGAMessageBox::B_ONE );
- $dlg->setButtonLabel(N("Cancel"), $yui::YMGAMessageBox::B_TWO);
- $dlg->setDefaultButton($yui::YMGAMessageBox::B_ONE);
- $dlg->setMinSize(50, 5);
-
- $retVal = $dlg->show() == $yui::YMGAMessageBox::B_ONE ? 1 : 0;
-
- $dlg = undef;
-
- return $retVal;
-}
-
-#=============================================================
-
-=head2 ask_YesOrNo
-
-=head3 INPUT
-
- $title: Title shown as heading
- $text: question text to be shown into the dialog
-
-=head3 OUTPUT
-
- 0: "No" button has been pressed
- 1: "Yes" button has been pressed
-
-=head3 DESCRIPTION
-
-This function create a Yes-No dialog with a 'title' and a
-question 'text' passed as parameters.
-
-=cut
-
-#=============================================================
-
-sub ask_YesOrNo {
- my ($title, $text) = @_;
- my $retVal = 0;
- my $factory = yui::YUI::widgetFactory;
-
- my $msg_box = $factory->createPopupDialog($yui::YDialogNormalColor);
- my $layout = $factory->createVBox($msg_box);
-
- my $align = $factory->createAlignment($layout, 3, 0);
- ## title with headings true
- $factory->createLabel( $align, $title, 1, 0);
- $align = $factory->createLeft($layout);
- $factory->createLabel( $align, $text, 0, 0);
-
- $align = $factory->createRight($layout);
- my $hbox = $factory->createHBox($align);
- my $yesButton = $factory->createPushButton($hbox, N("Yes"));
- my $noButton = $factory->createPushButton($hbox, N("No"));
-
- my $event = $msg_box->waitForEvent();
-
- my $eventType = $event->eventType();
-
- if ($eventType == $yui::YEvent::WidgetEvent) {
- # widget selected
- my $widget = $event->widget();
- $retVal = ($widget == $yesButton) ? 1 : 0;
- }
-
- destroy $msg_box;
-
- return $retVal;
-}
-
-
-#=============================================================
-
-=head2 ask_fromList
-
-=head3 INPUT
-
- $title: dialog title
- $text: combobox heading
- $list: item list
-
-=head3 OUTPUT
-
- undef: if Cancel button has been pressed
- selected item: if Ok button has been pressed
-
-=head3 DESCRIPTION
-
-This function create a dialog with a combobox in which to
-choose an item from a given list.
-
-=cut
-
-#=============================================================
-
-sub ask_fromList {
- my ($title, $text, $list) = @_;
-
- die "Title is mandatory" if (! $title);
- die "Heading is mandatory" if (! $text);
- die "List is mandatory" if (! $list );
- die "At least one element is mandatory into list" if (scalar(@$list) < 1);
-
- my $choice = undef;
- my $factory = yui::YUI::widgetFactory;
-
- ## push application title
- my $appTitle = yui::YUI::app()->applicationTitle();
- ## set new title to get it in dialog
- yui::YUI::app()->setApplicationTitle($title);
-
- my $dlg = $factory->createPopupDialog($yui::YDialogNormalColor);
- my $layout = $factory->createVBox($dlg);
-
- my $combo = $factory->createComboBox($layout, $text, 0);
- my $itemColl = new yui::YItemCollection;
- foreach (@$list) {
- my $item = new yui::YItem ($_, 0);
- $itemColl->push($item);
- $item->DISOWN();
- }
- $combo->addItems($itemColl);
-
- my $align = $factory->createRight($layout);
- my $hbox = $factory->createHBox($align);
- my $okButton = $factory->createPushButton($hbox, N("Ok"));
- my $cancelButton = $factory->createPushButton($hbox, N("Cancel"));
-
- while (1) {
- my $event = $dlg->waitForEvent();
-
- my $eventType = $event->eventType();
- #event type checking
- if ($eventType == $yui::YEvent::CancelEvent) {
- last;
- }
- elsif ($eventType == $yui::YEvent::WidgetEvent) {
- # widget selected
- my $widget = $event->widget();
-
- if ($widget == $cancelButton) {
- last;
- }
- elsif ($widget == $okButton) {
- my $item = $combo->selectedItem();
- $choice = $item->label() if ($item);
- last;
- }
- }
- }
-
- destroy $dlg;
-
- #restore old application title
- yui::YUI::app()->setApplicationTitle($appTitle);
-
- return $choice;
-}
#=============================================================
-=head2 AboutDialog
-
-=head3 INPUT
-
- $opts: optional options needed to get info for dialog.
- name => Application Name,
- version => Application Version,
- copyright => Copyright ususally like "Copyright (C) copyright-holder Year",
- license => License text,
- comments => A comment related to application to be shown,
- website => Web site URL,
- website_label => Label to hide previous link,
- authors => Application authors,
- translator_credits => Application translators
- documenters => Application documenters
- artists => Graphic applicaton designers
- logo => picture path to be shown as application logo
-
-=head3 OUTPUT
-
- Output_Parameter: out_par_description
-
-=head3 DESCRIPTION
-
-About dialog implementation, this dialog can be used by
-modules, to show authors, license, credits, etc.
-
-=cut
-
-#=============================================================
-
-sub AboutDialog {
- my ($opts) = @_;
-
- # Credits dialog
- sub _Credits {
- my ($opts) = @_;
-
- my $factory = yui::YUI::widgetFactory;
- my $optional = yui::YUI::optionalWidgetFactory;
-
- my $creditsdlg = $factory->createPopupDialog();
- my $layout = $factory->createVBox($creditsdlg);
-
- # header
- $factory->createHBox($layout);
- my $hbox = $factory->createHBox($layout);
- my $align = $factory->createHVCenter($hbox);
- $hbox = $factory->createHBox($align);
- $factory->createHeading($hbox, N("Credits"));
-
- # Credits tab widget
- if ($optional->hasDumbTab()) {
- $hbox = $factory->createHBox($layout);
- $align = $factory->createAlignment($hbox, 3, 0);
- my $dumptab = $optional->createDumbTab($align);
- my $item = new yui::YItem(N("Written by"));
- $item->setSelected();
- $dumptab->addItem( $item );
- $item->DISOWN();
- if (exists $opts->{documenters}) {
- $item = new yui::YItem(N("Documented by"));
- $dumptab->addItem( $item );
- $item->DISOWN();
- }
- if (exists $opts->{translator_credits}) {
- $item = new yui::YItem(N("Translated by"));
- $dumptab->addItem( $item );
- $item->DISOWN();
- }
- if (exists $opts->{artists}) {
- $item = new yui::YItem(N("Artwork by"));
- $dumptab->addItem( $item );
- $item->DISOWN();
- }
- my $vbox = $factory->createVBox($dumptab);
- $align = $factory->createLeft($vbox);
- $factory->createVSpacing($vbox, 1.0);
- my $label = $factory->createLabel( $align, "***", 0);
- $factory->createVSpacing($vbox, 1.0);
-
- # start value for first Item
- $label->setValue($opts->{authors}) if exists $opts->{authors};
-
- # Close button
- $align = $factory->createRight($layout);
- my $closeButton = $factory->createPushButton($align, N("Close"));
-
- # manage Credits dialog events
- while(1) {
- my $event = $creditsdlg->waitForEvent();
- my $eventType = $event->eventType();
-
- #event type checking
- if ($eventType == $yui::YEvent::CancelEvent) {
- last;
- }
- elsif ($eventType == $yui::YEvent::WidgetEvent) {
- # widget selected
- my $widget = $event->widget();
-
- if ($widget == $closeButton) {
- last;
- }
- }
- elsif ($event->item() ) {
- # $eventType MenuEvent!!!
- my $itemLabel = $event->item()->label();
- $itemLabel =~ s/&//; #remove shortcut from label
- if ($itemLabel eq N("Written by")) {
- $label->setValue($opts->{authors}) if exists $opts->{authors};
- }
- elsif ($itemLabel eq N("Documented by")) {
- $label->setValue($opts->{documenters}) if exists $opts->{documenters};
- }
- elsif ($itemLabel eq N("Translated by")) {
- $label->setValue($opts->{translator_credits}) if exists $opts->{translator_credits};
- }
- elsif ($itemLabel eq N("Artwork by")) {
- $label->setValue($opts->{artists}) if exists $opts->{artists};
- }
- }
- }
- }
- else {
- print "No tab widgets available!\n";
- }
- destroy $creditsdlg;
- }
-
- # License dialog
- sub _License {
- my ($license) = @_;
-
- my $factory = yui::YUI::widgetFactory;
- my $licensedlg = $factory->createPopupDialog();
- my $layout = $factory->createVBox($licensedlg);
-
- # header
- $factory->createHBox($layout);
- my $hbox = $factory->createHBox($layout);
- my $align = $factory->createHVCenter($hbox);
- $hbox = $factory->createHBox($align);
- $factory->createHeading($hbox, N("License"));
-
- # license
- $hbox = $factory->createHBox($layout);
- $align = $factory->createAlignment($hbox, 3, 0);
- $factory->createLabel( $align, $license);
-
- $align = $factory->createRight($layout);
- my $closeButton = $factory->createPushButton($align, N("Close"));
-
- $licensedlg->waitForEvent();
-
- destroy $licensedlg;
- }
-
- my $website = "http://www.mageia.org";
- my $website_label = "Mageia";
- my $factory = yui::YUI::widgetFactory;
- my $aboutdlg = $factory->createPopupDialog();
- my $layout = $factory->createVBox($aboutdlg);
-
- # header
- $factory->createHBox($layout);
- my $hbox_iconbar = $factory->createHBox($layout);
- my $align = $factory->createHVCenter($hbox_iconbar);
- $hbox_iconbar = $factory->createHBox($align);
- $factory->createImage($hbox_iconbar, $opts->{logo}) if exists $opts->{logo};
- my $header = $opts->{name} . " " . $opts->{version};
- $factory->createHeading($hbox_iconbar, $header);
-
- # comments
- my $hbox = $factory->createHBox($layout);
- $align = $factory->createAlignment($hbox, 3, 0);
- $factory->createLabel( $align, $opts->{comments}, 0, 0) if exists $opts->{comments};
-
- # copyright
- $hbox = $factory->createHBox($layout);
- $align = $factory->createHVCenter($hbox);
- $factory->createLabel( $align, $opts->{copyright}, 0, 0) if exists $opts->{copyright};
-
- # website / website_label
- $hbox = $factory->createHBox($layout);
- $align = $factory->createHVCenter($hbox);
- $website = $opts->{website} if exists $opts->{website};
- $website_label = $opts->{website_label} if exists $opts->{website_label};
- my $webref = "<a href=\"". $website ."\">". $website_label ."</a>";
- $factory->createRichText( $align, $webref);
-
- # Credits, License and Close buttons
- $hbox = $factory->createHBox($layout);
- $align = $factory->createLeft($hbox);
- my $hbox1 = $factory->createHBox($align);
- my $creditsButton = $factory->createPushButton($hbox1, N("Credits"));
- my $licenseButton = $factory->createPushButton($hbox1, N("License"));
- $factory->createHSpacing($hbox, 2.0);
- $align = $factory->createRight($hbox);
- my $closeButton = $factory->createPushButton($align, N("Close"));
-
- # AboutDialog Events
- while(1) {
- my $event = $aboutdlg->waitForEvent();
- my $eventType = $event->eventType();
-
- #event type checking
- if ($eventType == $yui::YEvent::CancelEvent) {
- last;
- }
- elsif ($eventType == $yui::YEvent::WidgetEvent) {
- # widget selected
- my $widget = $event->widget();
-
- if($widget == $licenseButton) {
- _License($opts->{license}) if exists $opts->{license};
- }
- elsif ($widget == $creditsButton) {
- _Credits($opts);
- }
- elsif ($widget == $closeButton) {
- last;
- }
- }
- elsif ($eventType == $yui::YEvent::MenuEvent) {
- my $menuEvent = yui::YMGAWidgetFactory::getYMenuEvent($event);
- #TODO check why is not working
- run_program::raw({ detach => 1 }, 'www-browser', $menuEvent->id());
- }
- }
-
- destroy $aboutdlg;
-}
-
-#=============================================================
-
=head2 trim
=head3 INPUT
@@ -741,4 +188,38 @@ sub md5sum {
return wantarray() ? @md5 : $md5[0];
}
+#=============================================================
+
+=head2 pathList2hash
+
+=head3 INPUT
+
+paths: ARRAY of string containing path like strings
+ (/ is the separator)
+
+=head3 OUTPUT
+
+\%tree: HASH reference containing the same structur passed as ARRAY
+ in a tree view form, leaves are undef.
+
+=head3 DESCRIPTION
+
+This function return a tree representation of the given array.
+
+=cut
+
+#=============================================================
+
+sub pathList2hash {
+ my %tree;
+ for (@_)
+ {
+ my $last = \\%tree;
+ $last = \$$last->{$_} for split /\//;
+ }
+
+ return \%tree;
+}
+
1; # End of AdminPanel::Shared
+