Jump to content

Implementing the Master GUI - INITIAL MOCKUP exe READY!


haddockd
 Share

Recommended Posts

So it looks like I will try to get the Master GUI underway. Now I actually need feedback that the community thinks is useful. I was thinking of having a guided approach where the user simply selects what they want and the tool guides them down to a level granular enough to choose an appropriate tool.

 

Also, do any authors object to me linking or invoking their tools via this master GUI? I want to be respectful of your wishes.

 

That being said, here is what I was thinking (be harsh, this is important):

 

1) I want to do stuff with:

 

  • Maps
  • Actors
  • Text and Hex
  • Songs
  • Other Miscellaneous 

Maps:

  • Converting Sketchup/Blender Models (SharpOcarina)
  • Actor Placement (ZAP 2, UoT and SakayaGL, ZAO-ADD)
  • Map Editing (ZLE 2 leverages n64conv if the OS is 64-bit?)
  • Map viewing (SorataVSE)
  • Tutorials (links on vid tut page)

Actors:

  • Create new actors (Hylian Toolbox)
  • View models (DLViewer)
  • Convert obj files to models (Model2N64)
  • Tutorials (if any)

Text and Hex:

  • Hex Editors (XVI32, suggestions on others?)
  • Text Editing (Scroll of Time, OOT Text Tool, Scroll of Time)
  • Value Editing (Airikita's Value Editor)

Songs:

  • Ripping and inserting music (messian's music and z64seq rip, Pierre's Ocarina Studio, DB's InstEd)
  • I know I helped SanguinettiMods on a GUI for an app that would automatically send music from MM to OoT...what was it called...anyone?

Other Misc:

  • Navi Color Changer
  • N64SeqRip
  • z64Dump
  • Zdec
  • All other tools like GDZ and the other old school tools

UPDATE 04/09/13

 

I have finished all of the main screens and compiled them into an exe. Give this a run and go through all the options. Other than some of the help and tutorial links, no functionality is implemented. I am eliciting feedback on how you feel about the flow, layout, overall presentation. Be harsh!

 

Oh, and tell me if you get any errors or unexpected behaviour but be specific on exactly how to go it to do whatever weirdness you are talking about...or else it is hard to fix :)

 

http://www.mediafire.com/?a334cje3cr3r3vg

Link to comment
Share on other sites

I have to let you know that I do not approve of the re-release of tools that I have already released (including code that checks for the existence of some tools and says if they are missing and where to download them is a good thing to add, though; people could easily lose the other tools that are included with it). Hylian Toolbox is also undergoing more updates at this very moment, so I would also rather it not be redistributed for that reason. It would be cool if you included code that checks for updates of the programs that it launches, too.

Link to comment
Share on other sites

Flotonic,

 

I agree but do you employ such an infrastructure with a public interface for my tool to check if there are indeed updates?

 

Also does you application allow me to query the current version?

 

If not, then what you suggest is not possible :)

 

Adding on.. I do not recall saying I was redistributing anything, just that the GUI could launch an app. Are you saying I would incorporate the code of your apps in the GUI? If so then that was never my intent.

 

Perhaps we ask the user where said application lies? Although that means the new users know what tools they want and where to find them and how to browse for them, etc (essentially back to square one making the GUI not very useful). The needed infrastructure to have downloads, versions ,etc queuable from the web doesn't exist for all tools (as far as I know it doesn't exist for any of them).

Link to comment
Share on other sites

Not possible? Pfft. The solution is simple. Open the contents of this URL (http://forums.maco64.com/index.php?showforum=16) as a file handle. Search for the first occurrence of "Current Version" after the first occurrence of "Hylian Toolbox." Save that to a configuration file. If it is different the next time the program runs, alert the user that Version %d is now available. I would suggest searching the topic itself, but that would make the total topic views escalate. I would add the few lines of code needed to make Hylian Toolbox check for updates (it would be only a few lines indeed), but virus detectors may go crazy because it is trying to connect to the web. It may also slow down how long it takes to launch it as well.

 

I wasn't sure. I assumed you would distribute all of the programs in a .zip file along with what you were making. :P If it asks the user where the application is located the first time they try to launch that application and have it remember where it is, they would only have to locate it once and they could easily launch it any other time.

Link to comment
Share on other sites

lol...i said it wasnt possible without that information silly...read the post next time.

 

I did giggle a little at the "simple" solution that took a paragraph to explain. Moving on.

 

If you do not want your apps to be involved with the GUI, that is your right as author and I respect that. I hereby recognize that Hylian Toolbox will not be distributed with my application :)

