Asset - Extension Dialog Module (for Windows, macOS, and Ubuntu)

Samuel Venable

Time Killer

[Made for GameMaker Studio 2]

Online Documentation: http://dialogmodule.weebly.com/
Downloadable PDF (Offline Documentation): https://drive.google.com/file/d/18xXZZlvazihPC62imZO4CkZYH2dfxYwz/
GitHub: https://github.com/time-killer-games/DialogModule/

This extension is for Windows, macOS, and Ubuntu.

Override GameMaker Studio 2's default Desktop dialog functions with improved implementations over the original ones, while bringing back obsolete functions from pre-Studio branded versions of GameMaker, and of course introducing some new functions.

File Manager is included as you will need to copy or move files and/or directories in and out of your sandbox directory, (i.e. using the built-in constant "game_save_id", which returns your game's sandbox directory), for them to be accessible to this extension's dialogs.

After showing a dialog you must clear the keyboard and mouse state since GameMaker Studio 2 doesn't do that on its own:
Code:
keyboard_clear(keyboard_lastkey);
mouse_clear(mouse_lastbutton);
io_clear();
Functions included:
  • real show_message(string str)
  • real show_message_cancelable(string str)
  • real show_question(string str)
  • real show_question_cancelable(string str)
  • real show_attempt(string str)
  • real show_error(string str, real abort)
  • string get_string(string str, string def)
  • string get_password(string str, string def)
  • real get_integer(string str, real def)
  • real get_passcode(string str, real def)
  • string get_open_filename(string filter, string fname)
  • string get_open_filename_ext(string filter, string fname, string dir, string title)
  • string get_open_filenames(string filter, string fname)
  • string get_open_filenames_ext(string filter, string fname, string dir, string title)
  • string get_save_filename(string filter, string fname)
  • string get_save_filename_ext(string filter, string fname, string dir, string title)
  • string get_directory(string dname)
  • string get_directory_alt(string capt, string root)
  • real get_color(real defcol)
  • real get_color_ext(real defcol, string title)
  • string widget_get_caption()
  • real widget_set_caption(string str)
  • string widget_get_icon()
  • real widget_set_icon(string icon)
  • string widget_get_system() // Returns current widget system
  • real widget_set_system(string sys) // "Zenity" or "KDialog"
  • string widget_get_owner()
  • real widget_set_owner(string hwnd)
  • string widget_get_button_name(real type)
  • real widget_set_button_name(real type, string name)
  • *_async() variants of every dialog function

The DLL's full source code included.

The Linux apps that use this extension need Zenity and KDialog installed.

To install Zenity on Debian-based Linux distributions, enter this command into the terminal:

sudo apt-get install zenity

To install KDialog on Debian-based Linux distributions, enter this command into the terminal:

sudo apt-get install kdialog

Very big thanks to Josh Ventura, for writing the widen() and shorten() scripts, enabling UTF-8 support on Windows.

Download Free for GameMaker Studio 2 (GameMaker Marketplace)
Download Free for GameMaker Studio 2 (itch.io Game Asset Store)

Download Free for GameMaker Studio 1.4/GameMaker Studio 2 (Google Drive)
Download Free Asychronous Dialog Example for GameMaker Studio 2 (Dropbox)
 
Last edited:

Samuel Venable

Time Killer
Version 1.0.0 Released!
Added function get_directory().

Now this extension has mirrored every open / save dialog currently available in both GameMaker Studio 2 and all older versions of GameMaker!

Function List:
  • get_open_filename(filter, fname) This function opens a dialogue and asks the player for a filename to open with the given filter. The filter has the form "name1|mask1|name2|mask2|...", where the mask may contain the different options with a semicolon between them and you can also use a "*" to mean any string. For example: "bitmaps|*.bmp;*.wmf", would ask the user to select the name of a bitmap file from the system, but only those that have the two specified extensions (bmp and png). this function does not open the file itself! It only returns a string with the full name and path of the file. If the user presses "Cancel" an empty string "" is returned.
  • get_save_filename(filter, fname) This function opens a dialogue and asks the player for a filename to save to with the given filter. The filter has the form "name1|mask1|name2|mask2|...", where the mask may contain the different options with a semicolon between them and you can also use a "*" to mean any string. For example: "bitmaps|*.bmp;*.wmf", would ask the user to select the name of a bitmap file from the system, but only those that have the two specified extensions (bmp and png). this function does not save the file itself! It only returns a string with the full name and path of the file. If the user presses "Cancel" an empty string "" is returned.
  • get_open_filename_ext(filter, fname, dir, title) This function opens a dialogue and asks the player for a filename to open with the given filter. The filter has the form "name1|mask1|name2|mask2|...", where the mask may contain the different options with a semicolon between them and you can also use a "*" to mean any string. For example: "bitmaps|*.bmp;*.wmf", would ask the user to select the name of a bitmap file from the system, but only those that have the two specified extensions (bmp and png). this function does not open the file itself! It only returns a string with the full name and path of the file. If the user presses "Cancel" an empty string "" is returned. You may also add in a directory to start the search from, and a caption to be shown at the top of the window instead of the default one.
  • get_save_filename_ext(filter, fname, dir, title) This function opens a dialogue and asks the player for a filename to save to with the given filter. The filter has the form "name1|mask1|name2|mask2|...", where the mask may contain the different options with a semicolon between them and you can also use a "*" to mean any string. For example: "bitmaps|*.bmp;*.wmf", would ask the user to select the name of a bitmap file from the system, but only those that have the two specified extensions (bmp and png). this function does not save the file itself! It only returns a string with the full name and path of the file. If the user presses "Cancel" an empty string "" is returned. You may also add in a directory to start the search from, and a caption to be shown at the top of the window instead of the default one.
  • get_directory(dname) This function opens a dialogue and asks the player for a directory. dname is the default name. If the user presses "Cancel" an empty string "" is returned.
  • get_directory_alt(capt, root) This function opens a dialogue and is an alternative way to ask the player for a directory. capt is the caption to be shown. root is the root of the directory tree to be shown. Use an empty string to show the whole tree. If the user presses "Cancel" an empty string "" is returned.
 
Last edited:

Samuel Venable

Time Killer
Version 1.1.0 Released!
Added Linux Support! (known issues listed below)
  • The Linux *.SO library needs to be built as x64 for the GMS 2 runner.
  • The filter argument is currently ignored; all file types will be displayed.
  • The dialogues will not keep focus, if the main game window is clicked.
  • The root argument in get_directory_alt does not limit viewable folders.
<image removed>
<image removed>
 
Last edited:

Samuel Venable

Time Killer
New Version(s) Released!

Now this extension has new and improved popup message and input boxes, for both Windows and Linux!

See the OP for the new screenshots and function list.
 

Samuel Venable

Time Killer
Version 1.6.0 Released!
New functions listed below:
  • Choose Color Dialog - get_color_fmns(defcol)
  • Show Error Dialolg - show_error_fmns(str, abort)
Version 1.6.1 Released!
Small bug-fixes listed below:
  • Fixed the crash that occurred when a dialog opened during the game being minimized
  • Fixed the crash that occurred when you try to use double quotes in a string of a function
  • No more crashes should be happening for any reason--sorry about that!
Version 1.6.2 Released!
New change mentioned below:

Added single-file-filter support to Linux. For example, this works:
  • get_open_filename_fmns("Sprite Image Files|*.png;*.gif;*.jpg;*.jpeg", "sprite.png");
Multiple-file-filters aren't yet supported on Linux, so this won't work:
  • get_open_filename_fmns("PNG Image Files|*.png|GIF Image Files|*.gif|JPEG Image Files|*.jpg;*.jpeg", "sprite.png");
However, both of the above examples work on Windows, you should probably use the earlier example, so that it will work cross-platform. Multiple-file-filters will be added to Linux as soon as I figure out how to do that. Hopefully soon.

Version 1.7.0 Coming Soon!

Here's what will be available in version 1.7.0:
  • GameMaker Studio 2's 64-bit Linux runner compatibility - this will be added to my other Linux extensions as well
  • Support for multiple-file-filters in the "filter" argument of the "Open" and "Save As" dialogs on Ubuntu
When those two things are complete, I am going to start charging for the asset, but I will be reasonable ($1.99 USD).
 
Last edited:

Samuel Venable

Time Killer
Yesterday, I created a helpdesk ticket asking for YoYoGames to bring back the GameMaker 8.1 get_color(defcol) function, to GameMaker Studio 2, (and possibly 1.4), on Windows, Mac, and Linux. I provided them source code taken from my extension to help the process of them adding this feature that much easier, by doing practically all the work for them. The only problem is, while the code is Mac-compatible, I don't know what language their macOS runner is written in - the only two I think are likely would be either C++ or Objective-C, but my code is written specifically for either C or C++, so if their Mac runner is in Objective-C or some other language like that, it won't be near as easy to port the function I wrote to Mac. We'll see what happens! :D

<image removed>
<image removed>

This is my third potential code-contribution to GameMaker Studio. After but so many of these, they might as well change my member type from a normal member to a contributor! :D

1) YoYoGames already confirmed they will use my code I provided for Borderless Window support on Linux, it just isn't high on their priority list.

