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 )