Link to comment
Share on other sites

You just said it was simply not possible. I don't see anything about it being not possible without a certain piece of information. :P

 

I am all-for in-depth explanations. :P

 

Thank you! I do not mind there being a launcher for my applications, though. The user will have to define their locations first, if that will not be a problem. :)

  • Like 1
Link to comment
Share on other sites

 

 

You just said it was simply not possible. I don't see anything about it being not possible without a certain piece of information.

I agree but do you employ such an infrastructure with a public interface for my tool to check if there are indeed updates? Also does you application allow me to query the current version? If not, then what you suggest is not possible :)

 

Strictly speaking "Actors" should be changed to "Objects". If you want to include programs related to actors, list zovldis and novl but I don't think there's much of a point because nobody uses them, the process of creating or editing actors requires using other things like mips-gcc too that aren't worth listing (not actual tools related to Zelda) and people who do this don't tend to be the sort of people that need a tool like this... I don't think a Windows binary of zovldis even exists anyway. On another note, I have no issue with you redistributing my tools along with this (would make it much easier on the user and I don't even remember where some of them are) but if you don't want to include all the programs with it, sending the user to a page where they can find the newest versions the first time they try to use a tool might be a good idea. The one thing I don't like about that is that the setup won't be automatic which probably would discourage newer people a little.

Link to comment
Share on other sites

I forgot about that little "debate" awhile back. Actors are now called objects! Thanks DB :)

 

<rant>

 

This is going to sound argumentative but I am being misquoted by Flo (DB got it right though ;) ). My statement was that if you do not have those items I requested...then at that point it was not possible...and you dont so I still suppose I was correct. For the record I have no intention on parsing web pages and going through threads with my code. If you would like an easy update, have your site (or create one) that I can queue directly for the file and parse version numbers. If you cannot (or are unwilling to) accommodate something like that, I understand. Also another necessary change would be for your apps to have some interface to your versions where I can queue the version number (even if it were as simple as a standard file name with version numbers to be parsed). Outside of that, it would add unneeded  complexity to the project which is, generally speaking, a bad thing.

 

</rant>

 

Any other feedback or programs? I would also love to hear from other authors :)

Link to comment
Share on other sites

As disorganized and/or technically discontinued some of my stuff is, is there anything I could do to make access or usage of them easier, at least for those that aren't complete zombies, like SO? I mean like implementing some kind of update notification system or command line support?

 

For example, I could give Model2N64 the ability to load model files via command line, like "N64ModelConvert.exe C:pathtomodelfile.obj", or maybe an argument that when launched with it simply returns a version string like "Model2N64 v0.1", which you could compare to a string from ex. a tiny text file on my webspace. Would something like that be helpful?

Link to comment
Share on other sites

The code to acquire the source code of a web page is a mere six lines, but OK. :P Yesterday, I was thinking about adding code to search for updates so there would be no need for this, but I am still trying to determine whether that is a good idea or not. It could substantially bulk up the file-size of the program and be a problem one way or another, but being able to alert users of bug fixes and new versions so easily makes it almost seem worth it... thoughts, anyone? I need some more opinions. :P

Link to comment
Share on other sites

I think it would be VERY helpful Flotonic especially to new users. I do respectfully request that you create your own thread for that discussion though so this thread does not lose its intended purpose please.

 

As disorganized and/or technically discontinued some of my stuff is, is there anything I could do to make access or usage of them easier, at least for those that aren't complete zombies, like SO? I mean like implementing some kind of update notification system or command line support?

 

For example, I could give Model2N64 the ability to load model files via command line, like "N64ModelConvert.exe C:pathtomodelfile.obj", or maybe an argument that when launched with it simply returns a version string like "Model2N64 v0.1", which you could compare to a string from ex. a tiny text file on my webspace. Would something like that be helpful?

Indeed. In the event that you do update or create improved writings for tools some standard would need to apply. It doesnt really matter what your standard is, as long as you tell me what it is and stick to it :P

 

I REALLY like the idea of adding a simply command line option that returns a string value of the version like "programName.exe -v" or something. That seems super easy to implement.

 

The question looms though as how we find the value of the newest version of the tool...?

Link to comment
Share on other sites

