I want to Browse the Fonts folder in c:\Windows and get the filepath of the selected font.
But when the Dialog Box opens it does not show the Font folder in Windows.
Void SumFont::FontChange()
{
QString filePath = QFileDialog::getOpenFileName(NULL, tr("Open File"),
"/home",
tr("Fonts (*.ttf)"));
QlineEditSetFont->setText(filePath);
isChanged = true;
stdstrLocation = filePath.toStdString();
this->isChanged = true;
}
On Windows the fonts folder, apart from being system protected in other ways, has a special font display mode set in desktop.ini by this line: CLSID={BD84B380-8CA2-1069-AB1D-08000948F534}. That makes the AppID {50d69d24-961d-4828-9d1c-5f4717f226d1} being responsible for displaying this folder in all the system browsers. Unfortunately, the Windows-native file dialog in Qt can't display the font folder as a proper font viewer (for reasons unknown to me). There are two ways to work around this problem I'm aware of though.
First is messing with Windows itself - just rename the desktop.ini file in the fonts folder to something like desktop.ini.bak. You'll need administrator privileges for that, so do it from cmd or PowerShell started "as administrator". Also UAC must probably be turned off. After that the fonts folder will become a regular folder, and QFileDialog will be able to display it as any other folder. This is really not recommended in production, but I don't know why you need to access the fonts folder directly anyway.
Second method is not using the Windows-native file dialog.
QString filePath = QFileDialog::getOpenFileName(NULL, tr("Open File"),
QStandardPaths::standardLocations(QStandardPaths::FontsLocation)[0],
tr("Fonts (*.ttf);;Everything (*.*)"), nullptr,
QFileDialog::DontUseNativeDialog);
The code above will open the Qt fallback dialog, which doesn’t care about desktop.ini.
Anyway, be careful when directly accessing the fonts folder. Especially if you plan to put files in it. Windows may have some hooks for updating the font cache that may not work correctly this way.
Related
How can I change the default Open File... directory in Netbeans 8.2 for Java SE\ME\EE?
I've edited my projectui.properties file line projectsFolder=DIRECTORY but that only works for projects. I am trying to open individual files without opening the entire project.
File was found (Windows) under "C:\Users\MYNAME\AppData\Roaming\NetBeans\8.2\config\Preferences\org\netbeans\modules"
Unlike setting the default project directory in NetBeans, you can't modify the default Open File... directory because there is no such "default directory" to change.
NetBeans behavior when you select Open File... from the File menu (on Windows 10 at least) is as follows:
[1] On the first occasion within a NetBeans session the Documents icon will be pre-selected in the Open dialog window, and your Documents directory will be opened. That's just the way NetBeans works, and cannot be modified. Although you can change the Documents folder that will be opened, you probably shouldn't. See below for details**.
[2] Within the Open dialog you can obviously navigate to any alternative folder to open a file. Thereafter, within that NetBeans session only, that alternative folder will be opened by default on the subsequent File -> Open File... selections, until an alternative directory is selected.
~~~~~
** To change the Documents folder in Windows (which will also change the folder that NetBeans opens on the initial use of File -> Open File..):
In Windows File Explorer select Desktop -> This PC -> Documents and right-click.
Select Properties from the drop down menu, and then select the Location tab in the Document Properties window.
Enter the name of the new folder to be used as the Documents folder and click OK.
Restart NetBeans, select File-> Open File... and the folder NetBeans opens will now be the one you specified in the previous step.
That may appear to have the desired affect, but other Windows applications also use the Documents folder, and may depend on files in that folder, so it shouldn't really be changed without good reason. If you really need to open files in NetBeans that are not within any project the cleanest approach would be to place such files in the Documents folder if possible.
One solution would be to move the NetBeansProjects in the Documents folder mentioned above to the desired place and to place a permanent symlink to the desired folder. Instructions for latter referenced here https://superuser.com/questions/1020821/how-to-create-a-symbolic-link-on-windows-10
Watch out if the secondary location could be temporary (like a network drive) that it's always in place before you launch Netbeans.
I have tried for my app to load fonts on request. I tried to read fonts from the a project directory which is created by my app, and it reads all the info it needs.
First of all, I want to ask if there is a way to know if there is an app-storage:// like in adobe air, because THAT IS KILLING ME! I cannot create temporary files to be read on runtime by the app and place, for example, a style sheet with the new loaded fonts on runtime via JS.!
If there is one, please let me know!!!
Now a very dirty solution. This is what I had done up to now:
Just to let know everybody, my solution relies on :
run the app as administrator (a must to have)
softlinking the user's project font folder.
now lets get the facts:
webkit cannot render fronts coming from a "file:///" url
I had tried using file:/// with no success, and neither converting the SVG fonts to base64 did the trick at all. Trying to do on runtime stylesheets was even worse, so looking for solutions I had to rely on command prompts. For now I'm running this on windows and works pearls:
var WinDoExec = function(cmdline){
var echoCmd = ["C:\\Windows\\System32\\cmd.exe","/C"];
echoCmd = $.merge(echoCmd,cmdline);
console.log(echoCmd);
var echo = Ti.Process.createProcess(echoCmd);
echo.setOnReadLine(function(data) {
console.log(data.toString());
});
echo.stdout.attach(echo.stdin);
echo.launch();
};
so from here, I had to create a mklink (soft link on ntfs) from the user's project font folder to the application font directory, so it could be accessible on runtime.
WinDoExec(["mklink","/D","C:\\Program Files(x86)\\myapp\\Resources\\assets\\fonts\\userfonts","C:\\Users\\windowsuser\\projectAppFolder\\ProjectName\\Fonts"]);
with this, creating a soft link into the application in runtime fixes the issue of loading the custom fonts for the user's project into the runtime app...
I know this is kinda "abusive" with the program environment, but I really wish there was a way for the app to have a url accessible path (such storage url path or temporary url path) in order to process things on runtime. I could copy the fonts into the temporary url container folder and do my stuff without affecting the app system folder at all.
So if you guys on tidekit read this, please allow developers to have accessible url paths for temporary objects (like user's svg/ttf files) that I can copy there and use on runtime.
Thanks.
I'm trying to open a file in a Chrome packaged-app using chrome.fileSystem.chooseEntry() but I can't manage to make the dialog show a suggested filename (passed through suggestedName). That works ok if the file is in home path, but doesn't if I 'suggest' a file that's inside a folder in that same home folder. I'm on LinuxMint.
So:
chrome.fileSystem.chooseEntry({type: 'openFile', suggestedName: "~/log.txt"}, callback) ---> works! but,
chrome.fileSystem.chooseEntry({type: 'openFile', suggestedName: "~/foo/log.txt"}, callback) ---> doesn't! It just opens dialog showing home folder. Both file and folder exist.
This is by design. The file system API strips path information from the suggested name. Put another way, you can suggest a name but not a path.
We do this for security reasons; we want users to always be choosing the file. If your app has a legitimate reason to suggest a path please file a bug at http://crbug.com, describe your use case and cc me.
With the help of IExpress I created an exe from a bat file and would like to set a custom icon for the exe. Is this possible?
Regards
Try Resource Hacker. It worked here with a test IExpress installer.
Step-by-step instructions:
Create your IExpress package as normal.
Launch Resource Hacker, then open your IExpress-generated executable.
In the Action menu, choose Replace Icon …
Open the file that contains the icon you want to use, then click Replace.
Save the file in Resource Hacker. This will get you two files:
Your new file: package.exe
Your original file: package_original.exe
If the icon for package.exe looks wrong on your computer, this is expected behaviour due to the old icon being cached by Explorer. To clear the icon cache, you can execute:
ie4uinit.exe -show
(This will only be a problem on the computer that you used to edit the file; other computers should show the correct icon straight away.)
As a workaround you can create a shortcut of the exe file and then set a custom icon to it.
In an application I'm working on, the users are prompted for the path of a file. This path will always point to a network drive, which the server has access to.
Currently, we use an asp:FileUpload control to accomplish this, drawing the path from the FileUpload's PostedFile.FileName property.
The problem is that the files the user is selecting from are locked down pretty severely. While the server has full access to them, the user only has permission to view the directory contents... They can't even open the files. This has worked fine up until now... But Windows 7 won't display these files in the file picker generated by FileUpload, so we need an alternative.
Notes:
Looking for a way to get UI similar to the file open dialog already in place.
The ability to view the client's local files (including the shared network drives) is a bonus, although listing the files through the server is acceptable.
I think the problem is the permissions on these files. If the users can't even open them, how can their terminal possibly upload them to a website?
I'm surprised this has ever worked.
If the user is simply supplying a path and not actually uploading the file you could have the server display the contents of the folder (in a list or whatever) and the user selects from that.
So how about creating a file browser in a window, such that a user clicks "Pick File" which opens a new window showing the root contents of the network drive. The user can then navigate round the directories to the file they want, finally clicking the file to "upload".
Use System.IO Directory.GetFiles to get the files in a directory.
I think you need to separate out the two things. Here's an example prompt to convey the idea:
Select a (file from your computer) OR (file from the server)
Client Files
You can use the standard file-upload control, that is fine.
Server Files
No user should be selecting files from your sever with the upload-file dialog. (Keep in mind that these dialog boxes allow right-click menus delete, copy, properties, etc and locked down or not, the user should not think they have this ability).
I don't think there are any controls that will "do-it-all" for you in this manner. I think your best bet is to make your own interface here.