2) They did not say if or when they will add my get_open/save_filename/_ext() functions I wrote for Linux, but the guy who reviewed my ticket did say they are having internal discussion about it and they will contact me if they have any questions or need further assistance in adding those features, should they decide to do it.

3) And last but not least, my get_color(defcol) function might be added to GMS2, I just haven't heard back from them yet, and when I do, they may or may not tell me whether they will add it, and they may or may not add it.

If you are a good cross-platform programmer, I highly recommend submitting to the helpdesk your contributions to either add back functions from older versions of GameMaker, or completely new ones that YoYoGames haven't thought of before to add to the engine - https://help.yoyogames.com/

And if they deny your request, you can always make that code of yours into an extension and publish it to the marketplace. :)
 
Last edited:

Samuel Venable

Time Killer
Version 1.6.4 Released!
  • The new Linux runner is now fully supported.
  • Linux dialogs now keep focus, (64-bit only).
  • All of my Linux extensions now support 64-bit.
 
Last edited:

Samuel Venable

Time Killer
Version 1.6.9 Released!
  • BUGFIX: Inputbox no longer hides input like a password field when the second argument of get_string_fmns() is an empty string on Linux.
  • BUGFIX: Added a call to XCloseDisplay() because I forgot it initially, (required whenever there is a call to XOpenDisplay() in X11), on Linux.
  • BUGFIX: Removed a bunch of redundant code in the C++ side on Linux. This also reduced the file size of the shared object library a little.
