Repository navigation
Releases: fraaaaa4/logix
Release list
[Testfire] 30th April version
⚠️ Important information for this release
I’m putting this at the top so everybody downloading this release can see it. Due to a problem that I’ve created myself, the file prolog.xml is needed to run Logix, but I didn’t include it in the zip of this release, because I thought I did remove it from the code. If you don’t put it, you’ll have an unrecoverable System.io.FileNotFoundException.
To fix it, just download prolog.xml from the code section (under bin > Debug > prolog.xml). In future versions I’ll look more into this problem.
Hello there.
I know I've been without any update or release published in a long time. Why? Well, I had lots of school stuff to do, social stuff to do, and also I didn't have too much motivation in continuing. I didn't have a use in Logix anymore, nor I didn't want to continue it to be honest.
Recently though, I wanted to return to coding again, and to at least get an alpha version to a somewhat good milestone, so here it is, the first release after so much time (and I hope not the last!). So what's new?
Bug fixes
- in the latest release, if you had Text Properties open, it would open too at first boot when you have the Start Page selected. Now it works properly.
- (I'll reintroduce thread running in a later version, even if it's in the changelog of this version)
- when moving panels outside of the window, or to a position where you didn't have the whole panel visible, it would just be stuck there. Now it docks back to the inside of the window, so it's always visible.
- now when changing back to the Start Page, all the panels that shouldn't be there for the Start Page (find, go to, AutoCompile) are hidden on the Start Page tab, and then re-enabled on other tabs.
- the Search Engine bar in Settings is now wider
- now when opening the Theming page, it correctly loads the image of the current theme you've selected, rather than changing only when clicking on it
- now when enabling or disabling custom header/footer in Settings, the C/C++ syntax option gets enabled and disabled correctly.
Performance
I always wanted to improve performance of Logix, but I wasn't sure on how to do it, and neither do I now too much, but I've made a few key changes that improved performance a lot.
Before, every time you'd open Gramlex, it would create a new Gramlex form, every single time. Same thing for Settings: it would create a new Settings form, and then a new MDIParent1 form inside Settings, each and every time. Now, it just creates these forms the first time you run it, and all the other times it just references to what it already exists. This makes the app much faster than before, and consumes about less than 40/50MB of RAM, along with less CPU usage too. Whereas before it would have a maximum of 100MB and even more, now it maxes out at 70MB of RAM, and with more performance updates in the future, I hope to get this number even lower!

Gramlex is also now ran in a separate thread from the main thread, to have slightly better performance and take more advantage of multi-core processors. In the next versions, I'll try to move more other stuff to different threads.
New features
What update would it be without new features?
-
AutoCompile toolbar: you have now a floating toolbar which can let you quickly access all the AutoCompile features available for now (header, footer, comments).

-
Comments: comments are now finally complete! You can now change every single symbol for each different syntax. Comment syntax now changes based on the syntax you've chosen, and also you can choose to make the comment line end with a certain symbol, or none (you can write "nothing", "Nothing", or even nothing in the textbox, and it'll get it.

-
Help: under Miscellaneous, you can change at which URL the Help option points towards, so you can move the chm file whenever you want, or even point to any other file.
Have fun!
[Testfire] 28st November version
Again, I wasn't dead, it's just that I preferred doing a bit of updates before pushing a new version (totally wasn't that I forgot to upload them).
Anyway,
- finished the entire code refactoring on MDIParent1.cs, now it's much more streamlined and less things get executed twice or more!
- some important touches: the titlebar text now changes based on the tab you've selected. Based on what you've written or selected, the elements of the toolbars get enabled or disabled at will.
- now you can color also the icons with the Fluent theme rather than having them only monochromatic. In a future update, the colors will be customizable by the user.
- new Emacs theme/Incognito mode! Hide Logix under an Emacs skin to make it look as much as it can to Emacs, so hiding it from the crazy people that think that Emacs is the best editor ever and that we should only ever use that one. Given that it's more a "joke" theme, lots of features aren't available in this mode, and in order to access them you have to switch back to one of the normal themes.

Another big change: the introduction of C/C++ syntax! Now you can directly edit and save also your C and C++ scripts directly inside Logix. Together with the usual code highlighting (which now includes also operators and numbers), we've introduced the brand new Object Browser, which quickly lets you see classes, methods and properties defined in your file at a glance. You can click on them in the object browser to browse to them. In addition to that, C/C++ syntax supports code folding too, making it also basically just like a basic, but functional editor. In a later version, I'll introduce a 2nd plugin to Logix, which will aid in automatically compiling C files directly from Logix. Linked to this, I've planned for a future release too a third plugin, Compose, which, once ready, it'll quickly compile for you templates.

Gramlex:
- now you don't have anymore to modify the JFlex bat file to order it but simply point Gramlex to your jar file, and then it'll execute.
- new Help: when opening Gramlex, the Help button now works and shows a short but effective guide on how to do the main actions on Gramlex, such as how to set it up the first time, or how to load files.
[Testfire] 21st November version
This release is the start of a big work of code refactoring: this means I'll go throughout the whole code, rewriting methods that seem too complicated for nothing, removing functions that were either duplicated or unused, writing better code, etc... This means that some components might not work as expected, compared to the previous version (should be build 248). I've already gone upon the main methods, such as MDIParent1_Resize, OpenFile, CreateTab, check(), etc.. and they've been greatly refactored to be far lighter, faster and more efficient. Lots of very little bugs have been fixed too.

With that said, this version, along with the November 19th one, introduces many new things:
-
new Metro, OS X Panther and Luna style, respectively for 8.x and XP, all of them looking stunning. You can disable the white stripes background on the Panther style



-
speaking of icon packs, now you don't need anymore to restart Logix to apply these changes
-
now the current line is highlighted - will add a setting for it
-
now in pages of Settings that are empty, there's a little warning sign - thanks @jevil for the icon from Windows Chicago
-
now you can set a predermined syntax every time you open a new tab, or just maintain the old one
-
added new custom headers: you can decide to have one header and footer for every syntax, or customise header and footer per each syntax
-
fixed an issue in the Fluent toolbar where you could make buttons as big as you wanted
-
new popups for better visibility for adding files to Gramlex, saving and going to the end of the document while searching

Gramlex updates:
- now after generating, you'll be greeted automatically with a command prompt directly in your output directory. All you have to do then is to press CTRL+V to paste in "
java Parser", and start your generated program. - if you do need another command prompt window, you can open it directly from Gramlex
- now, rather than opening Gramlex and manually selecting files from your directory, if you have them open in Logix, you can add them directly to Gramlex - based on the file extension, your current opened file will be put in either as a lexer or a parser. A popup window will notify you of this while not distracting from your work.

[Testfire] 18th November version
Hey! I wasn't dead, I was simply doing exams :)
Anyway, here is quite a big release, since the last one was from 12nd November.
- Added ruler
- Added hyperlink support
- You can decide to start Gramlex directly at startup instead of Logix
- You can specify what's the name of your byaccj executable
- There are now tooltips for system predicates in Prolog
- you can set up word wrap to be automatically enabled when creating a new tab
- when closing all tabs you can decide to close Logix
- you can print documents now
- Big change: the whole saving system has been changed. It now renames stuff correctly, and save questions now work correctly. I do use instead than a global isTextModified boolean, I use a built-in isChanged bool inside CurrentTB - much better, and works with tabs too. So now, when you do close a tab or the app, it asks you correctly which files you want to save (aka the ones you didn't save)
- line number, toolbar and menu bar now have Mica effect on Windows 11 (you need to have Mica For Everyone installed in order to enable it)
- navigating backwards and forward now works also between tabs
- you can automatically open the document map when creating a new tab, and automatically disables when you are in the Start Page
There's a small bug in opening a new file, when it doesn't enable Mica on the line number thing and doesn't enable hyperlinks when opening a file, It has already been fixed afterwards.
[Testfire] 12th November version
This release has quite some interesting new features:
- Thanks to @Splitwirez for letting me know about .NET Maui and https://github.com/dotnet/maui/tree/main for
RtlGetVersion + wrapper class, Logix has now a brand new app-wide method to get your Windows version, using Windows API calls rather than the Windows registry. This method is now much easier to manage, and much more reliable. It has been already implemented in any method which checked for your Windows NT version. - Fixed the Apply button in Animations settings
- made so the font dialog only loads MonoSpace fonts, since the control didn't support the others anyway.
And the big update of this version is Gramlex.


Gramlex is a GUI front-end for JFlex and ByaccJ. The current implementation of those two inside university courses such as the one I'm currently in is... kinda hacky and uselessly tedious. You have to:
- open a cmd at jflex/bin (fun thing: the bat file jflex provides doesn't even work out of the box 💀 ) or open with Java jflex.jar in jflex/bin, load your jflex file from the file picker (which loads the XP one and can't even properly filter files), and then click Generate
- open a cmd at your byacc directory (otherwise it won't work, must be at the same directory, thansk byacc!), run byacc to get the Parser.java and ParserVal.java
- move the Parser and ParserVal files back to your project folder
- open another cmd at your project folder and then run javac and then java.
Gramlex streamlines all of this, letting you do all of this with the click of a single button. At first startup choose your jflex and byaccj paths (byacc executable must have the name "byaccj.exe", I'll fix it the next release). Every time you want to generate smth, you go to Generate, you select your files (with a normal file picker which is automatically chosen on any Windows version without any strange trickery or something else), you select your output directory and click "Generate". Once finished, it tells you that it finished, and under the Output tab you can see anything that it did. It automatically moves your Parser files to your project directory, deletes old ones for you, and automatically compiles them with Java too! All you'll need to do now is to run a cmd with java in your project folder, and done!
More informations about Gramlex in the wiki.
[Testfire] 11th November version
These releases for this week will be very small ones, as I have uni exams :/ Aanyway, started working on a basic implementation of JFlex and ByaccJ, and... new icon!

This new icon is more akin to the Fluent Design principles, and features a few improvements in few key areas I wanted to improve:
-
Recognisability: among all the other icons, a colorful and detailed icon is more recognisable. The old one, being purple/green and white, kinda was a bit uninspiring and didn't look too good next to any other Windows icon. It felt... boring, not alive, and not interesting. This icon design is inspired by the amazing work done by Yair and the team on the Files app on Windows (seriously, check it out since it's great: https://files.community/). It aims at having a more recognisable overall shape and design, even when it's very small among many other files in Explorer.

-
Consistency: for the same reason as before, if you look at the previous icon and this one, this one feels a lot more home in Windows
-
Details: this icon has many more subtle details than the previous icon: subtle use of gradients, noise, and shadows. The shadows aren't black, but are akin to the color that stays beyond it (because no.1 rule of shadow is never use black, always use a darker tone of the color on which it goes on). The noise follows the back color, and is carefully implemented to still be noticeable on bigger variants but not making it seem intrusive. The white write line was carefully edited to make it seem like "it goes out directly from the tip of the pencil", and an inner shadow, especially on the first layer, gives the icon a much more detailed and layered look.
Once again, thanks to Winex, Ojas and lttr for feedback on the icon 😄
[Testfire] 8th November version
Many bug fixes also.
- fixed extensions for Jflex
- Now when creating a new tab or changing it, it automatically focuses to the textbox
- When changing/creating a new tab/opening a file, it enables the controls in the toolbar correctly rather than just disabling it entirely.
- Fixed a bit the yacc syntax
- Moved the tabs to a SplitContainerPanel so the document map is now resizable yet again
- Show/hide rows now implemented
- When moving a panel, it now shows you the moving cursor. And when you are on the Close button of said panels, it shows you a hand cursor
- Text properties lets you change in a very detailed way each and every single setting of each tab you've opened. Note that these settings change from tab to tab (later in the future i'll set an option to set some default ones too). You can set it to startup by default, if you have the start page disabled



- When deselecting everything in Startup it would show just an empty window; now it shows the "No file opened" dialog,
- Fixed an annoying resize bug at startup for the Changelog widget - now it works
[Testfire] 7rd November version
Quite a nifty release.
-
More startup options: you can set up window state, location and size, or make Logix remember how it was opened the last time you've used it, for a more seamless flow

-
changed the look of icon packs in Settings and introduced the new Mac OS 9/Gnome theme. Also, now the icon packs change all the icons in context menus too.


Also new Fluent icons from Rectify11, thanks @ojask and @WinExperiments! -
fixed "Enable Start Page": now it removes the option from the "Add tab" menu
-
introduced Web search: right click on a selected text and quickly search it on the web. You can set up the search engine automatically based on the chosen syntax, or select one for yourself

-
You can now also select automatically the syntax based on the type of file you've opened, or set one by default
-
You can now set the window on top of everything, and create new instances thanks to the fact that...
-
Logix now is a multithread app! This means you can run multiple instances of it under the same "parent" in the task manager, and greatly speeds up the startup times down to max. 3 seconds

-
switched render mode of menus to System rather than ManagedRenderMode for a more consistent look
[Testfire] 4rd November version
This new version includes a few new features, some are weirder, some are great ones.
-
You can now rename tab names, and streamlined the process to create new tabs: now you don't have anymore a New File and New Tab button but only New File
-
Added column limits: you can decide how many columns you want to set the limit at. You have two modes: Standard Mode and Crazy 80. Standard shows just an alert in the status bar, while in Crazy mode it shows a popup in the middle of the screen and some more... questionable text. YOu can fully personalise what text to show in these labels
-
Extension Customization: now, based on the syntax you've chosen, Logix will automatically choose the right file extension (e.g. if you select Prolog, it'll choose .p files, and if you choose jflex syntax, it'll choose .j files, etc). This behaviour applies both in Open and Save file, but it can be disabled in settings too. You can set also a default extension type, if you want to choose that no matter what syntax you've opened
-
When you change syntax, it changes the header text
-
When clicking the text in the Quick Action widget, it now performs the action
-
Introduced the new Help: it now contains just a few topics about Prolog, but it'll be expanded each version to include all the help needed for every syntax, and Logix itself. It's made with the HTML Help Workshop and as a chm file; therefore, it loads with hh.exe, and is perfectly compatible with any version of WIndows on which Logix can run.

Just noticed now, I've wrote that I've built it on the 3rd but not actually - sorry.
[Testfire] 31st October version
Happy Halloween! This release fixes the syntax.



