Ignore:
Timestamp:
02/08/10 00:07:56 (2 years ago)
Author:
azawawi
Message:

Refactored OpenInFileBrowserAction? to support "Open with default System Editor" feature on KDE/GNOME unix platforms

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Padre/lib/Padre/Wx/Directory/OpenInFileBrowserAction.pm

    r10610 r10611  
    6464    } 
    6565 
    66     my $error = undef; 
     66    my $error; 
    6767    if (Padre::Constant::WIN32) { 
    6868 
     
    7272    } elsif (Padre::Constant::UNIX) { 
    7373        my $parent_folder = File::Basename::dirname($filename); 
    74         if ( defined $ENV{KDE_FULL_SESSION} ) { 
    75  
    76             # In KDE, execute: kfmclient exec $filename 
    77             $error = $self->_execute( 'kfmclient', "exec", $parent_folder ); 
    78         } elsif ( defined $ENV{GNOME_DESKTOP_SESSION_ID} ) { 
    79  
    80             # In Gnome, execute: nautilus --nodesktop --browser $filename 
    81             $error = $self->_execute( 'nautilus', "--no-desktop", "--browser", $parent_folder ); 
    82         } else { 
    83             $error = "Could not find KDE or GNOME"; 
    84         } 
     74        $error = $self->_execute_unix($parent_folder); 
    8575    } else { 
    8676 
    87         #Unsupported Operating system. 
    88         $error = "Unsupported operating system: '$^O'"; 
     77        # Unsupported 
     78        $error = sprintf(Wx::gettext("Unsupported OS: %s"), '$^O'); 
    8979    } 
    9080 
    91     if ( defined $error ) { 
    92         Wx::MessageBox( $error, Wx::gettext("Error"), Wx::wxOK, $main, ); 
     81    if ( $error ) { 
     82        $main->error( $error ); 
    9383    } 
    9484 
    9585    return; 
     86} 
     87 
     88# 
     89# Open with default system editor 
     90# 
     91sub open_with_default_system_editor { 
     92    my ($self, $filename) = @_; 
     93 
     94    my $main = Padre::Current->main; 
     95    unless( $filename ) { 
     96        $main->error( Wx::gettext("No filename") ); 
     97        return; 
     98    } 
     99     
     100    my $error; 
     101    if(Padre::Constant::WIN32) { 
     102        # Win32 
     103        require Padre::Util::Win32; 
     104        Padre::Util::Win32::ExecuteProcessAndWait( 
     105            directory  => $self->{cwd}, 
     106            file       => $filename, 
     107            parameters => '', 
     108            show       => 1); 
     109    } elsif(Padre::Constant::UNIX) { 
     110        # Unix 
     111        $error = $self->_execute_in_file_mananger($filename); 
     112    } else { 
     113        # Unsupported 
     114        $error = sprintf(Wx::gettext("Unsupported OS: %s"), '$^O'); 
     115    } 
     116     
     117    if ( $error ) { 
     118        $main->error( $error ); 
     119    } 
     120 
     121    return;  
     122} 
     123 
     124# 
     125# Try to execute a file in KDE or GNOME 
     126# 
     127sub _execute_unix { 
     128    die "Only to be called in UNIX!" unless Padre::Constant::UNIX; 
     129 
     130    my ($self, $filename) = @_; 
     131     
     132    my $error; 
     133    if ( defined $ENV{KDE_FULL_SESSION} ) { 
     134 
     135        # In KDE, execute: kfmclient exec $filename 
     136        $error = $self->_execute( 'kfmclient', "exec", $filename ); 
     137    } elsif ( defined $ENV{GNOME_DESKTOP_SESSION_ID} ) { 
     138 
     139        # In Gnome, execute: nautilus --nodesktop --browser $filename 
     140        $error = $self->_execute( 'nautilus', "--no-desktop", "--browser", $filename ); 
     141    } else { 
     142        $error = Wx::gettext("Could not find KDE or GNOME"); 
     143    } 
     144 
     145    return $error; 
    96146} 
    97147 
     
    102152=head1 NAME 
    103153 
    104 Padre::Wx::Directory::OpenInFileBrowserAction - Ecliptic's Open in file browser action 
     154Padre::Wx::Directory::OpenInFileBrowserAction - Open in file browser action 
    105155 
    106156=head1 DESCRIPTION 
    107157 
    108 =head2 Open in File Browser (Shortcut: C<Ctrl+6>) 
     158=head2 Open in File Browser 
    109159 
    110160For the current saved Padre document, open the platform's file manager/browser and 
Note: See TracChangeset for help on using the changeset viewer.