Also wanted everyone to know that if you happen to not like GameMaker's default dialog system, this is a very nice looking, well designed, and clean alternative. Unlike GameMaker Studio's default get_string() and get_integer() for Linux, the functions my extension provides have a text field with text contents that can actually have the entry point repositioned, text can be selected, copied, and pasted in and out of the text field. Also supports full UTF-8 characters. None of this can be said about GameMaker Studio's current get_string() or get_integer() functions on Linux. In general, not just the input box functions, but all the dialogs this extension can create in general on Windows and Linux are just overall better, because they are a designed based on what is native to the OS, not custom-made dialogs, like GameMaker's default.

The get_directory_fmns() function on Windows is the only custom made dialog this extension uses, because I wanted to mimic the get_directory() function of GameMaker v4.3-8.1 the best I could, which is a Delphi-specific dialog. This extension is written in C++, not Delphi, so the imitation isn't perfect, but it is pretty darn close visually.
 
Last edited:

Samuel Venable

Time Killer
Really useful tnx!
Thank you! Yay! I finally got 1 comment of appreciation in this topic!! lol

Version 1.6.10 Released!

Please replace all Scripts and Included Files in your existing projects to apply this update!!!

Added two new functions:
  • string get_password_fmns(string str, string def)
  • real get_passcode_fmns(string str, real def)
 

