Wrangler
view release on metacpan or search on metacpan
lib/Wrangler/Wx/Dialog/ListingToText.pm view on Meta::CPAN
my $btn_radio3 = new Wx::RadioButton($self, -1, 'prepend relative dir-up');
my $radio_sizer = new Wx::BoxSizer(wxHORIZONTAL);
$radio_sizer->Add($btn_radio1);
$radio_sizer->Add($btn_radio2);
$radio_sizer->Add($btn_radio3);
## element 2: a text field for diplaying
$self->{text} = Wx::TextCtrl->new($self, -1, '', wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE);
## element 3: some buttons
my $btn_clipboard = new Wx::Button($self, -1, 'Copy to Clipboard');
my $btn_save = new Wx::Button($self, -1, 'Save as...');
my $btn_sizer = new Wx::BoxSizer(wxHORIZONTAL);
$btn_sizer->Add($btn_clipboard, 0, wxRIGHT, 15);
$btn_sizer->Add($btn_save, 0, wxRIGHT, 2);
$btn_sizer->Add(new Wx::Button($self, wxID_CANCEL, 'Cancel'), 0, wxRIGHT, 5);
my $sizer = Wx::FlexGridSizer->new(3, 1, 0, 0); # rows,cols,vgap,hgap
$sizer->AddGrowableCol(0); # zerobased
$sizer->AddGrowableRow(1); # zerobased
$sizer->Add($radio_sizer, 0, wxALL|wxGROW, 5);
$sizer->Add($self->{text}, 0, wxALL|wxGROW, 5);
$sizer->Add($btn_sizer, 0, wxTOP|wxALIGN_RIGHT, 10);
EVT_RADIOBUTTON($self, $btn_radio1, sub { $self->{mode} = 1; $self->populate_display(); });
EVT_RADIOBUTTON($self, $btn_radio2, sub { $self->{mode} = 2; $self->populate_display(); });
EVT_RADIOBUTTON($self, $btn_radio3, sub { $self->{mode} = 3; $self->populate_display(); });
EVT_BUTTON($self, $btn_save, \&collect_path );
EVT_BUTTON($self, $btn_clipboard, sub {
Wrangler::debug("ListingToText: copy to clipboard");
my $tdo = Wx::TextDataObject->new();
$tdo->SetText( $self->{text}->GetValue() );
wxTheClipboard->Open();
wxTheClipboard->SetData( $tdo );
wxTheClipboard->Close();
});
$self->populate_display();
lib/Wrangler/Wx/FileBrowser.pm view on Meta::CPAN
my $oldlen = $dialog->{length};
my $newlen = length($multi);
Wrangler::debug("MULTI: $multi OLDLEN: $oldlen NEWLEN:$newlen");
# todo
}
}else{
Wrangler::debug("Multiple rename CANCELd ");
}
# clear ourclipboard
undef($filebrowser->{our_stash});
}
}
sub ChangeProperty {
my $filebrowser = shift;
my $metakey = shift;
my $w = $filebrowser->{wrangler};
lib/Wrangler/Wx/FileBrowser.pm view on Meta::CPAN
wxTheClipboard->Close();
Wrangler::debug("FileBrowser::PasteBitmap: ok:$ok");
unless($ok){
my $dialog = Wx::MessageDialog->new($filebrowser, "The Clipboard doesn't hold bitmap data to paste.", "Paste ...as image", wxOK );
$dialog->ShowModal();
return;
}
my $dialog = Wx::FileDialog->new($filebrowser, "Choose a filename and directory", $filebrowser->{current_dir}, 'clipboard.png', "*.*", wxFD_SAVE|wxFD_OVERWRITE_PROMPT );
return unless $dialog->ShowModal() == wxID_OK;
my $path = $dialog->GetPath();
my $type = $path =~ /\.jpg$/ ? wxBITMAP_TYPE_JPEG : wxBITMAP_TYPE_PNG;
$ok = $bdo->GetBitmap()->SaveFile($path, $type);
unless($ok){
my $error = "PasteBitmap: can't write clipboard's bitmap-data to file: $!";
Wrangler::debug($error);
my $dialog = Wx::MessageDialog->new($filebrowser, $error, "Error on Paste ...as image", wxOK );
$dialog->ShowModal();
return;
}
$filebrowser->RePopulate();
}
sub Todo {
lib/Wrangler/Wx/FileBrowser.pm view on Meta::CPAN
if(@$selections){
## hardcoded file context menu entries
EVT_MENU( $filebrowser, $menu->Append(-1, "View\tENTER", 'Execute/view with viewer'), sub { $filebrowser->OnActivated } );
EVT_MENU( $filebrowser, $menu->Append(-1, "View/open with...", 'Select default viewer/application/command for this mime-type'), sub { Wrangler::PubSub::publish('show.settings', 1, 3); } );
$menu->AppendSeparator();
EVT_MENU( $filebrowser, $menu->Append(-1, "Cut\tCTRL+X", 'Cut' ), sub { $filebrowser->Cut(); } );
EVT_MENU( $filebrowser, $menu->Append(-1, "Copy\tCTRL+C", 'Copy' ), sub { $filebrowser->Copy(); } );
my $itemPaste = Wx::MenuItem->new($menu, -1, "Paste\tCTRL+V", 'Paste');
$menu->Append($itemPaste);
if(0){ # todo: check: we have something in the clipboard AND selection is 1 dir -> "integrate into folder"
$menu->Enable($itemPaste->GetId(),1);
EVT_MENU( $filebrowser, $itemPaste, sub { $filebrowser->Todo(); } );
}else{
$menu->Enable($itemPaste->GetId(),0);
}
$menu->AppendSeparator();
EVT_MENU( $filebrowser, $menu->Append(-1, "Rename\tF2", 'Rename file' ), sub { $filebrowser->Rename(); } );
unless($col_value_from eq 'Filesystem::Filename'){
my $itemChange = Wx::MenuItem->new($menu, -1, "Change '$col_value_from'", "Change '$col_value_from'");
$menu->Append($itemChange);
lib/Wrangler/Wx/FileBrowser.pm view on Meta::CPAN
my $dialog = Wrangler::Wx::Dialog::Properties->new($filebrowser,$selections);
$dialog->ShowModal();
$dialog->Destroy();
});
}else{
## hardcoded folder context menu entries
EVT_MENU( $filebrowser, $menu->Append(-1, "New folder", 'Create a folder' ), sub { $filebrowser->Mkdir(); } );
EVT_MENU( $filebrowser, $menu->Append(-1, "New file", 'Create a file/node' ), sub { $filebrowser->Mknod(); } );
$menu->AppendSeparator();
my $itemPaste = Wx::MenuItem->new($menu, -1, "Paste\tCTRL+V", 'Paste');
my $itemPasteSymlinks = Wx::MenuItem->new($menu, -1, "Paste ...as symlink(s)", 'Paste files on the clipboard as symlinks');
my $itemPasteBitmap = Wx::MenuItem->new($menu, -1, "Paste ...as image", 'Paste clipboard contents as image file');
$menu->Append($itemPaste);
$menu->Append($itemPasteSymlinks);
$menu->Append($itemPasteBitmap);
if(1){ # as it seems, it's safe to assume there's always something in the clipboard
$menu->Enable($itemPaste->GetId(),1);
EVT_MENU( $filebrowser, $itemPaste, sub { $filebrowser->Paste(); } );
$menu->Enable($itemPasteSymlinks->GetId(),1);
EVT_MENU( $filebrowser, $itemPasteSymlinks, sub { $filebrowser->PasteSymlinks(); } );
$menu->Enable($itemPasteBitmap->GetId(),1);
EVT_MENU( $filebrowser, $itemPasteBitmap, sub { $filebrowser->PasteBitmap(); } );
}else{
$menu->Enable($itemPaste->GetId(),0);
}
$menu->AppendSeparator();
lib/Wrangler/Wx/FileBrowserTreeList.pm view on Meta::CPAN
require Wrangler::Dialog::MultiRename;
my $dialog = Wrangler::Dialog::MultiRename->new($filebrowser->{our_stash}->{rename});
if($dialog->ShowModal() == wxID_OK){
if( $dialog->{pre}->IsModified || $dialog->{ins}->IsModified ){
Wrangler::debug("Prepend/append-rename was used ");
my $pre = $dialog->{pre}->GetValue();
my $ins = $dialog->{ins}->GetValue();
foreach my $item (@{ $filebrowser->{ourclipboard} }){
my $oldpath = File::Spec->catfile( $filebrowser->{current_dir}, $item->{file});
my ($file, $dirs, $suffix) = File::Basename::fileparse($item->{file}, qr/\.[^.]*/);
my $newpath = File::Spec->catfile( $filebrowser->{current_dir}, $pre.$file.$ins.$suffix);
next if $oldpath eq $newpath; # prevent that the update-internal-tree gets corrupted, and of course an unnecessary fs IO
# todo: check this via the OnEditLabel dirty? function
## do the actual rename
lib/Wrangler/Wx/FileBrowserTreeList.pm view on Meta::CPAN
$multi = decode_utf8($multi); # decode
Encode::_utf8_off($multi); # then remove the utf8-flag the hard way
my $oldlen = $dialog->{length};
my $newlen = length($multi);
Wrangler::debug("MULTI: $multi OLDLEN: $oldlen NEWLEN:$newlen");
}
}else{
Wrangler::debug("Multiple rename CANCELd ");
}
# clear ourclipboard
undef($filebrowser->{our_stash});
# Fire the rename via the Event which are triggered by EditLabel OnBEginEdit / OnEndEdit
# $filebrowser->EditLabel($selId);
}
}
sub OurDelete { # treelistctrl has a Delete() as well!
my $filebrowser = shift;
lib/Wrangler/Wx/Menu.pm view on Meta::CPAN
#+ NOTE that we don't have the tab-separated accelerator hint here, which is auto-watched by
#+ Wx, and this would overide our OnChar routines in FormEditor, FileBrowser, etc. as this
#+ here is on the main frame
my $menu = Wx::Menu->new();
## hardcoded folder context menu entries
EVT_MENU( $parent, $menu->Append(-1, "New folder", 'Create a folder' ), sub { $parent->{filebrowser}->Mkdir(); } );
EVT_MENU( $parent, $menu->Append(-1, "New file", 'Create a file/node' ), sub { $parent->{filebrowser}->Mknod(); } );
$menu->AppendSeparator();
my $itemPaste = Wx::MenuItem->new($menu, -1, "Paste (CTRL+V)", 'Paste');
my $itemPasteSymlinks = Wx::MenuItem->new($menu, -1, "Paste ...as symlink(s)", 'Paste files on the clipboard as symlinks');
my $itemPasteBitmap = Wx::MenuItem->new($menu, -1, "Paste ...as image", 'Paste clipboard contents as image file');
$menu->Append($itemPaste);
$menu->Append($itemPasteSymlinks);
$menu->Append($itemPasteBitmap);
if(1){ # as it seems, it's safe to assume there's always something in the clipboard
$menu->Enable($itemPaste->GetId(),1);
EVT_MENU( $parent, $itemPaste, sub { $parent->{filebrowser}->Paste(); } );
$menu->Enable($itemPasteSymlinks->GetId(),1);
EVT_MENU( $parent, $itemPasteSymlinks, sub { $parent->{filebrowser}->PasteSymlinks(); } );
$menu->Enable($itemPasteBitmap->GetId(),1);
EVT_MENU( $parent, $itemPasteBitmap, sub { $parent->{filebrowser}->PasteBitmap(); } );
}else{
$menu->Enable($itemPaste->GetId(),0);
}
$menu->AppendSeparator();
( run in 1.476 second using v1.01-cache-2.11-cpan-84e82930d8c )