Ok, so my current project required a save as dialog box. After much messing around, I finally gave up on how I was doing it, and instead opted to implement it in engine(which ended up being much easier). I made it so it displayed the folders first, then a filtered list(by modifying the extension filter, you can make it so it only displays files of a certain type. Other types should be added, but haven't yet.) It also puts the name in an edit box when you click on a name, and auto closes when you double click a name.
Also, I modified the IGUIFileOpenDialog to support the file ordering and filtering, and also to auto accept on a double click of a file.
Now, I haven't tested this stuff under linux, however since I largely copied and pasted the OpenDialog, it should make the transition rather easily.
Also, it triggers the same events as the open file dialog box(ie EGET_FILE_SELECTED and EGET_FILE_CHOOSE_DIALOG_CANCELLED). I did this partially because I'm lazy, but also because the events are named in such a way that it makes sense that they could apply to this as well.
Now for a picture of it in action(note, the title is customizable just like the open file dialog box, I just don't happen to have set it as anything. Also, it's filtering out quite a number of files and only displaying files of type .txt. The bottom element is an edit box that allows you to type in the file you want to save as.
This file contains the CGUIFileSaveDialog definitions(along with the interface), along with the modified CGUIFileOpenDialog, and the CGUIEnvironment that allows you to create it. CGUIFileSaveDialog.zip
So, what do you think?