1. RedyCode - new features
- Posted by ryanj Apr 28, 2016
- 3204 views
- Last edited May 17, 2016
Good news! The next release is almost redy! There are major improvements to RedyCode and RedyLib. I have a few more details to finish and API documentation to write, then i'll release the source in a few weeks. Perhaps it's a little early to make this announcement, but i'm so excited, i just can help it! Haha
This new set of features takes Redy in the direction of making GUI programming easier by providing all the common features that you probably need, so you don't have to waste time writing a bunch of code that has nothing to do with the purpose of writing your application in the first place!
- Redylib reorganization - i made a few changes to the redylib folder and file structure so that it will hopefully be easier to "include" successfully, as well as be able to specify which version of redylib your program is using.
- RedyCode Project design improvements make it easier to configure paths to Euphoria, includes, project folder, etc.
- Actions Library - this as a very important new feature. It provides a way to manage commands that a user can initiate (by menus, tool buttons, key presses, etc.) or macro/script engines can call. Actions are defined with icons, labels, descriptions, and other properties. Actions can be undone (if you write the code necessary to undo data changes ) When you build menus and toolbars, each item is linked to an action, so no gui event handlers are required for them. Even enabling/disabled menu or tools items is easy, or changing lists of values. This greatly reduces the amount of code you need to write for your main window. I will write documentation and examples of how to use this important new feature.
- Improved Menus can now have icons next to each item. Menus are easier to create with the new actions system.
- Customizable Toolbars! There is now a built-in toolbar system and a Customize Toolbars dialog that is very easy to include in your application. To add toolbars to your app, you only need to define a default set of toolbars, which the user can modify or reset back to as desired. The dialog shows a list of defined actions which you can add to toolbars.
- Default Icon Set included! I embedded the "Tango" icons (commonly used in Linux) in a .e file as sequences. It is very easy to assign icons to actions.
- Image transparency and effects have been added to the graphics library. Images can now be drawn with a specified transparent color. There is also a function that can apply effects to any image. For example, menu or tool button icons can be drawn with a greyed-out effect to indicate disabled actions.
- Windows automatically remember their positions! You don't even need to write any extra code, they just remember. Of course, you can do some things to modify this behavior (disable remembering, remember size only, set default position and size, etc.)
- Application Config System makes it very easy to store user preferences, settings, etc. The toolbar settings and window positions are automatically stored in the application's default config file, which is automatically generated in the same folder as the app's exw/exe file.
- Tabs in main window are very easy to manage if you need multiple views. Tabs can have "read-only" and "modified" flags on them.
- Built-in "confirm_exit" action automatically asks the user to confirm exiting the application if any tabs are marked "modified". This behavior can be customized.
- A Standard Application Template is used for creating new projects. It makes it very easy to get started. It includes some common dialogs that you can customize: Help, Preferences, Startup Tips, About. There are more dialogs included in redylib that you can use, too.
- Redy finally works on Wine! Popup menu windows were broken for a long time. I finally fixed some window event handler bugs so they work now. It isn't true linux support, but at least there is a way to run Redy on linux through Wine.
Forked into: Application config file location
2. Re: RedyCode - new features
- Posted by Icy_Viking May 01, 2016
- 3128 views
Looks amazing. Will the next version of Redy have notebook/tab or multi-layed notebook/tab support? If not, I'm sure it wouldn't be too hard to implement given that redy comes with the source code.
3. Re: RedyCode - new features
- Posted by ryanj May 01, 2016
- 3134 views
Looks amazing. Will the next version of Redy have notebook/tab or multi-layed notebook/tab support? If not, I'm sure it wouldn't be too hard to implement given that redy comes with the source code.
Thanks! I will try to add that to wc_tabs.e for the next release. It shouldn't be too difficult.
4. Re: RedyCode - new features
- Posted by elias_maluko May 02, 2016
- 3098 views
Nice work so far!
Did Redy renders direct to GDI?
Is it possible to make it render to bitmaps in memory?
If yes, it could be easy to integrate with OpenGL...
5. Re: RedyCode - new features
- Posted by Icy_Viking May 02, 2016
- 3126 views
Looks amazing. Will the next version of Redy have notebook/tab or multi-layed notebook/tab support? If not, I'm sure it wouldn't be too hard to implement given that redy comes with the source code.
Thanks! I will try to add that to wc_tabs.e for the next release. It shouldn't be too difficult.
Sounds good.
6. Re: RedyCode - new features
- Posted by ryanj May 02, 2016
- 3052 views
Nice work so far!
Did Redy renders direct to GDI?
Is it possible to make it render to bitmaps in memory?
If yes, it could be easy to integrate with OpenGL...
Redy creates a buffer bitmap for each window, draws on it, then copies it to the window as needed. Additional bitmaps can be created in memory or loaded from files, and drawn to or copied to other bitmaps.
Currently, Redy uses some basic win32api graphics functions, which are hidden by a graphics abstraction layer, which (for lack of a better term) i call a "drawing language". It should be possible to add more GDI functions or switch to a different platform like xlib or OpenGL. I plan to work on this for Redy 2.0.
Here's a stripped-down example of drawing a button. As you can see, you don't have to keep track of pen styles, font styles, device contexts, etc. Just build a sequence of drawing commands and pass it to the draw procedure. There are some other functions that need to be called in certain situations, such as creating bitmaps, selecting a font before getting "text extent", getting the window handle so you can draw to it, etc. I will write documentation soon, explaining how to use it.
sequence cmds = { --fill: {DR_PenColor, fillcolor}, {DR_Rectangle, True} & wrect, --border: {DR_PenColor, hlcolor}, {DR_Line, wrect[1] + 1, wrect[2], wrect[3] - 1, wrect[2]}, {DR_Line, wrect[1], wrect[2] + 1, wrect[1], wrect[4] - 1}, {DR_PenColor, shcolor}, {DR_Line, wrect[3] - 1, wrect[2] + 1, wrect[3] - 1, wrect[4]}, {DR_Line, wrect[1] + 1, wrect[4], wrect[3] - 1, wrect[4]}, --label: {DR_Font, "Arial", 9, Normal}, {DR_TextColor, lblcolor}, {DR_PenPos} & txpos, {DR_Puts, wcprops[wcpLabel][idx]} } draw(winhandle, cmds)
7. Re: RedyCode - new features
- Posted by ryanj May 16, 2016
- 2974 views
The next version of RedyCode will be released very soon. This is going to be a fully functional IDE! I have accomplished all my major goals for this next release (as far as features). I'm just cleaning up the source and fixing a few remaining minor bugs, then i will spend about a week or so writing RedyCode Help and RedyLib API documentation.
Important new features to look forward to:
- Create projects based on a default template, with customizeable header text (copyright, liscense, etc.) prepended to each source file in your new project.
- Built-in creole syntax documentation editor (useful for writing your own help system for your own apps)
- Built-in BMP image viewer
- Simplified project tree lets you browse source, docs, images, and external includes, which open in the tabbed editor.
- Built-in hypertext help system
- Portable setup includes Euphoria 4.1 beta binaries, stdlib, and redylib included, and you should be able to run a project with no configuration.
8. Re: RedyCode - new features
- Posted by Icy_Viking May 17, 2016
- 2952 views
The next version of RedyCode will be released very soon. This is going to be a fully functional IDE! I have accomplished all my major goals for this next release (as far as features). I'm just cleaning up the source and fixing a few remaining minor bugs, then i will spend about a week or so writing RedyCode Help and RedyLib API documentation.
Important new features to look forward to:
- Create projects based on a default template, with customizeable header text (copyright, liscense, etc.) prepended to each source file in your new project.
- Built-in creole syntax documentation editor (useful for writing your own help system for your own apps)
- Built-in BMP image viewer
- Simplified project tree lets you browse source, docs, images, and external includes, which open in the tabbed editor.
- Built-in hypertext help system
- Portable setup includes Euphoria 4.1 beta binaries, stdlib, and redylib included, and you should be able to run a project with no configuration.
Sounds great. Regarding the graphics abstraction layer thing, when Redy 2.0 may have OpenGL for its rendering, would it be possible to add in vulkan? Vulkan is kinda like the successor to OpenGL, of course OpenGL is fine too, Vulkan is kinda hard to learn.
9. Re: RedyCode - new features
- Posted by ChrisB (moderator) May 17, 2016
- 2936 views
Hi Ryan
Does look really good, but if it runs on eu4.1, then some dlls will be broken, like sqlite3 - someone please please correct me if I'm wrong, but until this eu4.1 incompatability is addressed, this will have limited use for me.
Cheers (carry on anyway)
Chris
10. Re: RedyCode - new features
- Posted by jimcbrown (admin) May 17, 2016
- 2905 views
Hi Ryan
Does look really good, but if it runs on eu4.1, then some dlls will be broken, like sqlite3 - someone please please correct me if I'm wrong, but until this eu4.1 incompatability is addressed, this will have limited use for me.
Cheers (carry on anyway)
Chris
I think the only difference is the need to add '+' to function names in define_c_func/proc on w32 (see http://openeuphoria.org/forum/m/128484.wc )
If it's pure C, then there are no other incompatibilites that we know of.
If it's a translated from Eu dll, then euphoria.h changes from 4.0 to 4.1 probably have broke things. An EuWinGui approach would be necessary to work around this (unless a 4.1 translated dll can be made.)
11. Re: RedyCode - new features
- Posted by ryanj May 17, 2016
- 2893 views
Hi Ryan
Does look really good, but if it runs on eu4.1, then some dlls will be broken, like sqlite3 - someone please please correct me if I'm wrong, but until this eu4.1 incompatability is addressed, this will have limited use for me.
Cheers (carry on anyway)
Chris
I think the only difference is the need to add '+' to function names in define_c_func/proc on w32 (see http://openeuphoria.org/forum/m/128484.wc )
If it's pure C, then there are no other incompatibilites that we know of.
If it's a translated from Eu dll, then euphoria.h changes from 4.0 to 4.1 probably have broke things. An EuWinGui approach would be necessary to work around this (unless a 4.1 translated dll can be made.)
I had to make lots of changes last year to RedyLib before it would run on 4.1. It only has wrappers for win32api, so i haven't had any problems. I have been using:
Euphoria version 4.1.0 development (6300:57179171dbed, 2015-02-02 14:18:53) for Windows 32-bit
It may still run on 4.0, but i haven't tested it since then.
12. Re: RedyCode - new features
- Posted by ryanj May 18, 2016
- 2870 views
I have one more feature to finish today, then i'll start writing new documentation for the next release.
I don't know what version to call this. Even though there are still lots of features i want to add, i will probably call this an official release, version 0.9.0, or 1.0.0, then release bugfixes as needed but features will be frozen so people can actually start using it without worrying about the API breaking. Whatever it will be, here are some rules i will follow for version numbers:
- RedyCode and RedyLib version numbers will stay in sync.
- Official releases will have version numbers x.y.z, where a x.y indicates major/minor feature or API changes and .z indicates bugfixes or changes that don't affect compatibility with other x.y versions.
- Development releases that may be updated frequently and are not recommended for anything other than testing will have version numbers x.y.dev, where x.y is the target future official version, and dev indicates that feature or API changes can change without notice.
Here's the latest screenshot:
13. Re: RedyCode - new features
- Posted by Icy_Viking May 18, 2016
- 2895 views
I have one more feature to finish today, then i'll start writing new documentation for the next release.
I don't know what version to call this. Even though there are still lots of features i want to add, i will probably call this an official release, version 0.9.0, or 1.0.0, then release bugfixes as needed but features will be frozen so people can actually start using it without worrying about the API breaking. Whatever it will be, here are some rules i will follow for version numbers:
- RedyCode and RedyLib version numbers will stay in sync.
- Official releases will have version numbers x.y.z, where a x.y indicates major/minor feature or API changes and .z indicates bugfixes or changes that don't affect compatibility with other x.y versions.
- Development releases that may be updated frequently and are not recommended for anything other than testing will have version numbers x.y.dev, where x.y is the target future official version, and dev indicates that feature or API changes can change without notice.
Here's the latest screenshot:
Looks amazing!
14. Re: RedyCode - new features
- Posted by ryanj May 20, 2016
- 2777 views
That moment when you realize you can recursively run an IDE to open the source of itself to run itself to open the source of itself to run itself...
15. Re: RedyCode - new features
- Posted by ne1uno May 21, 2016
- 2830 views
That moment when you realize you can recursively run an IDE to open the source of itself to run itself to open the source of itself to run itself...
http://www.inc.com/erik-sherman/why-you-should-eat-the-dog-food-not-drink-the-kool-aid.html
16. Re: RedyCode - new features
- Posted by ryanj May 21, 2016
- 2830 views
That moment when you realize you can recursively run an IDE to open the source of itself to run itself to open the source of itself to run itself...
http://www.inc.com/erik-sherman/why-you-should-eat-the-dog-food-not-drink-the-kool-aid.html
Good article!
I have unofficially released version 0.9.0 at https://github.com/redy-project/RedyCode. It is the "RedyCode_0_9_0_RC" branch. I'll add documentation in the next few days, and make whatever adjustments are necessary before merging it to the main branch and calling it an official release.
I would appreciate it if anyone wants to test it and give me some feedback (including the specs of the computer and OS you ran it on). It should work on XP and above as far as i know, and even wine32 on linux.
RedyCode is a portable, self-contained application. It should auto-detect it's own subfolders no matter where you unzip it and work without configuration. You should be able to open one of the included projects or create a new project based on the included default template and run projects with the included euiw.exe.
It comes with a stripped-down version of euphoria, so you don't need euphoria installed (and it should not use your installation of euphoria anyway). Theoretically, you should be able to replace the included version with a full version of euphoria 4.1 32-bit in the same folder, or you can go to Tools -> Preferences and change the euphoria paths, as long as you have redylib_0_9 in the specified include folder. Earlier versions of euphoria will probably not work, because i haven't had time to test compatibility yet.
Because i haven't finished documentation yet, it may be difficult to understand how to use RedyLib. For now, you can open/create a project, and easily browse all the include files, so you can at least see what the routines and paramaters are in each .e file.
After some testing and doc writing, this will become official by June 1! Enjoy
17. Re: RedyCode - new features
- Posted by ne1uno May 23, 2016
- 2722 views
I have unofficially released version 0.9.0 at https://github.com/redy-project/RedyCode. It is the "RedyCode_0_9_0_RC" branch. I'll add documentation in the next few days, and make whatever adjustments are necessary before merging it to the main branch and calling it an official release.
thanks for the advanced looks: the icon file (as you know!) is too large, it triples the time to translate a program and worse for me on a 2gig system, the compiler crashes out of memory at 1.9gig. fixed: I split tango-icon-theme into two files, a and b. one load_image with the first half the other with the 2nd half. added another include in gui\dialogs\mainwin.e changed the namespaces to icon_a & icon_b and added another load_image statement.
now it has a more reasonable translate/build time and the compiler has no memory problem.
for some reason freenode is asking for SASL authentication so I couldn't get on IRC
18. Re: RedyCode - new features
- Posted by ryanj May 23, 2016
- 2684 views
I have unofficially released version 0.9.0 at https://github.com/redy-project/RedyCode. It is the "RedyCode_0_9_0_RC" branch. I'll add documentation in the next few days, and make whatever adjustments are necessary before merging it to the main branch and calling it an official release.
thanks for the advanced looks: the icon file (as you know!) is too large, it triples the time to translate a program and worse for me on a 2gig system, the compiler crashes out of memory at 1.9gig. fixed: I split tango-icon-theme into two files, a and b. one load_image with the first half the other with the 2nd half. added another include in gui\dialogs\mainwin.e changed the namespaces to icon_a & icon_b and added another load_image statement.
now it has a more reasonable translate/build time and the compiler has no memory problem.
for some reason freenode is asking for SASL authentication so I couldn't get on IRC
Wow, i didn't realize the compiler would choke on that. I have been thinking about some sort of preprocessor that can load image files when the program runs, but if you bind or translate it, it detects which images you are using and builds an images.e before binding/translating.
19. Re: RedyCode - new features
- Posted by ghaberek (admin) May 23, 2016
- 2678 views
now it has a more reasonable translate/build time and the compiler has no memory problem.
Wow, i didn't realize the compiler would choke on that. I have been thinking about some sort of preprocessor that can load image files when the program runs, but if you bind or translate it, it detects which images you are using and builds an images.e before binding/translating.
Try adding the -maxsize option in the translator call. Start with a large value, like 5000 and go up or down from there as needed.
[-maxsize size] Set the number of C statements per generated file before splitting.
-Greg
20. Re: RedyCode - new features
- Posted by ryanj May 23, 2016
- 2734 views
By the way, if you have any issues with fonts in the text editor, you can manually edit the font settings in include\redylib_0_9\gui\objects\textdoc.e line 92:
thMonoFonts = {"Lucida Console", "Courier New", "Consolas"}, --, "DejaVu Sans Mono", "Liberation Mono"}, thNormalFonts = {"Times New Roman", "Tahoma", "Sans Serif"}, --todo: enumerate list of monowidth fonts availible and pick one --Need to add some wrappers to oswin/win32: EnumFontFamiliesEx function, LOGFONT structure, lfPitchAndFamily thMonoFontSize = 10,
EDIT: Forget that, i'm going to improve font handling right now. It turns out, i can't find a single monowidth font that works on both windows XP and wine! I don't want to require anyone to install additional fonts just to use Redy applications! This looks promising: http://www.rapideuphoria.com/fontenum.zip
21. Re: RedyCode - new features
- Posted by ne1uno May 23, 2016
- 2652 views
now it has a more reasonable translate/build time and the compiler has no memory problem.
Wow, i didn't realize the compiler would choke on that. I have been thinking about some sort of preprocessor that can load image files when the program runs, but if you bind or translate it, it detects which images you are using and builds an images.e before binding/translating.
Try adding the -maxsize option in the translator call. Start with a large value, like 5000 and go up or down from there as needed.
[-maxsize size] Set the number of C statements per generated file before splitting.
-Greg
thanks for the idea, it didn't work but, I didn't even think of looking for other options.
not sure if -maxsize is broken or intended to solve a different probllem. -maxsize 1500 didn't reduce the generatated c file at all and took about as long to translate. the problem with the tango-icon file is probably more related to the amount of big numbers that have to be hardcoded to initialize sequences rather than a high statement count? not sure if changing decimal to hex in the euphoria file would have any effect on translation speed. the full size generated tango-icon .c file is 112k lines and amost 4meg. splitting the euphoria tango-icon file generated 2 .c files half as large and cut translation time in half as well.
22. Re: RedyCode - new features
- Posted by ryanj May 23, 2016
- 2655 views
I just committed an update. The editor should now automatically detect which font to use. It checks each font in the list of preferred monowidth fonts (textdoc.e line 92) and uses the first one that matches the enumerated fonts. I just tested it on Windows 7 and Wine.
It trys these fonts: "Consolas", "Courier New", "Lucida Console", "Liberation Mono", "DejaVu Sans Mono"
23. Re: RedyCode - new features
- Posted by ryanj May 24, 2016
- 2651 views
Here's an example of editing a hypertext document in RedyCode. I am actually writing the creole Help documents for RedyCode in RedyCode.
24. Re: RedyCode - new features
- Posted by Icy_Viking May 24, 2016
- 2635 views
Here's an example of editing a hypertext document in RedyCode. I am actually writing the creole Help documents for RedyCode in RedyCode.
Looks amazing. Keep it up!