digitalmars.D.learn - GTKD - Application crashes - or not? [Coedit]
- TheDGuy (46/46) Jun 15 2016 Hi,
- Rene Zwanenburg (5/8) Jun 15 2016 My first guess would be that Coedit does not use the directory
- TheDGuy (5/13) Jun 15 2016 Thanks a lot for your answer, getcwd() returns the path where
- Rene Zwanenburg (6/10) Jun 15 2016 I'm not familiar with Coedit, but the run options seem to contain
- TheDGuy (19/24) Jun 15 2016 I changed the working directory in the native project
- Basile B. (10/21) Jun 15 2016 You just need to change "CurrentDirectory" in the "Run options".
- Basile B. (24/26) Jun 15 2016 I've checked on windows and here is what I can say about the
- TheDGuy (12/29) Jun 16 2016 Hm, i don't see "CurrentDirectory" in the run options tab:
- TheDGuy (3/6) Jun 16 2016 That is the correct image link:
- Basile B. (6/12) Jun 16 2016 Yes it's "WorkingDirectory" (and not current...). But otherwise
- TheDGuy (6/11) Jun 16 2016 If i use args[0] as workingDirectory i still get the same error.
Hi, this is my app: import gtk.Main; import gtk.MainWindow; import gtk.CssProvider; import gdk.Display; import gdk.Screen; import gtk.StyleContext; import glib.GException; class Window : MainWindow{ this(int width, int height, string title){ super(title); setDefaultSize(width, height); string cssPath = "test.css"; CssProvider provider = new CssProvider(); provider.loadFromPath(cssPath); Display display = Display.getDefault(); Screen screen = display.getDefaultScreen(); StyleContext.addProviderForScreen(screen, provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); showAll(); } } void main(string[] args){ Main.init(args); auto win = new Window(250,250,"Tutorial"); Main.run(); } I use Coedit to write and execute D apps. If i execute this app i get the error message (it compiles fine): glib.GException.GException ..\..\..\AppData\Roaming\dub\packages\gtk-d-3.3.1\gtk-d\src\gl b\GException.d(40): Failed to import: No such file or directory ---------------- 0x00430569 0x00402065 0x004020D8 0x0040275F 0x00402660 0x004020F7 0x740F38F4 in BaseThreadInitThunk 0x76F85DE3 in RtlUnicodeStringToInteger 0x76F85DAE in RtlUnicodeStringToInteger error: the process (C:\Users\Standardbenutzer\Documents\Dlang_Projects\GTKD_Test.exe) has returned the signal 1 But if i execute the app my hand (in the windows command window or my double click) it works as expected (so no error)? Why is that?
Jun 15 2016
On Wednesday, 15 June 2016 at 09:48:19 UTC, TheDGuy wrote:But if i execute the app my hand (in the windows command window or my double click) it works as expected (so no error)? Why is that?My first guess would be that Coedit does not use the directory where the executable is located as working directory. You can check what getcwd returns: https://dlang.org/phobos/std_file.html#.getcwd
Jun 15 2016
On Wednesday, 15 June 2016 at 10:21:20 UTC, Rene Zwanenburg wrote:On Wednesday, 15 June 2016 at 09:48:19 UTC, TheDGuy wrote:Thanks a lot for your answer, getcwd() returns the path where coedit is located on my harddrive: C:\Program Files (x86)\Coedit_32\coedit.2update6.win32 How can i change that?But if i execute the app my hand (in the windows command window or my double click) it works as expected (so no error)? Why is that?My first guess would be that Coedit does not use the directory where the executable is located as working directory. You can check what getcwd returns: https://dlang.org/phobos/std_file.html#.getcwd
Jun 15 2016
On Wednesday, 15 June 2016 at 10:31:18 UTC, TheDGuy wrote:Thanks a lot for your answer, getcwd() returns the path where coedit is located on my harddrive: C:\Program Files (x86)\Coedit_32\coedit.2update6.win32 How can i change that?I'm not familiar with Coedit, but the run options seem to contain a field for setting it: https://github.com/BBasile/Coedit/wiki#run-options You may be able to use the symbolic strings there: https://github.com/BBasile/Coedit/wiki#symbolic-strings
Jun 15 2016
On Wednesday, 15 June 2016 at 13:15:56 UTC, Rene Zwanenburg wrote:I'm not familiar with Coedit, but the run options seem to contain a field for setting it: https://github.com/BBasile/Coedit/wiki#run-options You may be able to use the symbolic strings there: https://github.com/BBasile/Coedit/wiki#symbolic-stringsI changed the working directory in the native project configuration in "Pre-build process", "Post-build process" and in "Run options" in "default", "debug" and "release" to: C:\Users\Standardbenutzer\Documents\Dlang_Projects but i still get: glib.GException.GException ..\..\..\AppData\Roaming\dub\packages\gtk-d-3.3.1\gtk-d\src\gl b\GException.d(40): Failed to import: No such file or directory ---------------- 0x0045C39D 0x00402094 0x00402120 0x00403FC7 0x00403EC8 0x00402557 0x740F38F4 in BaseThreadInitThunk 0x76F85DE3 in RtlUnicodeStringToInteger 0x76F85DAE in RtlUnicodeStringToInteger error: the process (C:\Users\Standardbenutzer\Documents\Dlang_Projects\GTKD_Test.exe) has returned the signal 1
Jun 15 2016
On Wednesday, 15 June 2016 at 17:35:32 UTC, TheDGuy wrote:On Wednesday, 15 June 2016 at 13:15:56 UTC, Rene Zwanenburg wrote:You just need to change "CurrentDirectory" in the "Run options". The two others are for the process that's executed before and after compiling. I'm gonna check on Windows today but in the meantime you can try - sets the output path to to a value that's different from the project file location, e.g bin/name.exe and remove completly the value you've set in "Run Options"\"CurrentDirectory" - add a trailing back slash to the value in the "Run Options"\"CurrentDirectory"I'm not familiar with Coedit, but the run options seem to contain a field for setting it: https://github.com/BBasile/Coedit/wiki#run-options You may be able to use the symbolic strings there: https://github.com/BBasile/Coedit/wiki#symbolic-stringsI changed the working directory in the native project configuration in "Pre-build process", "Post-build process" and in "Run options" in "default", "debug" and "release" to:
Jun 15 2016
On Wednesday, 15 June 2016 at 23:41:51 UTC, Basile B. wrote:On Wednesday, 15 June 2016 at 17:35:32 UTC, TheDGuy wrote: I'm gonna check on Windows today but in the meantime you can tryI've checked on windows and here is what I can say about the problem. - Symbolic strings won't work on the "CurrentDirectoy" parameter. This is not handled at all. (you would get an error 267). I'll add the translation code for this parameter but this is for version 3 so not soon. - I had to verify but the cwd should really be set to the path where the application is output. I mean that it's written so. I don't know what's happening on your system right now. My windows is still win 7 and my dev directory is not in ProgramFiles. And I've tested using this simple project: https://gist.github.com/BBasile/2e110ed48989b53e2a53b57977a81736. You can DL it as a zip, open the .ce file as a project and click "compile project and run" you should see the right CWD written in the messages. - You can create a launcher in the custom tools, excluding the double quote: - as executable type "<CPO>" - as CurrentDirectory type "<CPP>" - as alias put something like "Run this project" This will work if the binary is compiled in the same directory as the binary that's produced. Otherwise you can adjust by adding directories after the symbol. (e.g "<CPP>bin\release").
Jun 15 2016
On Thursday, 16 June 2016 at 00:46:44 UTC, Basile B. wrote:On Wednesday, 15 June 2016 at 23:41:51 UTC, Basile B. wrote: - You can create a launcher in the custom tools, excluding the double quote: - as executable type "<CPO>" - as CurrentDirectory type "<CPP>" - as alias put something like "Run this project" This will work if the binary is compiled in the same directory as the binary that's produced. Otherwise you can adjust by adding directories after the symbol. (e.g "<CPP>bin\release").You just need to change "CurrentDirectory" in the "Run options".Hm, i don't see "CurrentDirectory" in the run options tab: https://picload.org/image/rgwaopad/coedit_run_options.png- I had to verify but the cwd should really be set to the path where the application is output. I mean that it's written so. I don't know what's happening on your system right now. My windows is still win 7 and my dev directory is not in ProgramFiles.Everything worked fine for the last projects but as soon as i tried to customize buttons with CSS something is wrong. I just store the Coedit-Program in "ProgramFiles" (because every program i have installed is located there). For my projects i usually use the "document" folder of my user where the ".exe" and ".d" - files are stored.And I've tested using this simple project: https://gist.github.com/BBasile/2e110ed48989b53e2a53b57977a81736. You can DL it as a >zip, open the .ce file as a project and click "compile project and run" you should see >the right CWD written in the messages.I get 'Failed to execute: 267'. Probably because a symbolic string is used in the run options? https://picload.org/upload,8e3f683557a8cd3401f002304f387932.html
Jun 16 2016
On Thursday, 16 June 2016 at 07:50:13 UTC, TheDGuy wrote:I get 'Failed to execute: 267'. Probably because a symbolic string is used in the run options? https://picload.org/upload,8e3f683557a8cd3401f002304f387932.htmlThat is the correct image link: https://img1.picload.org/image/rgwaopli/coedit_run_options.png
Jun 16 2016
On Thursday, 16 June 2016 at 07:51:14 UTC, TheDGuy wrote:On Thursday, 16 June 2016 at 07:50:13 UTC, TheDGuy wrote:Yes it's "WorkingDirectory" (and not current...). But otherwise you can use args[0]. Actually using the cwd in a program is often an error because there is no guarantee that the cwd is the path to the application ;) People often forget that (Generally speaking).I get 'Failed to execute: 267'. Probably because a symbolic string is used in the run options? https://picload.org/upload,8e3f683557a8cd3401f002304f387932.htmlThat is the correct image link: https://img1.picload.org/image/rgwaopli/coedit_run_options.png
Jun 16 2016
On Thursday, 16 June 2016 at 08:20:00 UTC, Basile B. wrote:Yes it's "WorkingDirectory" (and not current...). But otherwise you can use args[0]. Actually using the cwd in a program is often an error because there is no guarantee that the cwd is the path to the application ;) People often forget that (Generally speaking).If i use args[0] as workingDirectory i still get the same error. I created a custom Tool like this: https://picload.org/image/rgwapdac/coedit_run_options.png if i execute it via "Custom Tools" -> "Run this project" nothing happens.
Jun 16 2016
On Thursday, 16 June 2016 at 09:18:54 UTC, TheDGuy wrote:On Thursday, 16 June 2016 at 08:20:00 UTC, Basile B. wrote:FOrget any previous comment and in your program use the first argument of the command line to detect your resources, this will solve your problem. For the execution click compile and run or just run. On Win and Nux, the first argument of the command line is always the program filename so you just have to get the directory for this string and you'll get what you expected with cwd.Yes it's "WorkingDirectory" (and not current...). But otherwise you can use args[0]. Actually using the cwd in a program is often an error because there is no guarantee that the cwd is the path to the application ;) People often forget that (Generally speaking).If i use args[0] as workingDirectory i still get the same error. I created a custom Tool like this: https://picload.org/image/rgwapdac/coedit_run_options.png if i execute it via "Custom Tools" -> "Run this project" nothing happens.
Jun 16 2016
On Thursday, 16 June 2016 at 09:27:38 UTC, Basile B. wrote:FOrget any previous comment and in your program use the first argument of the command line to detect your resources, this will solve your problem. For the execution click compile and run or just run.Okay: void main(string[] args){ writeln(args[0]); Main.init(args); auto win = new Window(250,250,"Tutorial"); Main.run(); } This gives me the location of the .exe. What should i do with it now?On Win and Nux, the first argument of the command line is always the program filename so you just have to get the directory for this string and you'll get what you expected with cwd.I don't care about cwd i want to get rid of the error!
Jun 16 2016
On Thursday, 16 June 2016 at 10:02:01 UTC, TheDGuy wrote:On Thursday, 16 June 2016 at 09:27:38 UTC, Basile B. wrote:from args[0] you can get the base bath and since your css is relative to the base path: string cssPath = "test.css"; CssProvider provider = new CssProvider(); provider.loadFromPath(cssPath); add something like import std.path; basePath = args[0].dirName; string cssPath = basePath ~ "\" ~ "test.css"; and you can remove all the stuff in the Run options.FOrget any previous comment and in your program use the first argument of the command line to detect your resources, this will solve your problem. For the execution click compile and run or just run.Okay: void main(string[] args){ writeln(args[0]); Main.init(args); auto win = new Window(250,250,"Tutorial"); Main.run(); } This gives me the location of the .exe. What should i do with it now?On Win and Nux, the first argument of the command line is always the program filename so you just have to get the directory for this string and you'll get what you expected with cwd.I don't care about cwd i want to get rid of the error!
Jun 16 2016
On Thursday, 16 June 2016 at 10:14:47 UTC, Basile B. wrote:from args[0] you can get the base bath and since your css is relative to the base path: string cssPath = "test.css"; CssProvider provider = new CssProvider(); provider.loadFromPath(cssPath); add something like import std.path; basePath = args[0].dirName; string cssPath = basePath ~ "\" ~ "test.css"; and you can remove all the stuff in the Run options.But i don't call my CSS file in the main-function but instead i call it in the MainWindow: import gtk.Main; import gtk.MainWindow; import gtk.CssProvider; import gtk.Button; import gdk.Display; import gdk.Screen; import gtk.StyleContext; import glib.GException; class Window : MainWindow{ this(int width, int height, string title){ super(title); setDefaultSize(width, height); Button btn = new Button("Test"); btn.setName("CssName"); string cssPath = "test.css"; CssProvider provider = new CssProvider(); provider.loadFromPath(cssPath); Display display = Display.getDefault(); Screen screen = display.getDefaultScreen(); StyleContext.addProviderForScreen(screen, provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); add(btn); showAll(); } } void main(string[] args){ Main.init(args); auto win = new Window(250,250,"Tutorial"); Main.run(); }
Jun 16 2016
On Thursday, 16 June 2016 at 15:57:36 UTC, TheDGuy wrote:On Thursday, 16 June 2016 at 10:14:47 UTC, Basile B. wrote:Please Stop your comedy.from args[0] you can get the base bath and since your css is relative to the base path: string cssPath = "test.css"; CssProvider provider = new CssProvider(); provider.loadFromPath(cssPath); add something like import std.path; basePath = args[0].dirName; string cssPath = basePath ~ "\" ~ "test.css"; and you can remove all the stuff in the Run options.But i don't call my CSS file in the main-function but instead i call it in the MainWindow: import gtk.Main; import gtk.MainWindow; import gtk.CssProvider; import gtk.Button; import gdk.Display; import gdk.Screen; import gtk.StyleContext; import glib.GException; class Window : MainWindow{ this(int width, int height, string title){ super(title); setDefaultSize(width, height); Button btn = new Button("Test"); btn.setName("CssName"); string cssPath = "test.css"; CssProvider provider = new CssProvider(); provider.loadFromPath(cssPath); Display display = Display.getDefault(); Screen screen = display.getDefaultScreen(); StyleContext.addProviderForScreen(screen, provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); add(btn); showAll(); } } void main(string[] args){ Main.init(args); auto win = new Window(250,250,"Tutorial"); Main.run(); }
Jun 16 2016
On Thursday, 16 June 2016 at 17:44:08 UTC, Basile B. wrote:Please Stop your comedy.Thanks a lot for your help! This is my solution: import gtk.Main; import gtk.MainWindow; import gtk.CssProvider; import gtk.Button; import gdk.Display; import gdk.Screen; import gtk.StyleContext; import glib.GException; import std.stdio; import std.file; import std.path; class Window : MainWindow{ this(int width, int height, string title, string wd){ super(title); setDefaultSize(width, height); Button btn = new Button("Test"); btn.setName("CssName"); string cssPath = dirName(wd) ~ "\\" ~ "test.css"; CssProvider provider = new CssProvider(); provider.loadFromPath(cssPath); Display display = Display.getDefault(); Screen screen = display.getDefaultScreen(); StyleContext.addProviderForScreen(screen, provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); add(btn); showAll(); } } void main(string[] args){ Main.init(args); auto win = new Window(250,250,"Tutorial", args[0]); Main.run(); }
Jun 16 2016
On Thursday, 16 June 2016 at 09:18:54 UTC, TheDGuy wrote:On Thursday, 16 June 2016 at 08:20:00 UTC, Basile B. wrote:There was a bug I've fixed yesterday. There's a workaround: this would have worked when the tool option "clearMessages" is checked.Yes it's "WorkingDirectory" (and not current...). But otherwise you can use args[0]. Actually using the cwd in a program is often an error because there is no guarantee that the cwd is the path to the application ;) People often forget that (Generally speaking).If i use args[0] as workingDirectory i still get the same error. I created a custom Tool like this: https://picload.org/image/rgwapdac/coedit_run_options.png if i execute it via "Custom Tools" -> "Run this project" nothing happens.
Jun 16 2016
On Friday, 17 June 2016 at 06:18:59 UTC, Basile B. wrote:On Thursday, 16 June 2016 at 09:18:54 UTC, TheDGuy wrote:Thanks a lot!On Thursday, 16 June 2016 at 08:20:00 UTC, Basile B. wrote:There was a bug I've fixed yesterday. There's a workaround: this would have worked when the tool option "clearMessages" is checked.Yes it's "WorkingDirectory" (and not current...). But otherwise you can use args[0]. Actually using the cwd in a program is often an error because there is no guarantee that the cwd is the path to the application ;) People often forget that (Generally speaking).If i use args[0] as workingDirectory i still get the same error. I created a custom Tool like this: https://picload.org/image/rgwapdac/coedit_run_options.png if i execute it via "Custom Tools" -> "Run this project" nothing happens.
Jun 17 2016