cgPixel

Member
Hello Samuel,

this extension is really helpful, thank you very much!
Any chance for a show_menu replacement?

The famous N_Menu Dll is no longer working in GM:S...
Keep up the good work.

Kind Regards
 

Samuel Venable

Time Killer
Hello @cgPixel,

While this idea has already been explored, I just never got around to doing it yet. If I do manage to add this feature, I would strongly prefer it to be cross-platform across desktops, (Windows, Mac, and Linux), like the rest of the extension.

Doing so on Windows should be very simple, the only thing I haven't looked into is the proper way of achieving this on Linux and Mac. On Linux, menus are displayed a lot like on Mac, and are usually accessed through the menu bar located on the top of the screen, not on any specific window's client area other than the Desktop. I'm not sure if it is a simple process to complete on Linux or Mac, I don't have enough experience with those platforms to know how easy it would be, but I will check it out pretty soon. :)

I am looking to getting this extension working on Mac, I'm just not in a position to port it right now.
 

klys

Member
wow! Awesome work!
Would be great to have those functions working on Android too...

But to have then working on Linux/ubuntu is great! I can now make one of my game editor work on linux!!!

Android should be taked as a SYSTEM for all devices (Desktop included) since it can be installed on Mac, Linux and Windows computers and use cursor features.
 

Samuel Venable

Time Killer
wow! Awesome work!
Android should be taked as a SYSTEM for all devices (Desktop included) since it can be installed on Mac, Linux and Windows computers and use cursor features.
I have the 1.4 Android module, but not the 2.x version. Since 1.4 is going to stop working on Android rather soon, I don't want to pursue doing this until I have the 2.x Android export. But your request I have made note of, I'd love to support this extension beyond desktops, if it isn't too much trouble to maintain.

In other news...

Working on Multiple File Filters support for Linux. So far so good... Got it working powered by Zenity, now I need to port the code to KDialog, AppleScript, and a few other scripting dialog tools. Once I'm done with those, the next update will roll around pretty quickly. :)
 

klys

Member
So sad they going to stop supporting 1.4 ...

I havent tested 2.0 ...

its really better than 1.4 or still being buggy?

ONTOPIC

Would be great to also support iOS but its only for iPhone and emulators, i dont know if somebody already support a port of iOS for desktop machine, it anyway really do not make sense since its a comercial system rather than a normal OS.
 

Samuel Venable

Time Killer
So sad they going to stop supporting 1.4 ...

I havent tested 2.0 ...

its really better than 1.4 or still being buggy?

ONTOPIC

Would be great to also support iOS but its only for iPhone and emulators, i dont know if somebody already support a port of iOS for desktop machine, it anyway really do not make sense since its a comercial system rather than a normal OS.
I hate to say it, but currently there are no plans for an iOS version of this asset. It would be too much trouble to test and maintain because I would be relying on someone else's Mac and iOS devices.

Are you saying GMStudio is buggy or my extension is buggy?
 
Last edited:

Samuel Venable

Time Killer
Version 1.7.0 Released!

As a friendly reminder, I did say once version 1.7.0 was released, I was going to start charging $1.99 USD for the asset. To give more people a chance to download it before I start charging, I have decided to put off selling the asset for a week, starting now. Get it for free while you can! :D

Please replace all Scripts and Included Files in your existing projects to apply this update!!!
  • Now requires zenity to be installed on the end user's Linux machine as well as your own.
  • Multiple file filters are now supported on Linux for all Open and Save As dialog functions.
The Linux apps that use this extension need zenity installed.

To install zenity on Debian-based Linux distributions, enter this command into the terminal:

sudo apt-get install zenity

The Linux library's source code needs libx11-dev installed.

