Changeset 10611
- Timestamp:
- 02/08/10 00:07:56 (7 months ago)
- Location:
- trunk/Padre/lib/Padre
- Files:
-
- 3 modified
-
Action/File.pm (modified) (1 diff)
-
Wx/Directory/OpenInFileBrowserAction.pm (modified) (3 diffs)
-
Wx/Main.pm (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Padre/lib/Padre/Action/File.pm
r10604 r10611 133 133 comment => Wx::gettext('Opens the file with the default system editor'), 134 134 menu_event => sub { 135 $_[0]->on_open_with_default_system_editor; 135 my $document = $_[0]->current->document or return; 136 $_[0]->on_open_with_default_system_editor( $document->filename ); 136 137 }, 137 138 ); -
trunk/Padre/lib/Padre/Wx/Directory/OpenInFileBrowserAction.pm
r10610 r10611 64 64 } 65 65 66 my $error = undef;66 my $error; 67 67 if (Padre::Constant::WIN32) { 68 68 … … 72 72 } elsif (Padre::Constant::UNIX) { 73 73 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); 85 75 } else { 86 76 87 # Unsupported Operating system.88 $error = "Unsupported operating system: '$^O'";77 # Unsupported 78 $error = sprintf(Wx::gettext("Unsupported OS: %s"), '$^O'); 89 79 } 90 80 91 if ( defined$error ) {92 Wx::MessageBox( $error, Wx::gettext("Error"), Wx::wxOK, $main,);81 if ( $error ) { 82 $main->error( $error ); 93 83 } 94 84 95 85 return; 86 } 87 88 # 89 # Open with default system editor 90 # 91 sub 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 # 127 sub _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; 96 146 } 97 147 … … 102 152 =head1 NAME 103 153 104 Padre::Wx::Directory::OpenInFileBrowserAction - Ecliptic'sOpen in file browser action154 Padre::Wx::Directory::OpenInFileBrowserAction - Open in file browser action 105 155 106 156 =head1 DESCRIPTION 107 157 108 =head2 Open in File Browser (Shortcut: C<Ctrl+6>)158 =head2 Open in File Browser 109 159 110 160 For the current saved Padre document, open the platform's file manager/browser and -
trunk/Padre/lib/Padre/Wx/Main.pm
r10606 r10611 3667 3667 =head3 C<on_open_with_default_system_editor> 3668 3668 3669 $main->on_open_with_default_system_editor ;3670 3671 Opens the current documentin the default system editor3669 $main->on_open_with_default_system_editor($filename); 3670 3671 Opens C<$filename> in the default system editor 3672 3672 3673 3673 =cut 3674 3674 3675 3675 sub on_open_with_default_system_editor { 3676 my $self = shift; 3677 my $document = $self->current->document or return; 3678 my $filename = $document->filename; 3679 3680 unless( $filename ) { 3681 $self->error( Wx::gettext("No filename") ); 3682 return; 3683 } 3684 3685 if(Padre::Constant::WIN32) { 3686 # Win32 3687 require Padre::Util::Win32; 3688 Padre::Util::Win32::ExecuteProcessAndWait( 3689 directory => $self->{cwd}, 3690 file => $document->filename, 3691 parameters => '', 3692 show => 1); 3693 } else { 3694 #TODO please implement for other platforms 3695 $self->error(Wx::gettext("Not implemented!")); 3696 } 3676 my ( $self, $filename ) = @_; 3677 3678 require Padre::Wx::Directory::OpenInFileBrowserAction; 3679 Padre::Wx::Directory::OpenInFileBrowserAction->new->open_with_default_system_editor($filename); 3697 3680 } 3698 3681
