- KryptonIDE - A better program editor for the TI 84+ CE
- 30 Oct 2017 11:46:05 pm
- Last edited by KryptonicDragon on 31 Oct 2017 10:00:23 pm; edited 4 times in total
Hello! For the last two and a half weeks I have been working on a project a few of you may have heard me talking about on IRC, called KryptonIDE.
I'll be referring to it as KryEdit because that's its TI-OS name, and the name I originally came up with.
KryEdit (named such because my favorite element is Krypton) aims to be a program editor that solves most (if not all) of our problems with TI's program editor. I am aiming to have it be very user customizable, meaning that you can change most of how the program looks and works. This includes colors, fonts, font sizes, etc.
I decided to make this because, after many hours of experience with TI's own program editor, I've gathered a long mental list of things that I look at and say "I can do better." I started with a quick proof of concept program in ICE, finding programs, sorting them into an alphabetical list, and displaying a program's contents to the screen. I found that it was ridiculously easy to make something that worked faster than TI's own program editor, and this gave me a lot of promise and led me to begin this project in C.
To make this clear, I'll say it now: This program editor is intended for editing TI-BASIC and ICE programs, just like TI's editor. The goal is to create something faster, more user-changeable, and more useful.
Here is a list of planned features:
-1) Syntax highlighting (with custom colors)
-Makes it easier to tell what code is what.
-2) Indentation
-You'll be able to better understand what code is inside which statement.
-3) Custom fonts
-Custom fonts of sizes up to 8x8 pixels per character will be supported, and menus will scale accordingly for smaller fonts.
-Fonts will be stored into an archived or un-archived appvar and will be loaded on program launch, so that they don't eat your precious RAM space when not in use.
-Font appvars can be uncompressed (2048 bytes) or compressed (~1200 - 1850 bytes), KryEdit will function equally with both.
-I will be providing a few fonts that you can use as a template to create your own font.
-4) Lowercase letter support
-Hit [Alpha] once, you get uppercase letters, hit it again and you get lowercase letters.
-You will be able to change this in the settings menu, with the choice of three options: "Uppercase only", "Lowercase only", or "Both".
-5) Real-time clock
-Clock will be shown in most menus, including the program editor.
-Support for 24h or 12h format.
-6) Clipboard history and support for huge cut/copy paste operations
-As long as you have the RAM space, you can cut/copy as large of a chunk of program as you want to, and paste it elsewhere.
-Clipboard history will be dynamically allocated, meaning that the amount of clipboards you have will be dependent on how large each is.
-7) [Clear] Undo
-If you accidentally hit [Clear] and erase a section of your code, worry not, you can undo!
-As of OS 5.3, TI's editor already has this, but I will have a setting to completely turn off the [Clear] button in the editor.
-8 ) Faster program copying
-Ever notice how it takes forever to copy large programs? This is likely because TI's method of copying one program to another involves redrawing the screen for each token that is copied, which effectively slows the copying process. KryEdit will have faster routines, so worry no more about having to wait 2 minutes for all those DefineSprite() commands to copy from your ICE program.
-9) Line numbering
-There will be the option to enable visible line enumeration in the editor.
-10) Jumping
-You'll be able to jump to any Lbls, beginning, end, or to a specific line in your program.
-It will be near-instant, instead of TI's silly "wait through 20 seconds of scrolling" method.
-11) Custom colors
-Ever wanted a program editor with a night theme? Well now you can, KryEdit lets you pick from any of the 256 XLIBC colors for any part of the editor, so you can get that sweet black background and white text combo you've always wanted.
-12) Resume
-You'll have the option to enable a feature that automatically opens the last program you were editing when you launch KryEdit, allowing you to completely skip the main menu if you just want to continue editing.
-This option will also save the cursor position, so you'll resume exactly where you were.
-13) Rename
-Quickly rename a program without having to copy it's contents into another program.
-Lock and unlock programs.
-14) ICE command names
-Option to show the full names of ICE's sum() and det() commands when editing an ICE source program. This will be an option because some of the names are quite long and some users may not want the full names.
Here is a list of maybe features (features that I am considering adding, but are not guaranteed to make it into the final program.) :
-1) Integration with ICE
-Compile (and run) your ICE program directly from the editor!
-ICE may be able to open KryEdit to goto an error instead of opening TI's editor
-2) [Prgm] key hook
-Instead of having to run KryEdit like a program, I might be able to implement a hook so that you can have the option to make it open when you hit the [Prgm] key in TI-OS.
-3) Pinning programs
-It's possible that I could add the ability to pin programs to the top of the list, one way I thought of doing this would be to save the pinned program names into KryEdit's settings appvar (KEDITSET).
-4) Backups
-Maybe an option to create compressed appvar backups of a program.
-5)Lock/un-lock programs
-Change program types from locked to un-locked and vice versa.
Now that I have the features out of the way, and 940 lines of code already done, here are some teasers, just remember that this project is still quite far from done.
Here you see me messing around with the settings and showing you around the main menu. The ability to archive/unarchive and delete programs is already in place. At the end you see me view a program, with some minor syntax highlighting. You may notice some of the characters in that editor don't look quite right, this is due to differences between fonts, and will be fixed later with my provided default font. You'll see a color selector, check boxes, and a dropdown menu in the settings menu
The one down here quickly shows a custom font. This font is smaller than the default font KryEdit uses, so scaling is quite different. As you can see, there are still some kinks to work out, but I plan on allowing custom font sizes, up to 8x8px, while having text still be beautifully centered and/or positioned correctly in their respective menus.
Thank you for reading, and please, ask questions, and request features.
I'll keep this post up to date with updates, teaser screenshots, and answers to your questions as my time becomes available.
I'll be referring to it as KryEdit because that's its TI-OS name, and the name I originally came up with.
KryEdit (named such because my favorite element is Krypton) aims to be a program editor that solves most (if not all) of our problems with TI's program editor. I am aiming to have it be very user customizable, meaning that you can change most of how the program looks and works. This includes colors, fonts, font sizes, etc.
I decided to make this because, after many hours of experience with TI's own program editor, I've gathered a long mental list of things that I look at and say "I can do better." I started with a quick proof of concept program in ICE, finding programs, sorting them into an alphabetical list, and displaying a program's contents to the screen. I found that it was ridiculously easy to make something that worked faster than TI's own program editor, and this gave me a lot of promise and led me to begin this project in C.
To make this clear, I'll say it now: This program editor is intended for editing TI-BASIC and ICE programs, just like TI's editor. The goal is to create something faster, more user-changeable, and more useful.
Here is a list of planned features:
-1) Syntax highlighting (with custom colors)
-Makes it easier to tell what code is what.
-2) Indentation
-You'll be able to better understand what code is inside which statement.
-3) Custom fonts
-Custom fonts of sizes up to 8x8 pixels per character will be supported, and menus will scale accordingly for smaller fonts.
-Fonts will be stored into an archived or un-archived appvar and will be loaded on program launch, so that they don't eat your precious RAM space when not in use.
-Font appvars can be uncompressed (2048 bytes) or compressed (~1200 - 1850 bytes), KryEdit will function equally with both.
-I will be providing a few fonts that you can use as a template to create your own font.
-4) Lowercase letter support
-Hit [Alpha] once, you get uppercase letters, hit it again and you get lowercase letters.
-You will be able to change this in the settings menu, with the choice of three options: "Uppercase only", "Lowercase only", or "Both".
-5) Real-time clock
-Clock will be shown in most menus, including the program editor.
-Support for 24h or 12h format.
-6) Clipboard history and support for huge cut/copy paste operations
-As long as you have the RAM space, you can cut/copy as large of a chunk of program as you want to, and paste it elsewhere.
-Clipboard history will be dynamically allocated, meaning that the amount of clipboards you have will be dependent on how large each is.
-7) [Clear] Undo
-If you accidentally hit [Clear] and erase a section of your code, worry not, you can undo!
-As of OS 5.3, TI's editor already has this, but I will have a setting to completely turn off the [Clear] button in the editor.
-8 ) Faster program copying
-Ever notice how it takes forever to copy large programs? This is likely because TI's method of copying one program to another involves redrawing the screen for each token that is copied, which effectively slows the copying process. KryEdit will have faster routines, so worry no more about having to wait 2 minutes for all those DefineSprite() commands to copy from your ICE program.
-9) Line numbering
-There will be the option to enable visible line enumeration in the editor.
-10) Jumping
-You'll be able to jump to any Lbls, beginning, end, or to a specific line in your program.
-It will be near-instant, instead of TI's silly "wait through 20 seconds of scrolling" method.
-11) Custom colors
-Ever wanted a program editor with a night theme? Well now you can, KryEdit lets you pick from any of the 256 XLIBC colors for any part of the editor, so you can get that sweet black background and white text combo you've always wanted.
-12) Resume
-You'll have the option to enable a feature that automatically opens the last program you were editing when you launch KryEdit, allowing you to completely skip the main menu if you just want to continue editing.
-This option will also save the cursor position, so you'll resume exactly where you were.
-13) Rename
-Quickly rename a program without having to copy it's contents into another program.
-Lock and unlock programs.
-14) ICE command names
-Option to show the full names of ICE's sum() and det() commands when editing an ICE source program. This will be an option because some of the names are quite long and some users may not want the full names.
Here is a list of maybe features (features that I am considering adding, but are not guaranteed to make it into the final program.) :
-1) Integration with ICE
-Compile (and run) your ICE program directly from the editor!
-ICE may be able to open KryEdit to goto an error instead of opening TI's editor
-2) [Prgm] key hook
-Instead of having to run KryEdit like a program, I might be able to implement a hook so that you can have the option to make it open when you hit the [Prgm] key in TI-OS.
-3) Pinning programs
-It's possible that I could add the ability to pin programs to the top of the list, one way I thought of doing this would be to save the pinned program names into KryEdit's settings appvar (KEDITSET).
-4) Backups
-Maybe an option to create compressed appvar backups of a program.
-5)Lock/un-lock programs
-Change program types from locked to un-locked and vice versa.
Now that I have the features out of the way, and 940 lines of code already done, here are some teasers, just remember that this project is still quite far from done.
Here you see me messing around with the settings and showing you around the main menu. The ability to archive/unarchive and delete programs is already in place. At the end you see me view a program, with some minor syntax highlighting. You may notice some of the characters in that editor don't look quite right, this is due to differences between fonts, and will be fixed later with my provided default font. You'll see a color selector, check boxes, and a dropdown menu in the settings menu
The one down here quickly shows a custom font. This font is smaller than the default font KryEdit uses, so scaling is quite different. As you can see, there are still some kinks to work out, but I plan on allowing custom font sizes, up to 8x8px, while having text still be beautifully centered and/or positioned correctly in their respective menus.
Thank you for reading, and please, ask questions, and request features.
I'll keep this post up to date with updates, teaser screenshots, and answers to your questions as my time becomes available.