To install libx11-dev on Debian-based Linux distributions, enter this command into the terminal:

sudo apt-get install libx11-dev
 

Samuel Venable

Time Killer
Okay, the asset now costs $1.99 USD going forward. I will not be doing any 100%-off sales on my paid assets, so don't bother trying to wait for one. :p
 

Samuel Venable

Time Killer
Version 1.8.0 Released!

Please replace all Scripts and Included Files in your existing projects to apply this update!!!
  • Fixed several bugs / inconsistencies between GameMaker 8.1's version of the get_directory(dname) and the equivalent function included in this extension. This includes returning a directory string that is no longer converted to lower case for seemingly no reason, and a change in the specific font used by the dialog to match the original function.
  • get_directory_fmns(dname) and get_directory_alt_fmns(capt, root) now both return the selected path string as before but now including the final slash at the end, to be more consistent with how GameMaker Studio 1.4 and GameMaker Studio 2 works with directory constants such as working_directory.
  • Re-targeted the Windows DLL to use ATL. This enables you to optionally install the DLL to your registry, so that you may also use its functions in languages besides GML, such as VBScript and JScript, that you otherwise normally couldn't. Examples on how to do this may be found in the "DialogModule.dll.zip" included file, which contains the source code to the DLL, an example VBScipt file, and an example JScript file.
  • Do not be alarmed by the previous bullet point - using the DLL in GameMaker does not require writing anything to registry, you may still use it like any normal DLL.
 
Last edited:

Samuel Venable

Time Killer
The DialogModule Windows DLL and Linux SO libraries and their source code are now available for free on GitHub.

Contribute your own code, ideas, or create your own version - https://github.com/time-killer-games/DialogModule

However, I am not giving out any example GameMaker project files for this extension on GitHub; for the easiest access to that, you will still need to purchase the asset.

If you are OK with going through the trouble it takes to import the DLL and SO, and create the extension or scripts manually, you are free to do so.

But it is widely preferred that you support me so I can continue making these things for everyone.
 

Samuel Venable

Time Killer
Version 1.9.2 Released!

Please replace all Scripts and Included Files in your existing projects to apply this update!!!

  • Added macOS support (WIP).
  • Minor code tweaks.
macOS users: get_color() will usually hang the game in an infinite loop due to a current bug with AppleScript. There is no workaround that I am aware of until Apple fixes it. Everything else works, so once the demo project starts hanging on Mac, (because get_color() being called at the end), just right click on the game's icon in the System Tray and "Force Quit". File Filters are not yet supported in "Open" and "Save As" dialogs, so all file types will be select-able. Please note this extension is mostly a finished product, macOS is the only platform with these limitations, which I intend, (and hope), to have fixed as soon as I can. As it stands, the Windows and Linux ports are pretty solid on their own. "File Manager" will be updated soon as well so that you may use the "Open" and "Save As" dialogs more effectively on macOS, (by breaking the sandboxed filesystem limitations). "File Manager" also has several minor bugs that will be sorted out in this upcoming release.

Edit:

Added the Mac OS X binaries and source code to the Dialog Module repository on GitHub.

https://github.com/time-killer-games/DialogModule
 
Last edited:

rIKmAN

Member
6) Test it out on Windows, Mac OS X, and Linux! :D
Hey Sam, just a bit of general feedback.

I would have tried this out if you had provided links to compiled binaries (if possible) that I could have quickly checked out with a double click rather than having to open GMS, create a new project, copy the code etc.

Lazy I know, but that's most people today I guess and I think people may be more willing to run a quick compiled binary to check out the features and then if they like what they see go and investigate the code and the library itself etc.

Just a thought anyway, keep up the solid work!
 

Samuel Venable

Time Killer
Ok, I'll provide binaries then, will be available within a few minutes.

Thank you! :)

Edit:

The official Windows and Linux executable demos, (made with GameMaker Studio 2.1), can be downloaded here.
 
Last edited:

rIKmAN

Member
Ok, I'll provide binaries then, will be available within a few minutes.