Indeed. In the event that you do update or create improved writings for tools some standard would need to apply. It doesnt really matter what your standard is, as long as you tell me what it is and stick to it  :P

 

I REALLY like the idea of adding a simply command line option that returns a string value of the version like "programName.exe -v" or something. That seems super easy to implement.

 

The question looms though as how we find the value of the newest version of the tool...?

 

Something that simple is something I simply won't be able to have second thoughts about, unlike most of my programs, so it's unlikely I'll change that standard :P

 

I'm messing around a bit with a sample application that does that stuff, with ex. "program.exe -v" returning a string containing ProductName and ProductVersion, so ex. "SampleProgram 1.0.0.0". Figuring out the newest version doesn't seem too difficult, I'll just put a file named "<ProductName>.txt" or somesuch on my webspace, which in turn contains a string of ProductVersion, ex. "1.0.0.0", plus actually reading the file looks pretty simple, too (you're using C# .NET, right?): http://stackoverflow.com/questions/2471209/how-to-read-a-file-from-internet (the WebClient answer in particular)

 

Them, if the version number read from the server is higher than what the existing application spits out on "-v", notify the user, or download the updated application - maybe from a URL in the second line of the text file, or one built from ProductName and Version? - or whatever else you'll want to do.

Link to comment
Share on other sites

Something that simple is something I simply won't be able to have second thoughts about, unlike most of my programs, so it's unlikely I'll change that standard :P

 

I'm messing around a bit with a sample application that does that stuff, with ex. "program.exe -v" returning a string containing ProductName and ProductVersion, so ex. "SampleProgram 1.0.0.0". Figuring out the newest version doesn't seem too difficult, I'll just put a file named "<ProductName>.txt" or somesuch on my webspace, which in turn contains a string of ProductVersion, ex. "1.0.0.0", plus actually reading the file looks pretty simple, too (you're using C# .NET, right?): http://stackoverflow.com/questions/2471209/how-to-read-a-file-from-internet

 

Them, if the version number read from the server is higher than what the existing application spits out on "-v", notify the user, or download the updated application - maybe from a URL in the second line of the text file, or one built from ProductName and Version? - or whatever else you'll want to do.

*Chants* "C#.NET" ...lol   Totally! I love that idea of the 2 line text file. First line being the current version and the next simply being the link to the newest version itself (I assume zip or rar...?). Then it could simply be extracted to the location and overwrite the old tool/files.

 

I am not saying EVERY author that wants updates has to follow this format (although it is easy to implement at their level) but something simplistic like this is exactly what we need to keep the community going and the /master GUI can help!

Link to comment
Share on other sites

*Chants* "C#.NET" ...lol   Totally! I love that idea of the 2 line text file. First line being the current version and the next simply being the link to the newest version itself (I assume zip or rar...?). Then it could simply be extracted to the location and overwrite the old tool/files.

 

I am not saying EVERY author that wants updates has to follow this format (although it is easy to implement at their level) but something simplistic like this is exactly what we need to keep the community going and the /master GUI can help!

 

Alright, here's the sample thingy I've been working on, source and all: http://magicstone.de/dzd/progupdates/CmdLineUpdateNotifierTest.rar

 

This supports the switches "-v" and "-o", the former will simply output the string "CmdLineUpdateNotifierTest 1.0.0.0" to the console and exit, while the latter is a dummy that's supposed to represent a "open file" switch, as in "-o <filename.ext>". It shows some things on the form, like what action was invoked via the command line (only said dummy in this example), and allows one to check for updates. That function connects to my webspace, checks if the version text file exists, then retrieves it if it does and acts depending on the local and online version numbers. The file in question looks like this:

1.5.0.0http://magicstone.de/dzd/progupdate/dummyfile.rar

 

Plain and simple, the first line being the most recent version's version number, the latter being the URL at which it can be found (in this case a nonexistent file; should be checked if that exists, too).

Link to comment
Share on other sites

Alright, here's the sample thingy I've been working on, source and all: http://magicstone.de/dzd/progupdates/CmdLineUpdateNotifierTest.rar

 

This supports the switches "-v" and "-o", the former will simply output the string "CmdLineUpdateNotifierTest 1.0.0.0" to the console and exit, while the latter is a dummy that's supposed to represent a "open file" switch, as in "-o <filename.ext>". It shows some things on the form, like what action was invoked via the command line (only said dummy in this example), and allows one to check for updates. That function connects to my webspace, checks if the version text file exists, then retrieves it if it does and acts depending on the local and online version numbers. The file in question looks like this:

