FSpot.MainWindow.HandleCopy C# (CSharp) Method

HandleCopy() public method

public HandleCopy ( object sender, EventArgs args ) : void
sender object
args System.EventArgs
return void
		public void HandleCopy (object sender, EventArgs args)
		{
			Clipboard primary = Clipboard.Get (Atom.Intern ("PRIMARY", false));
			Clipboard clipboard = Clipboard.Get (Atom.Intern ("CLIPBOARD", false));

			if (Window.Focus is Editable) {
				(Window.Focus as Editable).CopyClipboard ();
				return;
			}

			TargetList targetList = new TargetList ();
			targetList.AddTextTargets ((uint)DragDropTargets.TargetType.PlainText);
			targetList.AddUriTargets ((uint)DragDropTargets.TargetType.UriList);
			targetList.Add (
				DragDropTargets.CopyFilesEntry.Target,
				(uint)DragDropTargets.CopyFilesEntry.Flags,
				(uint)DragDropTargets.CopyFilesEntry.Info);

			// use eager evaluation, because we want to copy the photos which are currently selected ...
			var uris = new UriList (from p in SelectedPhotos ()
			                                 select p.DefaultVersion.Uri);
			var paths = String.Join (" ",
				                     (from p in SelectedPhotos ()
				                                  select p.DefaultVersion.Uri.LocalPath).ToArray ()
			                     );

			clipboard.SetWithData ((TargetEntry[])targetList, delegate (Clipboard clip, SelectionData data, uint info) {

				if (info == (uint)DragDropTargets.TargetType.PlainText) {
					data.Text = paths;
					return;
				}

				if (info == (uint)DragDropTargets.TargetType.UriList) {
					data.SetUriListData (uris);
					return;
				}

				if (info == DragDropTargets.CopyFilesEntry.Info) {
					data.SetCopyFiles (uris);
					return;
				}

				Log.DebugFormat ("Unknown Selection Data Target (info: {0})", info);
			}, delegate {
			});

			primary.Text = paths;
		}
MainWindow