1. RedyCode - new features

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 blink ) 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

new topic     » topic index » view message » categorize

2. Re: RedyCode - new features

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.

new topic     » goto parent     » topic index » view message » categorize

3. Re: RedyCode - new features

Icy_Viking said...

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.

new topic     » goto parent     » topic index » view message » categorize

4. Re: RedyCode - new features

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...

new topic     » goto parent     » topic index » view message » categorize

5. Re: RedyCode - new features

ryanj said...
Icy_Viking said...

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.

new topic     » goto parent     » topic index » view message » categorize

6. Re: RedyCode - new features

elias_maluko said...

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) 
new topic     » goto parent     » topic index » view message » categorize

7. Re: RedyCode - new features

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.
new topic     » goto parent     » topic index » view message » categorize

8. Re: RedyCode - new features

ryanj said...

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.

new topic     » goto parent     » topic index » view message » categorize

9. Re: RedyCode - new features

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

new topic     » goto parent     » topic index » view message » categorize

10. Re: RedyCode - new features

ChrisB said...

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.)

new topic     » goto parent     » topic index » view message » categorize

11. Re: RedyCode - new features

jimcbrown said...
ChrisB said...

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.

new topic     » goto parent     » topic index » view message » categorize

12. Re: RedyCode - new features

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: http://redy-project.org/images/screenshots/2016-05-17%2020_09_10-RedyCode.png

new topic     » goto parent     » topic index » view message » categorize

13. Re: RedyCode - new features

ryanj said...

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: http://redy-project.org/images/screenshots/2016-05-17%2020_09_10-RedyCode.png

Looks amazing!

new topic     » goto parent     » topic index » view message » categorize

14. Re: RedyCode - new features

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...

new topic     » goto parent     » topic index » view message » categorize

15. Re: RedyCode - new features

ryanj said...

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

new topic     » goto parent     » topic index » view message » categorize

16. Re: RedyCode - new features

ne1uno said...
ryanj said...

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 smile

new topic     » goto parent     » topic index » view message » categorize

17. Re: RedyCode - new features

ryanj said...

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

new topic     » goto parent     » topic index » view message » categorize

18. Re: RedyCode - new features

ne1uno said...
ryanj said...

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.

new topic     » goto parent     » topic index » view message » categorize

19. Re: RedyCode - new features

ryanj said...
ne1uno said...

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

new topic     » goto parent     » topic index » view message » categorize

20. Re: RedyCode - new features

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

new topic     » goto parent     » topic index » view message » categorize

21. Re: RedyCode - new features

ghaberek said...
ryanj said...
ne1uno said...

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.

new topic     » goto parent     » topic index » view message » categorize

22. Re: RedyCode - new features

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"

new topic     » goto parent     » topic index » view message » categorize

23. Re: RedyCode - new features

Here's an example of editing a hypertext document in RedyCode. I am actually writing the creole Help documents for RedyCode in RedyCode. smile

http://redy-project.org/images/screenshots/2016-05-23%2023_13_59-RedyLib_htd.png

new topic     » goto parent     » topic index » view message » categorize

24. Re: RedyCode - new features

ryanj said...

Here's an example of editing a hypertext document in RedyCode. I am actually writing the creole Help documents for RedyCode in RedyCode. smile

http://redy-project.org/images/screenshots/2016-05-23%2023_13_59-RedyLib_htd.png

Looks amazing. Keep it up!

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu