Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Goombert

376
Off-Topic / Re: Defold Engine tryouts and thoughts
« on: November 11, 2015, 09:22:40 PM »
It's alright we understand popcade. I am actually really glad you posted this as I was not aware. It looks like they're using the Eclipse framework for the IDE. Will keep any eye on it.

377
It's fine I'd understand. I realize this is a lot of information, but I'll give it a go.

Regarding the editor's, as far as I remember only the one's shown in this screenshot should be layed out properly, the others may not be completed or do anything.


I am really interested in working on this IDE again and adding the actual logic. But there's some things I have to straighten out first. With this new LGM release I am also writing the GMX API in C++, which is a reusable library for loading GMX projects. This is needed in NaturalGM, and C# can call native code, so I'd just use it instead of rewriting it again in C#.

The basics start with the language. In C++ you can namespace things. And you can nest namespaces in other namespaces. The namespaces are resolved with the :: operator, such as std::string.

In Java, there are no namespaces, only packages. Packages follow the naming convention of a web domain name, except reversed. So if ENIGMA was creating a package, we would use the package name of org.enigma-dev.somejavapackage. When you do not own a domain name you can use things like your GitHub URL where the project is hosted. Each Java file in a package has only a single outer class. You can not have two outer classes in Java that are side by side. You can nest another class inside the outer class, called an inner class, but it can not be side by side. So it is 1 main/outer class for each *.java source file. You can't even put a single enum next to the outer class, must be inside it. These packages correspond to physical folders on the file system, as opposed to C++'s and C#'s being just in the actual source files.

This limitation does not exist in C# because it follows the C++ conventions of namespaces. You can put multiple classes at the outer level side by side. So I genuinely believe that C# is a superior language for many other reasons in addition to this, including the way it handles templates and generics.

So all that exists there are the designer files. The designer file is just where the WYSIWYG tool to place controls puts its code for creating them. You can write that code yourself in your own classes, which is what is done in LateralGM. Other frameworks like Qt use their own designer files which are compiled to C++, in JavaFX or WPF you use XML files. WPF does the styling in the XML, but JavaFX and Qt use separate CSS files to style the controls.

Anyway, there is nothing wrong with using a designer. A lot of people often say that this isn't good because you can create more flexible layouts through code, which is true. But there's nothing wrong with using a designer to lay out the basics of a form. And with WPF and JavaFX, using XML layout files is the way to code because it separates the layout from the logic of the program. Just like how HTML separates the structure of the DOM with CSS for styling and JavaScript for logic. Things are more reusable and modular this way.

MainWindow.Designer.cs
So we have the designer file generated by Visual Studio:
https://github.com/enigma-dev/SharpGM/blob/6719388fb7cabcdffefe69e4f5f8e38deae756de/SharpGM/MainWindow.Designer.cs#L26
Contrary to what it says, you can actually edit it from code as long as you write the exact same code as the editor would. Also, people often complain about this way of doing layouts because XML is more flexible, you can keep it outside the executable and let end users change the layout, so people often argue that WPF is the way to go. But when people write native Win32 apps using C++ and plain old Windows API, they do it in resource files, which I'll get to.

MainWindow.cs
Then you have the regular source file, which is where you should add the actual logic. This includes events for the controls and everything.
https://github.com/enigma-dev/SharpGM/blob/6719388fb7cabcdffefe69e4f5f8e38deae756de/SharpGM/MainWindow.cs

MainWindow.resx
Finally we have the resx file for the form.
https://github.com/enigma-dev/SharpGM/blob/6719388fb7cabcdffefe69e4f5f8e38deae756de/SharpGM/MainWindow.resx

This file is XML and the comments give you a good explanation of what it is for. It is essentially an extension of the rc resources file for WinAPI. When you write native Win32 applications like I just mentioned, using C++ and the plain old WinAPI without .NET or anything, you use rc resource files. ENIGMA uses these for some of the basic message dialogs, such as get_login or show_info.
https://github.com/enigma-dev/enigma-dev/blob/715e96c3b17af346d68e37a8c1708cc13cb369f5/ENIGMAsystem/SHELL/Widget_Systems/Win32/getstring.rc#L14
Notice it looks like a layout? LTEXT is just a label. It tells you its position, dimensions, and text value just like a layout file would. Anywhere you see #include <windows.h> that means the Windows API is being used. These files go through what's called the resource compiler (MinGW, the Windows port of GCC, has an open source version that ENIGMA uses) turns these into a binary which the Windows API can read.

All of this gets wrapped up for you with .NET, including the native controls. Everything in Windows Forms and .NET is just C# bindings (called a language binding because one language is wrapping another languages code, C# wrapping C++ ie) around all of this that takes care of the work for you. resx is an extension of these native Windows API resource files that is formatted as XML.

378
Yeah, just download from GitHub man, it looks like I left all the Visual Studio solution files in there.
https://github.com/enigma-dev/SharpGM

So you should just have to open it up, I used 2013 too iirc. You might have to download and install the dll for Scintilla's Windows Forms wrapper. I used Scintilla for the code editor/syntax highlighting. Or it may be commented out because I opened it in Mono and didn't set up Scintilla, don't know if I pushed that to GitHub. Just Google how to get Scintilla for C#/Windows Forms or use NuGet.

379
General ENIGMA / Re: Splashscreens
« on: November 09, 2015, 04:42:33 AM »
I'm inclined to agree and this is why Rusky mentioned how the original LGM logo is a Nintendo 64 homage.

Perhaps we could add something like the following, tic tac toe, binary tic tac toe, joystick, or a controller silhouette:






Or, as always, just the flat LGM cube:








380
You're right HitCoder, there's nothing stopping you, and on top of that, LateralGM follows three tier architecture. It means you can reuse the same code and throw out the whole UI layer, so you could just port LateralGM to JavaFX by rewriting the UI layer. We wanted to make this easier by adding a CLI where you'd just pass the file as a shell command for it to be built, to facilitate quickly bootstrapping third party/new IDE's. My one that loads GMX files does exist but it's not as complete.

Also check out WPF, Qt, GTK# for Mono, and the new JavaFX. Qt also exists for C#, just like how it is done for native Windows Forms, the controls are wrapped in C# classes and exposed to you. That's a called a language binding because Qt is C++ and on top of that they are wrapping it in C# to use it from C#. There's also Qt for Java.

Use anything really except Java Swing, because it is the worst of the worst GUI frameworks that were ever made. Anyway, it'll take time and practice. Clearly you are free to start with the C# version I had if you want. It might help you to study LateralGM's code a little as well. I first came here back in 2013 and I had no idea how any of the project worked, and I hadn't really spent much of my adult life coding at that point, besides Mario games. So just stick with your hobbies and you'll get where you want to be.

PS: I've really been yearning to write that C# IDE for LGM just because of how nice it is to have a truly native IDE. Follow the 3 tier architecture and release a separate Linux version with GTK. Also the C# programming language has nicer semantics than Java.

381
General ENIGMA / Re: Splashscreens
« on: November 08, 2015, 08:55:29 AM »
Yeah ok now that is looking a lot better, I see what you mean now, let's see it again with Product Sans.
http://www.xamphyx.com/product-sans-download.html

Download, right click->install the ttf font file from Google.

Edit: I got here with Product Sans, I don't know now, it is becoming a tie between this and the other one for me now.


382
Third Party / Custom Look and Feels
« on: November 08, 2015, 04:55:27 AM »
This was a topic that needed written about for some time. I took the chance to sit down and explain the ideas behind the Swing look and feels and the MVC architecture.
http://enigma-dev.org/docs/Wiki/Look_and_Feel

I also created a custom look and feel derived from Metal which can be downloaded on GitHub. I am aware that the L&F looks like complete garbage, almost as bad as Metal itself, however this should serve as a basic example for anyone who wants to understand how it is done. That said, I did follow the correct coding standards of the standard look and feels.
https://github.com/RobertBColton/CalicoLaF

Custom look and feels can be plugged into LateralGM by following the other topic as a guide:
http://enigma-dev.org/forums/index.php?topic=2283

I do not believe that the Calico look and feel will ever become fully complete. It is a substantial amount of work compared to simply styling a modern JavaFX application with CSS for example. I would however like to see a nice look and feel that is unique to LateralGM, though it will likely be rebuilt in JavaFX anyway at this point. In the mean time, feel free to play around and create your own look and feels.

383
General ENIGMA / Re: Splashscreens
« on: November 08, 2015, 01:08:11 AM »
Josh has a very nice attempt at it, but he doesn't see that it's a little too noisy, it's not as sleek as other material designs.

Here's my version that's a lot less fugly and a lot more practical:


Here's two more I came up with:



I quite like the version I've come up with, though I don't think we'll use it as Josh indicates. Regarding Rusky, I am surprised nobody ever did that for the original n64 logo.


And back at rcobra's, I think it's a lot more fitting than the Adobe one, and tbh, I don't actually like Adobe's, I think he made something much nicer for LateralGM. The Adobe one is just a wall of text and horrible colors. I like Harri's modification as well, but it still needs something like a vignette to distinguish it from the desktop and other windows. That said, I was already considering dropping the progress bar, ideally the program would load instantly, but I am not sure yet if we want to drop the progress bar or not. It still does give you an idea if you are halfway or a quarter of a way there, though progress bars are, as usual, never accurate. They can be more accurate when weighted or using monte carlo approximations.

Also, the reason I changed the font was I felt the M looked weird at the bottom, even in the original font because I looked it up, the M looks like it is bulging on the bottom and makes it look aliased to me. We will probably use product sans or this other free font that I found.




And here we are with Product Sans font, this is likely what we'll be going with at this point:



All of this said, I am very proud of everyone's work here, this is all really great art work, I am impressed with our level of work.

384
General ENIGMA / Re: Splashscreens
« on: November 05, 2015, 07:59:35 PM »
Wow, I can't tell you how much I like those, you just blew me out of the water. Both of them are great! I think the second one on the bottom might look better with some grays around the edges though somewhat closer to the material design example, the white LGM text and blocks are fine though, but the white on the top and bottom leftish and rightish areas I don't know if I like as much as I would with different grays. Honestly these are beautiful, I am set to use the first one already.

Here is specifically why, it does not contrast as much with Explorer:


I think a nice vignette may solve it on just the background and not the text, I like a vignette a little better than just switching the color to something more contrasting.

The first one seems to be perfect, but I still think a vignette is a good idea in case the wallpaper is a solid color.


Here are my modified versions using SegoeUI (We should try to use a non-proprietary font, so I likely won't use SegoUI in the final one):




Here they are loaded in (DaSpirit and I both like the first one best):




385
General ENIGMA / Re: Splashscreens
« on: November 05, 2015, 09:26:00 AM »
Thanks ego, I'll try to redo the red one again later with different colors. It was honestly my least favorite and my favorites were:



And Rusky also likes:



You're right about the one looking like a mail icon, I was trying to think of something based on Material Design, which is good guideline for anybody who wants to try. But it still isn't intended to look like an mail icon, I just really suck at art that isn't 3D models.

Here's an example of Material Design:


Quote from: Garo
Any specific dimensions for the splash screen? Does it allow transparency?
No specific dimensions, the splashscreen adapts the progress bar, but I'd say a power of two is a good recommendation, but that's not absolutely necessary. Transparency is allowed, but I generally prefer a flat rectangular look personally. Only thing to note about the transparency is that there is still the progress bar that fills the width at the bottom, and it takes the look of the current look and feel, so it may look native or like something else.

Throw something together and see what you can come up with. If it's good we can mutually agree to use it.

386
General ENIGMA / Splashscreens
« on: November 05, 2015, 12:39:26 AM »


Ok so, basically, I am a terrible artist, and LateralGM could use a good modern splash screen. I've made several attempts before and we've come up with semi-good splash screens before. I have been making some more attempts and just can't quite get it right. If there is any graphics artist who would be interested in designing one, please share them in this topic.



















The ultimate goal here would be like one of the Microsoft splashscreens, because in my opinion, they make very aesthetically pleasing splash screens:


So far, DaSpirit and Rusky like this one and so do I, the clear winner of mine:


387
General ENIGMA / Re: What Java version do you use?
« on: November 03, 2015, 10:25:31 PM »
Yes I am aware of that pull request egofree. The reason it has not been pulled is because there's more than just those changes required to fix it fully. It's a relatively simple task at this time, I just got too burnt out to finish it the last time along with the JoshEdit changes. I would like to address that after this release, as I indicated in my other reply, I want to just focus on these simple little stability fixes and bug patches, I want a nice solid healthy release. So I do not want to get off track and go working to address a ton of other things, especially when these fixes I have are permanent and likely won't be undone. Let's just focus on this for now, and then we can go from there.

388
General ENIGMA / Re: What Java version do you use?
« on: November 02, 2015, 11:06:26 AM »
Right, I understood you perfectly. I just don't know where in the process of Swing modularity that jigsaw is at, so I don't know if it's getting better or worse right now, as you say it is getting better, but either way there are going to be places that will be broken permanently and not get any better that will need fixed manually in LGM.

I was aware of the work around, I had done it myself several times, but it's completely fixed for every external editor now, no need to worry about it again it was a simple mistake made by very early contributors or else IsmAvatar herself since it is in 16b4 too. Another one is the room editor will no longer complain about unsaved changes, that had to do with the frame size, I was manually overriding the default frame size instead of putting it into the room defaults. That change was made by me in 1.8.2 before I properly understood how that was implemented. Overall it's very simple fixes aimed at improving the stability and responsiveness of the program, which is healthy and I think the most important for the next update.

His contributions should already also be included in the last build that was made, I believe the confusion there is that the portable ZIP was never rebuilt with the latest build. I have all of the recent changes from GitHub because I only do a release with everything synced to master. Besides that, I don't actually know what feature you are talking about, I've seen most of the room editor changes in the room editor and had to work through some of them to put the name text field on there.

389
General ENIGMA / Re: What Java version do you use?
« on: November 01, 2015, 11:31:05 PM »
Yeah that's probably because of things I mentioned. I know JavaFX was pretty buggy too from experience in the first 8u45 release. Eclipse is even being affected by these Swing changes, so yeah. And like people are saying, it's most likely to occur where you are doing undefined things by the API. So I think a lot of those are going to creep up and break if they haven't already.

Just to mention I was not lying about cleaning up LateralGM. The new release is coming and there is nothing revolutionary, but many changes that make it more stable. I did some things like removing empty lines with tabs and other excess whitespace, I've enabled whitespace symbols in Eclipse now and these won't pop up from me again. I addressed an issue reported by sorlok, you can now actually rename instances in the room editor for the GMX format, instances will have a randomly hashed name when a GMK is loaded for convenience. I've also made external editors more reliable, image editing used to annoy me because it would always fail after the second save and I never realized to fix it. Turns out the problem was leaving the file handle open, which was a similar issue with EGM when I first got here. In other places some of the layouts have been improved, and then there's the new hex color picker.

Right now I am waiting for 3 icons from Josh because I added the buttons for Community, Website, and Submit Issue to the help menu which you can configure the URI's in preferences just like with documentation. I need icons for those buttons and Josh has been too busy to do them. Also, the room editor has the nice transparency pattern now on its viewport. There's a host of tiny little bugs that I've fixed, all of which will be in the change log and I'm doing the best I can to make sure the solutions are correct. The other thing I am waiting on is to discuss how to revamp the preferences frame so changes can be reverted on it, I want to discuss that with Josh. Then clean up any mistakes I made in JoshEdit and the issue with building LGM right now, then release.

390
General ENIGMA / What Java version do you use?
« on: October 31, 2015, 08:47:08 PM »
This is an important question I wanted to ask some of you. Primarily because of a ton of crazy issues you all keep having. More specifically this question relates to Linux installations of ENIGMA. The newer OpenJDK releases are virtually unable to run LateralGM or any Swing application, from dialog panes freezing to not closing and random frequent segfaults. a2h who built this website we currently use came back from some of his studies and things he's been doing and brought it to my attention.
https://github.com/IsmAvatar/LateralGM/issues/227

I tested for him in my VirtualBox Ubuntu 15.1 install with both OpenJDK 7 and 8 (specifically 8u60) and both of them easily reproduced his issues. Simply opening the Help->About dialog would hang and crash, even though nothing more is being done than a simple JOptionPane call. I then removed both of these and installed the Oracle proprietary JDK and the issues all but seemingly vanished. Historically, the Oracle JDK is what I have used to test and develop LateralGM myself and from here on out, I am going to say that is the recommended installation because Swing applications are virtually unusable with OpenJDK.

This post will tell you how to install it on Ubuntu, works the same for 15.1, look at the top answer:
http://askubuntu.com/questions/521145/how-to-install-oracle-java-on-ubuntu-14-04

These issues may be related to the new Java modularization for Java 9 which adds modules that have metadata for a package manager type interface that will come to Java. So when you install Java, you won't install the runtime and when you run a Java program it can tell the Java installation where to download the necessary packages/runtime libraries from. Because Swing and the older Java jars/libraries were not built with modularity in mind they are moving things around and hiding certain interfaces, the following news article clarifies all of this:
http://www.javaworld.com/article/2861074/java-platform/modular-javas-changes-could-break-ides.html

Many people are afraid that some IDE's, including Eclipse and NetBeans, may require substantial refactoring to work properly with the newer Java's. So this is basically just a pointer that if you are having crazy problems with LateralGM on Linux, try out the proprietary Oracle JDK.