1.5.0.0http://magicstone.de/dzd/progupdate/dummyfile.rar

 

Plain and simple, the first line being the most recent version's version number, the latter being the URL at which it can be found (in this case a nonexistent file; should be checked if that exists, too).

Thanks xDan. I will certainly give that a test once it gets to that step. I put together a really basic shell for a first screen and a second screen (if you click on Maps)

 

Screen1:

Posted Image

 

 

If you click Maps, you go to:

Posted Image

 

Thoughts?

  • Like 1
Link to comment
Share on other sites

So far it's looking pretty good. A very small gripe, but would it be feasible to replace the list of selectable options and the continue button with just buttons that function the same as continuing with a selecting option? I think it would at least make it a bit easier if Master GUI is used frequently and cut down the number of clicks by half. You could also leave a back/previous/home/whatever button at the bottom of the interface with a slight spacing so it isn't visually grouped with the program options. I definitely approve of the categorization here, it makes it very user friendly so people will know exactly what program they want to use for whatever it is they want to do.

Link to comment
Share on other sites

OK I *hope* to have all of the basic navigation and screens completed tomorrow. I will post some screens and descriptions once completed.

 

Also a note, the only author forbidding me to include their tool was Hylian Toolbox (no need to name the person as I do not wish to incite any negative emotions in ppl), so as far as I am concerned, all other authors are cool with it.

Link to comment
Share on other sites

OK, so here are the next sets of screenies. The basic workflow is:

You launch the main form

You choose one of the radio buttons (the main form becomes "invisible")

Based on your selection, the appropriate next form appears

The Back button (of closing the current form) makes the main form visible again

 

As soon as you click a radio button, the application progresses to eliminate clutter. Thanks to Secant for that tip!

 

Thoughts?

 

Posted Image

Link to comment
Share on other sites

Basically the way I planned on working it out was this:

 

On the third screen, which is what I am currently working on, (where it lists the actual programs associated with the activity selected) is where I will give the oppottunity to open Help files (but generally they should not be needed USING the program because any and all inputs will be guided through the GUI. I also plan on having links to the wiki when relevant.

  • Like 1
Link to comment
Share on other sites

I honestly think this is an incredible idea and I think you and giadrosich (for the tutorials thread) should be knighted in the hacking community for going through with this haha. I stopped participating in my own hacking, only to check back on the forums to see when new things are going on, but the creation of this is making me have second thoughts on whether I want to start up again or not. Seems like too often new tools are created for modding purposes where the creator and other advanced users are the only ones able to easily understand usage, and this GUI will surely draw in new and much needed users to the community because of its simplicity. There, done with my praise, haha now for one suggestion :D

 

Maybe make the options even more kindergarten friendly. They are already so simple but just a couple little things. Like in the songs form, where you have the "Custom Songs" option, maybe change it to "Custom Ocarina Songs" because that's where it points to Petrie's song creator, which is indeed for ocarina songs, correct? And then like how you've changed the "Actor" option on the main form to "Objects" to accommodate for their new proper name, but in the Maps form you still have an option listed as "Moving/Placing Actors in Maps". Obviously that's just a simple error and you've probably already caught it yourself, but just thought I'd mention it lol.

(I know these little things seem so simple that they shouldn't even matter, but a lot of people who speak English as their second language visit this community, so making it as "grade-school" as possible could really help)

 

But yeah seriously this is awesome and I wish you the best with it, I will definitely keep checking back to provide feedback! 

Link to comment
Share on other sites

This is THE thing that I would need if I tried to make a mod. I probably won't ever try, but I'm interested anyway. It looks super noob-friendly. So first things first, thank you.

 

I'm not sure that I understood well what was decided for how to find/updates the tools. Having all the programs in a .zip file would of course be the simplest but I understand that it might not be the developers' wishes (fine).

 

So will it be something like :

I open Master GUI -> Maps -> Edit existing maps -> NameOfTheTool -> two choices : 

-"I already downloaded this tool" -> asks me to find where the tool is on my computer

-"I never downloaded this tool, where can I find it ?" -> gives you a link to the developer's page where you can find a download link

?

 

 

Yeah, basic stupid stuff I know. But that can bother newbs like me.

Link to comment
Share on other sites

 Share

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.