Thank you! :)

Edit:

Windows and Mac binaries can be downloaded here:

https://www.dropbox.com/sh/migjlq8wcgqh34k/AAB0NhwPIEvDnwANoUTVu5bja?dl=0

Building the Linux version now, which, once uploaded, will be available at the same link...

Note: Built with GMS 1.4 but works the same in GMS 2.x.
Nice one, that was quick!
This looks pretty handy so I'll keep it in mind if I ever need to do native dialogue / file access stuff.

I noticed all the options fail gracefully if you cancel them except number 4 which gives the standard GMS crash dialogue.
 

Samuel Venable

Time Killer
Nice one, that was quick!
This looks pretty handy so I'll keep it in mind if I ever need to do native dialogue / file access stuff.

I noticed all the options fail gracefully if you cancel them except number 4 which gives the standard GMS crash dialogue.
lol i forgot i accidentally misspelled a variable for number 4. Let me fix that one real quick and re-upload.

Edit:

Fixed!

Edit2:

Found a few bugs on Mac and Linux, thanks to the creation of these demos. I have somewhere to be right now, but I'll be sure to fix them super quick, no later than tmr.

Edit3:

Fixed!
 
Last edited:

Samuel Venable

Time Killer
Version 2.2.0 Released!
  • I fixed get_color() on macOS. It no longer hangs the program and the dialog initializes, opens, and returns properly.
  • 1 File Filter is now supported on macOS File Dialogs. Due to the API functions used, there appears to be no way to implement multiple file filters. So all file types you separate by semicolons in the first filter are the only types that will be recognized in the File Dialogs on macOS.
 

Samuel Venable

Time Killer
Version 2.4.0 Released!
  • [Windows] Fixed a problem with some dialogs not opening on the right monitor in a multiple monitor setup.
  • [macOS] Fixed an issue where it was impossible to display all file types using an asterisk for the file dialogs.
  • [macOS] [Ubuntu] Fixed a safety issue with the use of the POSIX functions dirname() and basename().
 

Samuel Venable

Time Killer
Version 2.5.0 Released!
  • [Windows] Added support for multiple DPI settings.
Anyone who has a multiple monitor setup running Windows 10, I need your help with something. Please run the executable demo provided in the OP on your multiple monitor Windows 10. It needs to be tested with a different DPI setting on each monitor, and I will need a screenshot of the dialog on each monitor; specifically with the input box dialog and the "Select Directory" dialog.

Thanks!
Samuel
 

Samuel Venable

Time Killer
<image removed>

Dialog Module is now featured at the top of the GameMaker Marketplace homepage!

It is occasionally swapped in and out with a different asset, so no guarantee you'll see it there.

Keep an eye out for this asset in a big sale coming up!

Click here for more details.
 
Last edited:

Samuel Venable

Time Killer
<image removed>

Coming Soon: Optionally Create KDE Dialogs on Linux!

(Due to incompatibility, some minor features will not be included with this version).

Edit: Now Available!
 
Last edited:

Samuel Venable

Time Killer
Version 2.8.0 Released!
  • [Windows] Fixed a bug where "Input Box" functions would not resize to fit static text contents.
Version 2.9.0 Released!
  • [Windows] Code tweaks.
Version 3.0.0 Released!
  • [All Platforms] Updated included "File Manager" to version 3.0.0.
 

Samuel Venable

Time Killer
Get 50%-off this product until January 1st, 2019 at 0:00 AM EST.

Applies to both the GameMaker Marketplace and the itch.io Game Asset Store.

Buy it for half-off now, while you can, or wait until around the end of 2019, for the next, (likely, but not promised), Winter Sale!
 
Last edited:

Samuel Venable

Time Killer
Due to a problem with the Marketplace GameMaker Studio 1.4 uploader, I will not be updating this asset on the Marketplace until YoYoGames gets that uploader fixed.

