From 95592ce9fc2e0edd1168d6d80152730cce9bb2a1 Mon Sep 17 00:00:00 2001 From: Angelo Naselli Date: Fri, 7 Nov 2014 00:20:53 +0100 Subject: - More porting for packages info - Added a link to manage hidden information (though has problems in ncurses) --- modules/rpmdragora/dragoraUpdate | 31 +++++++++- modules/rpmdragora/rpmdragora | 120 ++++++++++++++++++++++----------------- 2 files changed, 97 insertions(+), 54 deletions(-) (limited to 'modules') diff --git a/modules/rpmdragora/dragoraUpdate b/modules/rpmdragora/dragoraUpdate index b0c4247..cdc5c47 100755 --- a/modules/rpmdragora/dragoraUpdate +++ b/modules/rpmdragora/dragoraUpdate @@ -252,6 +252,8 @@ sub run_treeview_dialog { my $closeButton = $factory->createPushButton($hbox, $loc->N("Quit") ); $statusbar = $factory->createBusyIndicator($vbox, "" ); + my $info_options = {}; + while(1) { my $event = $dialog->waitForEvent(); my $eventType = $event->eventType(); @@ -260,6 +262,31 @@ sub run_treeview_dialog { if ($eventType == $yui::YEvent::CancelEvent) { last if quit(); } + elsif ($eventType == $yui::YEvent::MenuEvent) { + my $item = $event->item(); + if (!$item) { + #URL emitted or at least a ref into RichText widget + my $url = yui::toYMenuEvent($event)->id (); + $item = $packageTbl->selectedItem(); + my $pkg = $data{$item->index()}{fullname}; + if ($url eq $AdminPanel::Rpmdragora::gui::hidden_info{details}) { + $info_options->{details} = 1; + AdminPanel::Rpmdragora::gui::setInfoOnWidget($pkg, $infoBox, $info_options); + } + elsif ($url eq $AdminPanel::Rpmdragora::gui::hidden_info{files}) { + $info_options->{files} = 1; + AdminPanel::Rpmdragora::gui::setInfoOnWidget($pkg, $infoBox, $info_options); + } + elsif ($url eq $AdminPanel::Rpmdragora::gui::hidden_info{changelog}) { + $info_options->{changelog} = 1; + AdminPanel::Rpmdragora::gui::setInfoOnWidget($pkg, $infoBox, $info_options); + } + else { + # default it's really a URL + AdminPanel::Rpmdragora::gui::run_browser($url); + } + } + } elsif ($eventType == $yui::YEvent::WidgetEvent) { # widget selected my $widget = $event->widget(); @@ -295,6 +322,7 @@ sub run_treeview_dialog { my $item = $packageTbl->selectedItem(); if ($item) { my $pkg = $data{$item->index()}{fullname}; + $info_options = {}; AdminPanel::Rpmdragora::gui::setInfoOnWidget($pkg, $infoBox); } my $wEvent = yui::toYWidgetEvent($event); @@ -308,9 +336,6 @@ sub run_treeview_dialog { } yui::YUI::app()->normalCursor(); } - elsif ($widget == $infoBox) { - print "RichText widget Event\n"; - } elsif ($widget == $selectButton) { yui::YUI::app()->busyCursor(); $initialized = 0; diff --git a/modules/rpmdragora/rpmdragora b/modules/rpmdragora/rpmdragora index 51f2b55..f566a76 100755 --- a/modules/rpmdragora/rpmdragora +++ b/modules/rpmdragora/rpmdragora @@ -198,14 +198,14 @@ sub detaillist_changeditem_callback { } sub detaillist_callback { - my ($selection, $info, $options) = @_; + my ($selection, $info, $options, $show_options) = @_; $info->setValue(""); return if( ref $selection ne "yui::YItem"); my $info_text ="

" . $loc->N("Informations") . "

"; - my @data = get_info($options->{table_item_list}[$selection->index()],$info->parent()->parent()); + my @data = get_info($options->{table_item_list}[$selection->index()], $show_options); for(@{$data[0]}){ if(ref $_ ne "ARRAY"){ $info_text .= "
" . $_; @@ -1084,6 +1084,8 @@ sub run_treeview_dialog { ask_browse_tree_given_widgets_for_rpmdragora($options); + my $info_options = {}; + ######## main loop #################### while(1) { my $event = $my_win->waitForEvent(); @@ -1098,58 +1100,73 @@ sub run_treeview_dialog { elsif ($eventType == $yui::YEvent::MenuEvent) { ### MENU ### my $item = $event->item(); - my $menuLabel = $item->label(); - if ($menuLabel eq $fileMenu{ quit }->label()) { - #menu File->Quit - quit(); - last; - } - elsif ($menuLabel eq $fileMenu{ update }->label()) { - update_sources_interactive($urpm, transient => $my_win) - and $reload_db_and_clear_all->(); + if (!$item) { + #URL emitted or at least a ref into RichText widget + my $url = yui::toYMenuEvent($event)->id (); + $item = $detail_list->selectedItem(); + if ($url eq $AdminPanel::Rpmdragora::gui::hidden_info{details}) { + $info_options->{details} = 1; + detaillist_callback($item, $info, \%$options, $info_options); + } + else { + # default it's really a URL + AdminPanel::Rpmdragora::gui::run_browser($url); + } } - elsif ($menuLabel eq $fileMenu{ reset_sel }->label()) { - if ($MODE ne 'remove') { - my $db = eval { open_rpm_db() }; - if (!ref($db)) { - statusbar_msg($loc->N("Reset aborted (RPM DB is locked by another process)"), 1); - return; + else { + my $menuLabel = $item->label(); + if ($menuLabel eq $fileMenu{ quit }->label()) { + #menu File->Quit + quit(); + last; + } + elsif ($menuLabel eq $fileMenu{ update }->label()) { + update_sources_interactive($urpm, transient => $my_win) + and $reload_db_and_clear_all->(); + } + elsif ($menuLabel eq $fileMenu{ reset_sel }->label()) { + if ($MODE ne 'remove') { + my $db = eval { open_rpm_db() }; + if (!ref($db)) { + statusbar_msg($loc->N("Reset aborted (RPM DB is locked by another process)"), 1); + return; + } + $urpm->disable_selected( + $db, $urpm->{state}, + map { if_($pkgs->{$_}{selected}, $pkgs->{$_}{pkg}) } keys %$pkgs,); } - $urpm->disable_selected( - $db, $urpm->{state}, - map { if_($pkgs->{$_}{selected}, $pkgs->{$_}{pkg}) } keys %$pkgs,); + undef $pkgs->{$_}{selected} foreach keys %$pkgs; + reset_search(); + $size_selected = 0; + $force_displaying_group = 1; + my $tree_selection = $tree->currentItem(); + } + elsif ($menuLabel eq $fileMenu{ reload }->label()) { + $reload_db_and_clear_all->(); + } + elsif ($menuLabel eq $helpMenu{ about }->label()) { + my $translators = $loc->N("_: Translator(s) name(s) & email(s)\n"); + $translators =~ s/\/\>\;/g; + my $sh_gui = AdminPanel::Shared::GUI->new(); + $sh_gui->AboutDialog({ name => "Rpmdragora", + version => "TODO", + credits => $loc->N("Copyright (C) %s Mageia community", '2013-2014'), + license => $loc->N("GPLv2"), + description => $loc->N("Rpmdragora is the Mageia package management tool."), + authors => $loc->N("

Developers

+ +

Translators

+ ", + "Angelo Naselli <anaselli\@linux.it>", + "Matteo Pasotti <matteo.pasotti\@gmail.com>", + $translators + ), + } + ); } - undef $pkgs->{$_}{selected} foreach keys %$pkgs; - reset_search(); - $size_selected = 0; - $force_displaying_group = 1; - my $tree_selection = $tree->currentItem(); - } - elsif ($menuLabel eq $fileMenu{ reload }->label()) { - $reload_db_and_clear_all->(); - } - elsif ($menuLabel eq $helpMenu{ about }->label()) { - my $translators = $loc->N("_: Translator(s) name(s) & email(s)\n"); - $translators =~ s/\/\>\;/g; - my $sh_gui = AdminPanel::Shared::GUI->new(); - $sh_gui->AboutDialog({ name => "Rpmdragora", - version => "TODO", - credits => $loc->N("Copyright (C) %s Mageia community", '2013-2014'), - license => $loc->N("GPLv2"), - description => $loc->N("Rpmdragora is the Mageia package management tool."), - authors => $loc->N("

Developers

- -

Translators

- ", - "Angelo Naselli <anaselli\@linux.it>", - "Matteo Pasotti <matteo.pasotti\@gmail.com>", - $translators - ), - } - ); } } elsif ($eventType == $yui::YEvent::WidgetEvent) { @@ -1180,6 +1197,7 @@ sub run_treeview_dialog { tree_callback($tree->currentItem(),\%$options); } elsif ($widget == $detail_list){ + $info_options = {}; detaillist_callback($detail_list->selectedItem(), $info, \%$options); detaillist_changeditem_callback($detail_list, \%$options); } -- cgit v1.2.1