private void RenderFormat(ClipboardType format) { ClientManager.RequestClipboardContents(format); // wait for the data to arrive - this has to be blocking :( ClipboardResponse = new TaskCompletionSource <ByteString>(); var result = ClipboardResponse.Task.Result; if (format == ClipboardType.Text) { var resultString = result.ToStringUtf8().Replace("\n", Environment.NewLine); // TODO: do this efficiently // substrings by newlines, convert pieces etc var resultSize = Encoding.Unicode.GetByteCount(resultString); var handle = GlobalAlloc(GMEM_MOVABLE, (UIntPtr)(resultSize + 2)); if (handle == IntPtr.Zero) { throw new Win32Exception(); } var buf = GlobalLock(handle); if (buf == IntPtr.Zero) { throw new Win32Exception(); } unsafe { fixed(char *resultChars = resultString) { int bytesWritten = Encoding.Unicode.GetBytes(resultChars, resultString.Length, (byte *)buf, resultSize); *(char *)(buf + bytesWritten) = '\0'; // terminating NUL } } GlobalUnlock(handle); if (SetClipboardData(CF_UNICODETEXT, handle) == IntPtr.Zero) { throw new Win32Exception(); } // Calling this inline would DEADLOCK (!!!) our application SyncContext.Post(_ => GrabClipboard(), null); } else if (format == ClipboardType.Image) { using (var mstream = new MemoryStream(result.ToByteArray())) using (var bmp = new Bitmap(mstream)) { var res = SetClipboardData(CF_BITMAP, bmp.GetHbitmap()); } } }
public void RequestClipboardContents(ClipboardType type) { Send(new GaCmdIn { Clipboard = new ClipboardMessage { RequestClipboardContents = type } }); }
public static Boolean Contains(ClipboardType type) { return(type switch { ClipboardType.None => IsEmpty, ClipboardType.Raw => ContainsRaw(), ClipboardType.Text => ContainsText(), ClipboardType.Image => ContainsImage(), ClipboardType.Audio => ContainsAudio(), ClipboardType.Files => ContainsFiles(), _ => throw new NotSupportedException() });
private void CutFreqs() { if (SelectedFreqs != null && SelectedFreqs.Count > 0) { _FreqsClipboard = new List <Freq>(); foreach (Freq freq in SelectedFreqs) { _FreqsClipboard.Add(freq); } _CliboardType = ClipboardType.Cut; } }
private void CopyFreqs() { if (SelectedFreqs != null && SelectedFreqs.Count > 0) { _FreqsClipboard = new List <Freq>(); foreach (Freq freq in SelectedFreqs) { Freq newFreq = freq.Clone(); _FreqsClipboard.Add(newFreq); } _CliboardType = ClipboardType.Copy; } }
public async Task <Bookmark> ReadBookmark(ClipboardType type = ClipboardType.None) { var result = await Invoke <object>("readBookmark", type == ClipboardType.Selection? "selection" : string.Empty); var bm = new Bookmark(); if (result != null) { ScriptObjectHelper.DictionaryToScriptableType((System.Collections.Generic.IDictionary <string, object>)result, bm); } return(bm); }
private void SendClipboardData(ClipboardType type) { if (type == ClipboardType.None) { var types = (IEnumerable <ClipboardType>)MainForm.Invoke(new Func <IEnumerable <ClipboardType> >(MainForm.GetClipboardTypes)); var message = new GaCmdIn { Clipboard = new ClipboardMessage { ContentTypes = new ClipboardTypes { } } }; message.Clipboard.ContentTypes.Types_.AddRange(types); Send(message); return; } else if (type == ClipboardType.Text) { var clipboardText = (string)MainForm.Invoke(new Func <string>(MainForm.GetClipboardText)); if (clipboardText != null) { var message = new GaCmdIn(); message.Clipboard = new ClipboardMessage(); message.Clipboard.ClipboardContents = ByteString.CopyFromUtf8(clipboardText.Replace(Environment.NewLine, "\n")); Send(message); } } else if (type == ClipboardType.Image) { var image = (byte[])MainForm.Invoke(new Func <byte[]>(MainForm.GetClipboardImage)); if (image != null) { var message = new GaCmdIn(); message.Clipboard = new ClipboardMessage(); message.Clipboard.ClipboardContents = ByteString.CopyFrom(image); Send(message); } } }
public ClipBoardContent(ClipboardType clipboardType, List <GraphItem> blocks = null, List <GraphLine> lines = null) { this.clipboardType = clipboardType; if (blocks != null || blocks.Count > 0) { for (int ix = 0; ix < blocks.Count; ++ix) { this.blocks.Add(blocks[ix]); } } if (lines != null || lines.Count > 0) { for (int ix = 0; ix < lines.Count; ++ix) { this.lines.Add(lines[ix]); } } }
private static Profile GetProfileBy(ClipboardType type, JsonProfile jsonProfile, IWebDav webDav) { switch (type) { case ClipboardType.Text: return(new TextProfile(jsonProfile.Clipboard)); case ClipboardType.File: { if (FileIsImage(jsonProfile.File)) { return(new ImageProfile(jsonProfile, webDav)); } return(new FileProfile(jsonProfile, webDav)); } case ClipboardType.Image: return(new ImageProfile(jsonProfile, webDav)); } return(null); }
public static async Task <Profile> CreateFromRemote(IWebDav webDav) { string httpReply = await webDav.GetTextAsync(SyncService.REMOTE_RECORD_FILE, 0, 0).ConfigureAwait(false); Log.Write("[PULL] json " + httpReply); JsonProfile jsonProfile; try { JavaScriptSerializer serializer = new JavaScriptSerializer(); jsonProfile = serializer.Deserialize <JsonProfile>(httpReply); } catch (ArgumentException) { Log.Write("Existed profile file's format is wrong"); throw new Exception("failed to connect remote server"); } ClipboardType type = StringToClipBoardType(jsonProfile.Type); return(GetProfileBy(type, jsonProfile, webDav)); }
//Show the File Picker Popup async Task Popup_Show_FilePicker_Task(string targetPath, int targetIndex, bool storeIndex, FrameworkElement previousFocus) { try { //Check if the popup is already open if (!vFilePickerOpen) { //Play the popup opening sound PlayInterfaceSound(vConfigurationCtrlUI, "PopupOpen", false); //Save the previous focus element FrameworkElementFocusSave(vFilePickerElementFocus, previousFocus); } //Reset file picker variables vFilePickerCompleted = false; vFilePickerCancelled = false; vFilePickerResult = null; vFilePickerOpen = true; AVActions.ActionDispatcherInvoke(delegate { //Disable the file picker list lb_FilePicker.IsEnabled = false; gif_FilePicker_Loading.Show(); //Set file picker header texts grid_Popup_FilePicker_txt_Title.Text = vFilePickerTitle; grid_Popup_FilePicker_txt_Description.Text = vFilePickerDescription; //Change the list picker item style if (vFilePickerShowRoms) { lb_FilePicker.Style = Application.Current.Resources["ListBoxWrapPanelVertical"] as Style; lb_FilePicker.ItemTemplate = Application.Current.Resources["ListBoxItemRom"] as DataTemplate; grid_Popup_Filepicker_Row1.HorizontalAlignment = HorizontalAlignment.Center; } else { lb_FilePicker.Style = Application.Current.Resources["ListBoxVertical"] as Style; lb_FilePicker.ItemTemplate = Application.Current.Resources["ListBoxItemFile"] as DataTemplate; grid_Popup_Filepicker_Row1.HorizontalAlignment = HorizontalAlignment.Stretch; } //Update the navigation history index if (storeIndex) { FilePicker_NavigationHistoryAddUpdate(vFilePickerCurrentPath, lb_FilePicker.SelectedIndex); } //Clear the current file picker list List_FilePicker.Clear(); }); //Show the popup Popup_Show_Element(grid_Popup_FilePicker); //Update the current picker path vFilePickerSourcePath = vFilePickerCurrentPath; vFilePickerCurrentPath = targetPath; //Get and list all the disk drives if (targetPath == "PC") { AVActions.ActionDispatcherInvoke(delegate { //Enable or disable selection button in the list grid_Popup_FilePicker_button_SelectFolder.Visibility = Visibility.Collapsed; //Enable or disable file and folder availability grid_Popup_FilePicker_textblock_NoFilesAvailable.Visibility = Visibility.Collapsed; //Enable or disable the side navigate buttons grid_Popup_FilePicker_button_ControllerLeft.Visibility = Visibility.Visible; grid_Popup_FilePicker_button_ControllerUp.Visibility = Visibility.Collapsed; grid_Popup_FilePicker_button_ControllerStart.Visibility = Visibility.Collapsed; //Enable or disable the copy paste status if (vClipboardFiles.Any()) { grid_Popup_FilePicker_textblock_ClipboardStatus.Visibility = Visibility.Visible; } //Enable or disable the current path grid_Popup_FilePicker_textblock_CurrentPath.Visibility = Visibility.Collapsed; }); //Load folder images BitmapImage imageFolder = FileToBitmapImage(new string[] { "Assets/Default/Icons/Folder.png" }, vImageSourceFolders, vImageBackupSource, IntPtr.Zero, -1, 0); BitmapImage imageFolderDisc = FileToBitmapImage(new string[] { "Assets/Default/Icons/FolderDisc.png" }, vImageSourceFolders, vImageBackupSource, IntPtr.Zero, -1, 0); BitmapImage imageFolderNetwork = FileToBitmapImage(new string[] { "Assets/Default/Icons/FolderNetwork.png" }, vImageSourceFolders, vImageBackupSource, IntPtr.Zero, -1, 0); BitmapImage imageFolderPrevious = FileToBitmapImage(new string[] { "Assets/Default/Icons/Restart.png" }, vImageSourceFolders, vImageBackupSource, IntPtr.Zero, -1, 0); BitmapImage imageFolderDocuments = FileToBitmapImage(new string[] { "Assets/Default/Icons/Copy.png" }, vImageSourceFolders, vImageBackupSource, IntPtr.Zero, -1, 0); BitmapImage imageFolderDesktop = FileToBitmapImage(new string[] { "Assets/Default/Icons/Desktop.png" }, vImageSourceFolders, vImageBackupSource, IntPtr.Zero, -1, 0); BitmapImage imageFolderDownload = FileToBitmapImage(new string[] { "Assets/Default/Icons/Download.png" }, vImageSourceFolders, vImageBackupSource, IntPtr.Zero, -1, 0); BitmapImage imageFolderPictures = FileToBitmapImage(new string[] { "Assets/Default/Icons/Background.png" }, vImageSourceFolders, vImageBackupSource, IntPtr.Zero, -1, 0); BitmapImage imageFolderVideos = FileToBitmapImage(new string[] { "Assets/Default/Icons/BackgroundVideo.png" }, vImageSourceFolders, vImageBackupSource, IntPtr.Zero, -1, 0); BitmapImage imageFolderMusic = FileToBitmapImage(new string[] { "Assets/Default/Icons/Music.png" }, vImageSourceFolders, vImageBackupSource, IntPtr.Zero, -1, 0); //Add launch without a file option if (vFilePickerShowNoFile) { string fileDescription = "Launch application without a file"; BitmapImage fileImage = FileToBitmapImage(new string[] { "Assets/Default/Icons/AppLaunch.png" }, vImageSourceFolders, vImageBackupSource, IntPtr.Zero, -1, 0); DataBindFile dataBindFileWithoutFile = new DataBindFile() { FileType = FileType.FilePre, Name = fileDescription, Description = fileDescription + ".", ImageBitmap = fileImage, PathFile = string.Empty }; await ListBoxAddItem(lb_FilePicker, List_FilePicker, dataBindFileWithoutFile, false, false); } //Check and add the previous path if (!string.IsNullOrWhiteSpace(vFilePickerPreviousPath)) { DataBindFile dataBindFilePreviousPath = new DataBindFile() { FileType = FileType.FolderPre, Name = "Previous", NameSub = "(" + vFilePickerPreviousPath + ")", ImageBitmap = imageFolderPrevious, PathFile = vFilePickerPreviousPath }; await ListBoxAddItem(lb_FilePicker, List_FilePicker, dataBindFilePreviousPath, false, false); } //Add special folders DataBindFile dataBindFileDesktop = new DataBindFile() { FileType = FileType.FolderPre, Name = "My Desktop", ImageBitmap = imageFolderDesktop, PathFile = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) }; await ListBoxAddItem(lb_FilePicker, List_FilePicker, dataBindFileDesktop, false, false); DataBindFile dataBindFileDocuments = new DataBindFile() { FileType = FileType.FolderPre, Name = "My Documents", ImageBitmap = imageFolderDocuments, PathFile = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) }; await ListBoxAddItem(lb_FilePicker, List_FilePicker, dataBindFileDocuments, false, false); try { string downloadsPath = Registry.GetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", "{374DE290-123F-4565-9164-39C4925E467B}", string.Empty).ToString(); if (!string.IsNullOrWhiteSpace(downloadsPath) && Directory.Exists(downloadsPath)) { DataBindFile dataBindFileDownloads = new DataBindFile() { FileType = FileType.FolderPre, Name = "My Downloads", ImageBitmap = imageFolderDownload, PathFile = downloadsPath }; await ListBoxAddItem(lb_FilePicker, List_FilePicker, dataBindFileDownloads, false, false); } } catch { } DataBindFile dataBindFileMusic = new DataBindFile() { FileType = FileType.FolderPre, Name = "My Music", ImageBitmap = imageFolderMusic, PathFile = Environment.GetFolderPath(Environment.SpecialFolder.MyMusic) }; await ListBoxAddItem(lb_FilePicker, List_FilePicker, dataBindFileMusic, false, false); DataBindFile dataBindFilePictures = new DataBindFile() { FileType = FileType.FolderPre, Name = "My Pictures", ImageBitmap = imageFolderPictures, PathFile = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures) }; await ListBoxAddItem(lb_FilePicker, List_FilePicker, dataBindFilePictures, false, false); DataBindFile dataBindFileVideos = new DataBindFile() { FileType = FileType.FolderPre, Name = "My Videos", ImageBitmap = imageFolderVideos, PathFile = Environment.GetFolderPath(Environment.SpecialFolder.MyVideos) }; await ListBoxAddItem(lb_FilePicker, List_FilePicker, dataBindFileVideos, false, false); //Add all disk drives that are connected DriveInfo[] diskDrives = DriveInfo.GetDrives(); foreach (DriveInfo disk in diskDrives) { try { //Skip network drive depending on the setting if (disk.DriveType == DriveType.Network && Convert.ToBoolean(Setting_Load(vConfigurationCtrlUI, "HideNetworkDrives"))) { continue; } //Check if the disk is currently connected if (disk.IsReady) { //Get the current disk size string freeSpace = AVFunctions.ConvertBytesSizeToString(disk.TotalFreeSpace); string usedSpace = AVFunctions.ConvertBytesSizeToString(disk.TotalSize); string diskSpace = freeSpace + "/" + usedSpace; DataBindFile dataBindFileDisk = new DataBindFile() { FileType = FileType.Folder, Name = disk.Name, NameSub = disk.VolumeLabel, NameDetail = diskSpace, PathFile = disk.Name }; if (disk.DriveType == DriveType.CDRom) { dataBindFileDisk.FileType = FileType.FolderDisc; dataBindFileDisk.ImageBitmap = imageFolderDisc; } else if (disk.DriveType == DriveType.Network) { dataBindFileDisk.ImageBitmap = imageFolderNetwork; } else { dataBindFileDisk.ImageBitmap = imageFolder; } await ListBoxAddItem(lb_FilePicker, List_FilePicker, dataBindFileDisk, false, false); } } catch { } } //Add Json file locations foreach (ProfileShared Locations in vCtrlLocationsFile) { try { if (Directory.Exists(Locations.String2)) { //Check if the location is a root folder FileType locationType = FileType.FolderPre; DirectoryInfo locationInfo = new DirectoryInfo(Locations.String2); if (locationInfo.Parent == null) { locationType = FileType.Folder; } //Get the current disk size string diskSpace = string.Empty; DriveType disktype = DriveType.Unknown; try { DriveInfo driveInfo = new DriveInfo(Locations.String2); disktype = driveInfo.DriveType; string freeSpace = AVFunctions.ConvertBytesSizeToString(driveInfo.TotalFreeSpace); string usedSpace = AVFunctions.ConvertBytesSizeToString(driveInfo.TotalSize); diskSpace = freeSpace + "/" + usedSpace; } catch { } DataBindFile dataBindFileLocation = new DataBindFile() { FileType = locationType, Name = Locations.String2, NameSub = Locations.String1, NameDetail = diskSpace, PathFile = Locations.String2 }; if (disktype == DriveType.CDRom) { dataBindFileLocation.FileType = FileType.FolderDisc; dataBindFileLocation.ImageBitmap = imageFolderDisc; } else if (disktype == DriveType.Network) { dataBindFileLocation.ImageBitmap = imageFolderNetwork; } else { dataBindFileLocation.ImageBitmap = imageFolder; } await ListBoxAddItem(lb_FilePicker, List_FilePicker, dataBindFileLocation, false, false); } } catch { } } } //Get and list all the UWP applications else if (targetPath == "UWP") { AVActions.ActionDispatcherInvoke(delegate { //Enable or disable selection button in the list grid_Popup_FilePicker_button_SelectFolder.Visibility = Visibility.Collapsed; //Enable or disable file and folder availability grid_Popup_FilePicker_textblock_NoFilesAvailable.Visibility = Visibility.Collapsed; //Enable or disable the side navigate buttons grid_Popup_FilePicker_button_ControllerLeft.Visibility = Visibility.Visible; grid_Popup_FilePicker_button_ControllerUp.Visibility = Visibility.Collapsed; grid_Popup_FilePicker_button_ControllerStart.Visibility = Visibility.Collapsed; //Enable or disable the copy paste status grid_Popup_FilePicker_textblock_ClipboardStatus.Visibility = Visibility.Collapsed; //Enable or disable the current path grid_Popup_FilePicker_textblock_CurrentPath.Visibility = Visibility.Collapsed; }); //Add uwp applications to the filepicker list await ListLoadAllUwpApplications(lb_FilePicker, List_FilePicker); } else { //Clean the target path string targetPath = Path.GetFullPath(targetPath); //Add the Go up directory to the list if (Path.GetPathRoot(targetPath) != targetPath) { BitmapImage imageBack = FileToBitmapImage(new string[] { "Assets/Default/Icons/Up.png" }, vImageSourceFolders, vImageBackupSource, IntPtr.Zero, -1, 0); DataBindFile dataBindFileGoUp = new DataBindFile() { FileType = FileType.GoUpPre, Name = "Go up", Description = "Go up to the previous folder.", ImageBitmap = imageBack, PathFile = Path.GetDirectoryName(targetPath) }; await ListBoxAddItem(lb_FilePicker, List_FilePicker, dataBindFileGoUp, false, false); } else { BitmapImage imageBack = FileToBitmapImage(new string[] { "Assets/Default/Icons/Up.png" }, vImageSourceFolders, vImageBackupSource, IntPtr.Zero, -1, 0); DataBindFile dataBindFileGoUp = new DataBindFile() { FileType = FileType.GoUpPre, Name = "Go up", Description = "Go up to the previous folder.", ImageBitmap = imageBack, PathFile = "PC" }; await ListBoxAddItem(lb_FilePicker, List_FilePicker, dataBindFileGoUp, false, false); } AVActions.ActionDispatcherInvoke(delegate { //Enable or disable the copy paste status if (vClipboardFiles.Any()) { grid_Popup_FilePicker_textblock_ClipboardStatus.Visibility = Visibility.Visible; } //Enable or disable the current path grid_Popup_FilePicker_textblock_CurrentPath.Text = "Current path: " + targetPath; grid_Popup_FilePicker_textblock_CurrentPath.Visibility = Visibility.Visible; }); //Add launch emulator options if (vFilePickerShowRoms) { string fileDescription = "Launch the emulator without a rom loaded"; BitmapImage fileImage = FileToBitmapImage(new string[] { "Assets/Default/Icons/Emulator.png" }, vImageSourceFolders, vImageBackupSource, IntPtr.Zero, -1, 0); DataBindFile dataBindFileWithoutRom = new DataBindFile() { FileType = FileType.FilePre, Name = fileDescription, Description = fileDescription + ".", ImageBitmap = fileImage, PathFile = string.Empty }; await ListBoxAddItem(lb_FilePicker, List_FilePicker, dataBindFileWithoutRom, false, false); string romDescription = "Launch the emulator with this folder as rom"; BitmapImage romImage = FileToBitmapImage(new string[] { "Assets/Default/Icons/Emulator.png" }, vImageSourceFolders, vImageBackupSource, IntPtr.Zero, -1, 0); DataBindFile dataBindFileFolderRom = new DataBindFile() { FileType = FileType.FilePre, Name = romDescription, Description = romDescription + ".", ImageBitmap = romImage, PathFile = targetPath }; await ListBoxAddItem(lb_FilePicker, List_FilePicker, dataBindFileFolderRom, false, false); } //Enable or disable the side navigate buttons AVActions.ActionDispatcherInvoke(delegate { grid_Popup_FilePicker_button_ControllerLeft.Visibility = Visibility.Visible; grid_Popup_FilePicker_button_ControllerUp.Visibility = Visibility.Visible; grid_Popup_FilePicker_button_ControllerStart.Visibility = Visibility.Visible; }); //Get all the top files and folders DirectoryInfo directoryInfo = new DirectoryInfo(targetPath); DirectoryInfo[] directoryFolders = null; FileInfo[] directoryFiles = null; if (vFilePickerSortType == SortingType.Name) { directoryFolders = directoryInfo.GetDirectories("*", SearchOption.TopDirectoryOnly).OrderBy(x => x.Name).ToArray(); directoryFiles = directoryInfo.GetFiles("*", SearchOption.TopDirectoryOnly).OrderBy(x => x.Name).ToArray(); } else { directoryFolders = directoryInfo.GetDirectories("*", SearchOption.TopDirectoryOnly).OrderByDescending(x => x.LastWriteTime).ToArray(); directoryFiles = directoryInfo.GetFiles("*", SearchOption.TopDirectoryOnly).OrderByDescending(x => x.LastWriteTime).ToArray(); } //Get all rom images and descriptions FileInfo[] directoryRomImages = new FileInfo[] { }; FileInfo[] directoryRomDescriptions = new FileInfo[] { }; if (vFilePickerShowRoms) { string[] imageFilter = { "jpg", "png" }; string[] descriptionFilter = { "json" }; DirectoryInfo directoryInfoRomsUser = new DirectoryInfo("Assets/User/Games"); FileInfo[] directoryPathsRomsUser = directoryInfoRomsUser.GetFiles("*", SearchOption.AllDirectories); DirectoryInfo directoryInfoRomsDefault = new DirectoryInfo("Assets/Default/Games"); FileInfo[] directoryPathsRomsDefault = directoryInfoRomsDefault.GetFiles("*", SearchOption.AllDirectories); IEnumerable <FileInfo> directoryPathsRoms = directoryPathsRomsUser.Concat(directoryPathsRomsDefault); FileInfo[] romsImages = directoryPathsRoms.Where(file => imageFilter.Any(filter => file.Name.EndsWith(filter, StringComparison.InvariantCultureIgnoreCase))).ToArray(); FileInfo[] filesImages = directoryFiles.Where(file => imageFilter.Any(filter => file.Name.EndsWith(filter, StringComparison.InvariantCultureIgnoreCase))).ToArray(); directoryRomImages = filesImages.Concat(romsImages).OrderByDescending(x => x.Name.Length).ToArray(); FileInfo[] romsDescriptions = directoryPathsRoms.Where(file => descriptionFilter.Any(filter => file.Name.EndsWith(filter, StringComparison.InvariantCultureIgnoreCase))).ToArray(); FileInfo[] filesDescriptions = directoryFiles.Where(file => descriptionFilter.Any(filter => file.Name.EndsWith(filter, StringComparison.InvariantCultureIgnoreCase))).ToArray(); directoryRomDescriptions = filesDescriptions.Concat(romsDescriptions).OrderByDescending(x => x.Name.Length).ToArray(); } //Get all the directories from target directory if (vFilePickerShowDirectories) { try { //Fill the file picker listbox with folders foreach (DirectoryInfo listFolder in directoryFolders) { try { BitmapImage listImage = null; string listDescription = string.Empty; //Load image files for the list if (vFilePickerShowRoms) { GetRomDetails(listFolder.Name, listFolder.FullName, directoryRomImages, directoryRomDescriptions, ref listImage, ref listDescription); } else { listImage = FileToBitmapImage(new string[] { "Assets/Default/Icons/Folder.png" }, vImageSourceFolders, vImageBackupSource, IntPtr.Zero, -1, 0); } //Get the folder size //string folderSize = AVFunctions.ConvertBytesSizeToString(GetDirectorySize(listDirectory)); //Get the folder date string folderDate = listFolder.LastWriteTime.ToShortDateString().Replace("-", "/"); //Set the detailed text string folderDetailed = folderDate; //Check the copy cut type ClipboardType clipboardType = ClipboardType.None; DataBindFile clipboardFile = vClipboardFiles.Where(x => x.PathFile == listFolder.FullName).FirstOrDefault(); if (clipboardFile != null) { clipboardType = clipboardFile.ClipboardType; } //Add folder to the list bool systemFileFolder = listFolder.Attributes.HasFlag(FileAttributes.System); bool hiddenFileFolder = listFolder.Attributes.HasFlag(FileAttributes.Hidden); if (!systemFileFolder && (!hiddenFileFolder || Convert.ToBoolean(Setting_Load(vConfigurationCtrlUI, "ShowHiddenFilesFolders")))) { DataBindFile dataBindFileFolder = new DataBindFile() { FileType = FileType.Folder, ClipboardType = clipboardType, Name = listFolder.Name, NameDetail = folderDetailed, Description = listDescription, DateModified = listFolder.LastWriteTime, ImageBitmap = listImage, PathFile = listFolder.FullName }; await ListBoxAddItem(lb_FilePicker, List_FilePicker, dataBindFileFolder, false, false); } } catch { } } } catch { } } //Get all the files from target directory if (vFilePickerShowFiles) { try { //Enable or disable selection button in the list AVActions.ActionDispatcherInvoke(delegate { grid_Popup_FilePicker_button_SelectFolder.Visibility = Visibility.Collapsed; }); //Filter files in and out if (vFilePickerFilterIn.Any()) { directoryFiles = directoryFiles.Where(file => vFilePickerFilterIn.Any(filter => file.Name.EndsWith(filter, StringComparison.InvariantCultureIgnoreCase))).ToArray(); } if (vFilePickerFilterOut.Any()) { directoryFiles = directoryFiles.Where(file => !vFilePickerFilterOut.Any(filter => file.Name.EndsWith(filter, StringComparison.InvariantCultureIgnoreCase))).ToArray(); } //Fill the file picker listbox with files foreach (FileInfo listFile in directoryFiles) { try { BitmapImage listImage = null; string listDescription = string.Empty; //Load image files for the list if (vFilePickerShowRoms) { GetRomDetails(listFile.Name, string.Empty, directoryRomImages, directoryRomDescriptions, ref listImage, ref listDescription); } else { string listFileFullNameLower = listFile.FullName.ToLower(); string listFileExtensionLower = listFile.Extension.ToLower().Replace(".", string.Empty); if (listFileFullNameLower.EndsWith(".jpg") || listFileFullNameLower.EndsWith(".png") || listFileFullNameLower.EndsWith(".gif")) { listImage = FileToBitmapImage(new string[] { listFile.FullName }, vImageSourceFolders, vImageBackupSource, IntPtr.Zero, 50, 0); } else { listImage = FileToBitmapImage(new string[] { "Assets/Default/Extensions/" + listFileExtensionLower + ".png", "Assets/Default/Icons/File.png" }, vImageSourceFolders, vImageBackupSource, IntPtr.Zero, 50, 0); } } //Get the file size string fileSize = AVFunctions.ConvertBytesSizeToString(listFile.Length); //Get the file date string fileDate = listFile.LastWriteTime.ToShortDateString().Replace("-", "/"); //Set the detailed text string fileDetailed = fileSize + " (" + fileDate + ")"; //Check the copy cut type ClipboardType clipboardType = ClipboardType.None; DataBindFile clipboardFile = vClipboardFiles.Where(x => x.PathFile == listFile.FullName).FirstOrDefault(); if (clipboardFile != null) { clipboardType = clipboardFile.ClipboardType; } //Add file to the list bool systemFileFolder = listFile.Attributes.HasFlag(FileAttributes.System); bool hiddenFileFolder = listFile.Attributes.HasFlag(FileAttributes.Hidden); if (!systemFileFolder && (!hiddenFileFolder || Convert.ToBoolean(Setting_Load(vConfigurationCtrlUI, "ShowHiddenFilesFolders")))) { FileType fileType = FileType.File; string fileExtension = Path.GetExtension(listFile.Name); if (fileExtension == ".url" || fileExtension == ".lnk") { fileType = FileType.Link; } DataBindFile dataBindFileFile = new DataBindFile() { FileType = fileType, ClipboardType = clipboardType, Name = listFile.Name, NameDetail = fileDetailed, Description = listDescription, DateModified = listFile.LastWriteTime, ImageBitmap = listImage, PathFile = listFile.FullName }; await ListBoxAddItem(lb_FilePicker, List_FilePicker, dataBindFileFile, false, false); } } catch { } } } catch { } } else { //Enable or disable selection button in the list AVActions.ActionDispatcherInvoke(delegate { grid_Popup_FilePicker_button_SelectFolder.Visibility = Visibility.Visible; }); } //Check if there are files or folders FilePicker_CheckFilesAndFoldersCount(); } //Enable the file picker list AVActions.ActionDispatcherInvoke(delegate { lb_FilePicker.IsEnabled = true; gif_FilePicker_Loading.Hide(); }); //Get navigation history index if (targetIndex == -1) { targetIndex = FilePicker_NavigationHistoryGetIndex(targetPath); } //Check the navigation index if (targetIndex == -1 && !string.IsNullOrWhiteSpace(vFilePickerSourcePath)) { DataBindFile sourceFileItem = List_FilePicker.Where(x => x.PathFile == vFilePickerSourcePath).FirstOrDefault(); if (sourceFileItem != null) { Debug.WriteLine("Source file path found: " + vFilePickerSourcePath); //Focus on the file picker listbox item await ListBoxFocusItem(lb_FilePicker, sourceFileItem, vProcessCurrent.MainWindowHandle); return; } } //Focus on the file picker listbox index await ListboxFocusIndex(lb_FilePicker, false, false, targetIndex, vProcessCurrent.MainWindowHandle); } catch (Exception ex) { Debug.WriteLine("Failed loading filepicker: " + ex.Message); await FilePicker_Failed(); } }
public async Task <string> ReadHTML(ClipboardType type = ClipboardType.None) { return(await Invoke <string>("readHTML", type == ClipboardType.Selection? "selection" : string.Empty)); }
public async Task <object> WriteText(string text, ClipboardType type = ClipboardType.None) { return(await Invoke <object>("writeText", text, type == ClipboardType.Selection? "selection" : string.Empty)); }
public async Task <object> Write(ClipboardData data, ClipboardType type = ClipboardType.None) { return(await Invoke <object>("write", data, type == ClipboardType.Selection? "selection" : string.Empty)); }
public async Task <string> Read(string format, ClipboardType type = ClipboardType.None) { return(await Invoke <string>("read", format, type == ClipboardType.Selection? "selection" : string.Empty)); }
public async Task <bool> Has(string format, ClipboardType type = ClipboardType.None) { return(await Invoke <bool>("has", format, type == ClipboardType.Selection? "selection" : string.Empty)); }
public async Task <object> Clear(ClipboardType type = ClipboardType.None) { return(await Invoke <object>("clear", type == ClipboardType.Selection? "selection" : string.Empty)); }
public async Task <object> WriteBookmark(string title, string url, ClipboardType type = ClipboardType.None) { return(await Invoke <object>("writeBookmark", title, url, type == ClipboardType.Selection? "selection" : string.Empty)); }
public async Task <NativeImage> ReadImage(ClipboardType type = ClipboardType.None) { return(await Invoke <NativeImage>("readImage", type == ClipboardType.Selection? "selection" : string.Empty)); }
//Get and list all files and folders async Task PickerLoadFilesFolders(string targetPath, int targetIndex) { try { //Clean the target path string targetPath = Path.GetFullPath(targetPath); //Add the Go up directory to the list if (Path.GetPathRoot(targetPath) != targetPath) { BitmapImage imageBack = FileToBitmapImage(new string[] { "Assets/Default/Icons/Up.png" }, vImageSourceFolders, vImageBackupSource, IntPtr.Zero, -1, 0); DataBindFile dataBindFileGoUp = new DataBindFile() { FileType = FileType.GoUpPre, Name = "Go up", Description = "Go up to the previous folder.", ImageBitmap = imageBack, PathFile = Path.GetDirectoryName(targetPath) }; await ListBoxAddItem(lb_FilePicker, List_FilePicker, dataBindFileGoUp, false, false); } else { BitmapImage imageBack = FileToBitmapImage(new string[] { "Assets/Default/Icons/Up.png" }, vImageSourceFolders, vImageBackupSource, IntPtr.Zero, -1, 0); DataBindFile dataBindFileGoUp = new DataBindFile() { FileType = FileType.GoUpPre, Name = "Go up", Description = "Go up to the previous folder.", ImageBitmap = imageBack, PathFile = "PC" }; await ListBoxAddItem(lb_FilePicker, List_FilePicker, dataBindFileGoUp, false, false); } AVActions.ActionDispatcherInvoke(delegate { //Enable or disable the copy paste status if (vClipboardFiles.Any()) { grid_Popup_FilePicker_textblock_ClipboardStatus.Visibility = Visibility.Visible; } //Enable or disable the current path grid_Popup_FilePicker_textblock_CurrentPath.Text = "Current path: " + targetPath; grid_Popup_FilePicker_textblock_CurrentPath.Visibility = Visibility.Visible; }); //Add launch emulator options if (vFilePickerShowRoms) { string fileDescription = "Launch the emulator without a rom loaded"; BitmapImage fileImage = FileToBitmapImage(new string[] { "Assets/Default/Icons/Emulator.png" }, vImageSourceFolders, vImageBackupSource, IntPtr.Zero, -1, 0); DataBindFile dataBindFileWithoutRom = new DataBindFile() { FileType = FileType.FilePre, Name = fileDescription, Description = fileDescription + ".", ImageBitmap = fileImage, PathFile = string.Empty }; await ListBoxAddItem(lb_FilePicker, List_FilePicker, dataBindFileWithoutRom, false, false); string romDescription = "Launch the emulator with this folder as rom"; BitmapImage romImage = FileToBitmapImage(new string[] { "Assets/Default/Icons/Emulator.png" }, vImageSourceFolders, vImageBackupSource, IntPtr.Zero, -1, 0); DataBindFile dataBindFileFolderRom = new DataBindFile() { FileType = FileType.FilePre, Name = romDescription, Description = romDescription + ".", ImageBitmap = romImage, PathFile = targetPath }; await ListBoxAddItem(lb_FilePicker, List_FilePicker, dataBindFileFolderRom, false, false); } //Enable or disable the side navigate buttons AVActions.ActionDispatcherInvoke(delegate { grid_Popup_FilePicker_button_ControllerLeft.Visibility = Visibility.Visible; grid_Popup_FilePicker_button_ControllerUp.Visibility = Visibility.Visible; grid_Popup_FilePicker_button_ControllerStart.Visibility = Visibility.Visible; }); //Get all the top files and folders DirectoryInfo directoryInfo = new DirectoryInfo(targetPath); DirectoryInfo[] directoryFolders = null; FileInfo[] directoryFiles = null; if (vFilePickerSortType == SortingType.Name) { directoryFolders = directoryInfo.GetDirectories("*", SearchOption.TopDirectoryOnly).OrderBy(x => x.Name).ToArray(); directoryFiles = directoryInfo.GetFiles("*", SearchOption.TopDirectoryOnly).OrderBy(x => x.Name).ToArray(); } else { directoryFolders = directoryInfo.GetDirectories("*", SearchOption.TopDirectoryOnly).OrderByDescending(x => x.LastWriteTime).ToArray(); directoryFiles = directoryInfo.GetFiles("*", SearchOption.TopDirectoryOnly).OrderByDescending(x => x.LastWriteTime).ToArray(); } //Get all rom images and descriptions FileInfo[] directoryRomImages = new FileInfo[] { }; FileInfo[] directoryRomDescriptions = new FileInfo[] { }; if (vFilePickerShowRoms) { string[] imageFilter = { "jpg", "png" }; string[] descriptionFilter = { "json" }; DirectoryInfo directoryInfoRomsUser = new DirectoryInfo("Assets/User/Games"); FileInfo[] directoryPathsRomsUser = directoryInfoRomsUser.GetFiles("*", SearchOption.AllDirectories); DirectoryInfo directoryInfoRomsDefault = new DirectoryInfo("Assets/Default/Games"); FileInfo[] directoryPathsRomsDefault = directoryInfoRomsDefault.GetFiles("*", SearchOption.AllDirectories); IEnumerable <FileInfo> directoryPathsRoms = directoryPathsRomsUser.Concat(directoryPathsRomsDefault); FileInfo[] romsImages = directoryPathsRoms.Where(file => imageFilter.Any(filter => file.Name.EndsWith(filter, StringComparison.InvariantCultureIgnoreCase))).ToArray(); FileInfo[] filesImages = directoryFiles.Where(file => imageFilter.Any(filter => file.Name.EndsWith(filter, StringComparison.InvariantCultureIgnoreCase))).ToArray(); directoryRomImages = filesImages.Concat(romsImages).OrderByDescending(x => x.Name.Length).ToArray(); FileInfo[] romsDescriptions = directoryPathsRoms.Where(file => descriptionFilter.Any(filter => file.Name.EndsWith(filter, StringComparison.InvariantCultureIgnoreCase))).ToArray(); FileInfo[] filesDescriptions = directoryFiles.Where(file => descriptionFilter.Any(filter => file.Name.EndsWith(filter, StringComparison.InvariantCultureIgnoreCase))).ToArray(); directoryRomDescriptions = filesDescriptions.Concat(romsDescriptions).OrderByDescending(x => x.Name.Length).ToArray(); } //Get all the directories from target directory if (vFilePickerShowDirectories) { try { //Fill the file picker listbox with folders foreach (DirectoryInfo listFolder in directoryFolders) { try { //Cancel loading if (vFilePickerLoadCancel) { Debug.WriteLine("File picker folder load cancelled."); vFilePickerLoadCancel = false; vFilePickerLoadBusy = false; return; } BitmapImage listImage = null; string listDescription = string.Empty; //Load image files for the list if (vFilePickerShowRoms) { GetRomDetails(listFolder.Name, listFolder.FullName, directoryRomImages, directoryRomDescriptions, ref listImage, ref listDescription); } else { listImage = FileToBitmapImage(new string[] { "Assets/Default/Icons/Folder.png" }, vImageSourceFolders, vImageBackupSource, IntPtr.Zero, -1, 0); } //Get the folder size //string folderSize = AVFunctions.ConvertBytesSizeToString(GetDirectorySize(listDirectory)); //Get the folder date string folderDate = listFolder.LastWriteTime.ToShortDateString().Replace("-", "/"); //Set the detailed text string folderDetailed = folderDate; //Check the copy cut type ClipboardType clipboardType = ClipboardType.None; DataBindFile clipboardFile = vClipboardFiles.Where(x => x.PathFile == listFolder.FullName).FirstOrDefault(); if (clipboardFile != null) { clipboardType = clipboardFile.ClipboardType; } //Add folder to the list bool systemFileFolder = listFolder.Attributes.HasFlag(FileAttributes.System); bool hiddenFileFolder = listFolder.Attributes.HasFlag(FileAttributes.Hidden); if (!systemFileFolder && (!hiddenFileFolder || Convert.ToBoolean(Setting_Load(vConfigurationCtrlUI, "ShowHiddenFilesFolders")))) { DataBindFile dataBindFileFolder = new DataBindFile() { FileType = FileType.Folder, ClipboardType = clipboardType, Name = listFolder.Name, NameDetail = folderDetailed, Description = listDescription, DateModified = listFolder.LastWriteTime, ImageBitmap = listImage, PathFile = listFolder.FullName }; await ListBoxAddItem(lb_FilePicker, List_FilePicker, dataBindFileFolder, false, false); } } catch { } } } catch { } } //Get all the files from target directory if (vFilePickerShowFiles) { try { //Enable or disable selection button in the list AVActions.ActionDispatcherInvoke(delegate { grid_Popup_FilePicker_button_SelectFolder.Visibility = Visibility.Collapsed; }); //Filter files in and out if (vFilePickerFilterIn.Any()) { directoryFiles = directoryFiles.Where(file => vFilePickerFilterIn.Any(filter => file.Name.EndsWith(filter, StringComparison.InvariantCultureIgnoreCase))).ToArray(); } if (vFilePickerFilterOut.Any()) { directoryFiles = directoryFiles.Where(file => !vFilePickerFilterOut.Any(filter => file.Name.EndsWith(filter, StringComparison.InvariantCultureIgnoreCase))).ToArray(); } //Fill the file picker listbox with files foreach (FileInfo listFile in directoryFiles) { try { //Cancel loading if (vFilePickerLoadCancel) { Debug.WriteLine("File picker file load cancelled."); vFilePickerLoadCancel = false; vFilePickerLoadBusy = false; return; } BitmapImage listImage = null; string listDescription = string.Empty; //Load image files for the list if (vFilePickerShowRoms) { GetRomDetails(listFile.Name, string.Empty, directoryRomImages, directoryRomDescriptions, ref listImage, ref listDescription); } else { string listFileFullNameLower = listFile.FullName.ToLower(); string listFileExtensionLower = listFile.Extension.ToLower().Replace(".", string.Empty); if (listFileFullNameLower.EndsWith(".jpg") || listFileFullNameLower.EndsWith(".png") || listFileFullNameLower.EndsWith(".gif")) { listImage = FileToBitmapImage(new string[] { listFile.FullName }, vImageSourceFolders, vImageBackupSource, IntPtr.Zero, 50, 0); } else { listImage = FileToBitmapImage(new string[] { "Assets/Default/Extensions/" + listFileExtensionLower + ".png", "Assets/Default/Icons/File.png" }, vImageSourceFolders, vImageBackupSource, IntPtr.Zero, 50, 0); } } //Get the file size string fileSize = AVFunctions.ConvertBytesSizeToString(listFile.Length); //Get the file date string fileDate = listFile.LastWriteTime.ToShortDateString().Replace("-", "/"); //Set the detailed text string fileDetailed = fileSize + " (" + fileDate + ")"; //Check the copy cut type ClipboardType clipboardType = ClipboardType.None; DataBindFile clipboardFile = vClipboardFiles.Where(x => x.PathFile == listFile.FullName).FirstOrDefault(); if (clipboardFile != null) { clipboardType = clipboardFile.ClipboardType; } //Add file to the list bool systemFileFolder = listFile.Attributes.HasFlag(FileAttributes.System); bool hiddenFileFolder = listFile.Attributes.HasFlag(FileAttributes.Hidden); if (!systemFileFolder && (!hiddenFileFolder || Convert.ToBoolean(Setting_Load(vConfigurationCtrlUI, "ShowHiddenFilesFolders")))) { FileType fileType = FileType.File; string fileExtension = Path.GetExtension(listFile.Name); if (fileExtension == ".url" || fileExtension == ".lnk") { fileType = FileType.Link; } DataBindFile dataBindFileFile = new DataBindFile() { FileType = fileType, ClipboardType = clipboardType, Name = listFile.Name, NameDetail = fileDetailed, Description = listDescription, DateModified = listFile.LastWriteTime, ImageBitmap = listImage, PathFile = listFile.FullName }; await ListBoxAddItem(lb_FilePicker, List_FilePicker, dataBindFileFile, false, false); } } catch { } } } catch { } } else { //Enable or disable selection button in the list AVActions.ActionDispatcherInvoke(delegate { grid_Popup_FilePicker_button_SelectFolder.Visibility = Visibility.Visible; }); } //Check if there are files or folders FilePicker_CheckFilesAndFoldersCount(); } catch { } }
public async Task <object> WriteRTF(string markup, ClipboardType type = ClipboardType.None) { return(await Invoke <object>("writeRTF", markup, type == ClipboardType.Selection? "selection" : string.Empty)); }
public async Task <Bookmark> ReadBookmark(ClipboardType type = ClipboardType.None) { return(await Invoke <Bookmark>("readBookmark", type == ClipboardType.Selection? "selection" : string.Empty)); }
public ClipboardProceduralObjects(ClipboardType type) { this.type = type; }
public async Task <string[]> AvailableFormats(ClipboardType type = ClipboardType.None) { var result = await Invoke <object[]>("availableFormats", type == ClipboardType.Selection? "selection" : string.Empty); return(result == null ? new string[] { } : Array.ConvertAll(result, item => item.ToString())); }
public async Task <object> WriteImage(NativeImage image, ClipboardType type = ClipboardType.None) { return(await Invoke <object>("writeImage", image, type == ClipboardType.Selection? "selection" : string.Empty)); }
static private string ClipBoardTypeToString(ClipboardType type) { return(Enum.GetName(typeof(ClipboardType), type)); }