If you purchase from itch.io, there are 4 new functions:
  • get_open_filenames_fmns(filter, fname)
  • get_open_filenames_ext_fmns(filter, fname, dir, title)
  • get_color_ext_fmns(defcol, title)
  • environment_get_variable_fmns(name)
At long last, the ability to select multiple files in the Open File dialog is available to GameMaker users! :D
 

Samuel Venable

Time Killer
Re-wrote the documentation so that it now uses my own words instead of being a copy/paste of the documentation written for YoYo by @Nocturne. This is an important step to make, apart from me not owning the copyrights to the original text, also because not everything about my extension is necessarily the same as YoYo's implementation. Apologies to YoYo staff for me not doing this in the first place!

Documentation:
http://dialogmodule.weebly.com/
 

Samuel Venable

Time Killer
Really exciting news for you Mac users! The icon you set for your game is now used for the dialogs that formerly used a default "no icon set" app icon, with the exception of show_error_fmns() due to a limitation with the stop sign icon in AppleScript dialogs. As can be seen below in the first several frames of this GIF:

<image removed>

At the end of the day, this makes your app look way more professional than before. I am so glad I got this done. This update is already available on itch.io. I currently have no sales on there yet so I assume most people prefer ordering from the GM Marketplace, and if you would like to get access to this update sooner, Marketplace users, please contact the YoYo helpdesk and request them to fix the GameMaker Studio 1.4 uploader. Once that has been done, I will update the GM Marketplace upload of the asset for both 1.4 and 2.x to this new version. :)

P.S. a significant amount of bugs have been fixed with KDialog, and KDialog is now just as stable as the other Widget Systems in the latest itch.io release.
 
Last edited:

Samuel Venable

Time Killer
Now multiple file filters are supported on macOS! Also did a full re-write in Objective-C, (formerly written in AppleScript).

<image removed>
 
Last edited:

Samuel Venable

Time Killer
Dropped the price down to $9.99 USD. This is not a sale. I repeat. This is not a sale. But the price will go back up if I experience no increase in sales. Beware! :p
 

Samuel Venable

Time Killer
After the most recent update this asset sadly is no longer compatible with GameMaker Studio 1.4 and so it is now only available for GameMaker Studio 2. Please contact me if you would like to use it in GameMaker Studio 1.4 but please know ahead of time the functions get_directory() and get_directory_alt() will not work with GameMaker Studio 1.4 on Windows. Everything else does however. I removed the legacy version download to prevent negative reviews.
 

Samuel Venable

Time Killer
In what way is it no longer compatible? Do you need a hand with anything?
It's just the get_directory() and get_directory_alt() functions. For whatever reason GMS 1.4 crashes whenever I use the IFileDialog interface. It's weird though, it doesn't do that in GMS 2 or even GM 8.1.

You're welcome to take a crack at it:
https://github.com/time-killer-games/DialogModule/blob/master/DialogModule.dll/DialogModule/DialogModule/DialogModuleCtrl.cpp

Thanks for any help or suggestions! :)
 

Samuel Venable

Time Killer
Will have a look. So just a quick summary, what is the purpose of the two functions?
Select a directory with the dialog and returns that full path including the trailing backslash. arguments fname and root are the same; the directory the dialog initially opens in. capt is the title bar text.
 

Samuel Venable

Time Killer
Planned Features:
  • get_directories(dname) enables selection of multiple directories (won't be available in KDialog)
  • get_directories_alt(capt, root) ditto except you can change title bar text (won't be available in KDialog)
  • get_calendar(str) shows a calendar dialog for picking a specific date
  • get_calendar_ext(str, title) ditto except you can change title bar text
  • show_message_ext(str, but1, but2, but3) works the exact same as GameMaker 8.1 function except not skinnable and uses native look
 
Last edited:

Samuel Venable

Time Killer
The Linux re-write will be rolling out soon with some new features on all platforms (none of which are announced in my previous post). This will also include a bug-fix for older various versions of Ubuntu and other flavors of Linux concerning the multi-select file dialog.
 
Top