Page 1 of 2

Modulair applications

PostPosted: Mon Mar 23, 2015 2:12 pm
by ebear
Hello All,

I already had a forum topic before about another issue,http://www.neosoftware.com/community/viewtopic.php?f=1&t=20546 and until now I can not get the idea out of my head.

So I give it another try:

My office application has several, let say "modules" (Stock management, production management etc etc)
I would like to have a system where each module is a separate application (for example with the extension DLL). Each application will be opened in a rectangle of the main application (I use HPW treeMenu controlled from a database)
Benefit from this approach will be the possibility to maintain and add "modules" to the main application, without the need to recompile/replace everything. It keeps the various "modules" smaller and also licensing will be simpler.
I putted a lot of time in this system, but I found never a good solution; Running applications in a rectangle doesn't work always right etc etc.

Is there somewhere out there who had the same idea to discuss about???

Best regards,

Eric

Re: Modular applications

PostPosted: Mon Mar 23, 2015 6:51 pm
by DIGIROSS
I've begun work on a major project I've been dreaming/designing for awhile now. I've had thoughts about the exact same topic.

In past tests I came to the same conclusion about inconsistent results running neobook applications in a rectangle.

I've been at a crossroads myself about how to proceed with my project. I've come up with 3 ways to approach it:

1) Application that is all-encompassing (different sections are different pages, no modules)
PRO'S - All-in-one makes easy to work and move around
CON'S - Large .exe file, big memory overhead, honestly really large neobook applications seem laggy at times, updating the application can mean larger download or full install (unless a patcher program from internet)

2) Main application running modules (seperately developed applications that get launched) when necessary
PRO'S - Smaller .exe file, lower memory footprint, individual modules allow greater flexibility (basically treat the loaded application like a new window with multiple tabs rather than the run in rectangle), updating smaller parts means less to download, main application allows more cohesive program as a "whole"
CON'S - Seperate application to develop, have to pass some information back and forth (which can be minimized if programmed with saving/writing files appropriately)

3) Toolbar application for launching modules
PRO'S - Smallest .exe, lowest memory footprint, individual modules allow greater flexibility, updating smaller parts means less to download
CON'S - Seperate application to develop, no main application to unify the "parts"

I've begun with Option #2 and things are working well at the moment. I'd go into more details about my project but i'm not ready to unveil it yet. Hopes this helps a bit. Discuss.

Re: Modulair applications

PostPosted: Tue Mar 24, 2015 10:07 am
by Neosoft Support
Have you considered using the RunNeoBook action to switch between the different modules?

From the help file:

[Use RunNeoBook to] execute another compiled NeoBook publication. The current publication will be closed and the new one opened in its place. RunNeoBook can be used to link several smaller publications together to gain the same functionality as a single larger publication. Variables can be shared between publications.

When using this option to link multiple publications, the first publication must be compiled as a fully executable exe or runtime package (with NBRun5.exe). Other publications in the group can be compiled as runtime packages or web browser plug-ins to conserve space.

Re: Modulair applications

PostPosted: Tue Mar 24, 2015 11:47 am
by stu
Haya!

I worked on a similar project using a fullscreen work desktop containing nothing but a menu that linked to other 5 applications (Customers, Orders, Stock, Stats, Reports) and a configuration page that stores global variables that all applications share. Each modules containing its own tabs, pages, customwindows, etc. Recently I added the possibility to compare its own checksum with a hash stored online and update itself if they don't match with a simple FTP connection that downloads and overwrites the EXEs. So as DIGICROSS says his option No 2 its the way to go, IMO.

Re: Modulair applications

PostPosted: Tue Mar 24, 2015 4:57 pm
by DIGIROSS
As a follow up to the dev post, I created a test application to us the RunNeobook and it works well. When compiling the bare modules as .pkg the module is a mere 3k, if it's done as an .exe then its 736k so size is a big savings.

However, with the RunNeobook it will always close the previous application which for my project won't work since it's a main application and i need/want to launch the module section (i.e.- Customers) into it's own window with navagation etc. but still see the main application and when done save the data and the main application is still there for the other features

I noticed a "Close Window" checkbox in the RunNeobook, however checked or unchecked it still closed the window to launch the other one. Bug maybe? Interesting command anyways.

Thanks for starting this topic, as a developer we constantly have to be thinking about the best solutions for the job.

Re: Modulair applications

PostPosted: Tue Mar 24, 2015 5:25 pm
by Neosoft Support
The CloseWindows checkbox closes open windows created with ImageWindow, TextWindow or CustomWindow. When unchecked, these windows will remain open after loading the other publication.

Re: Modulair applications

PostPosted: Tue Mar 24, 2015 5:38 pm
by DIGIROSS
Ahhh gotcha, makes sense.

Re: Modulair applications

PostPosted: Tue Mar 24, 2015 6:23 pm
by ebear
Hello All,

Very interesting suggestions, but not yet where I'm looking for. Of cause I try to archive something that's maybe even not possible right now ;-) In my case archiving a smaller footprint of the modules isn't really necessary.

The main problem I have is that I use a main treemenu, if I use the RunNeoBook option this will not work anymore. See image:

Image

I tried also an Menu (menu bar) application with the modules running as an separate application, this gives in my opinion not a real user friendly environment. Having the menu bar running on the left side of the screen, and the module next to it, is problematic with different screen resolutions. Also users closing the module and the menu bar not visible on the screen brings confusion.

The RunInRectangle was the best solution if worked, even now I did some tests but no luck.

Regards,

Eric

Re: Modulair applications

PostPosted: Wed Mar 25, 2015 5:11 am
by DIGIROSS
Thanks for the image, it helps to better visualize what your intending. I'm no expert but honestly I think Option #1 (All-in-One) in my above post is going to be your best option since the run in rectangle doesn't work that well.

Any updates will just require a larger download but with modern internet speeds it won't be an issue. Back in the day of 2400 baud modems yes, but nowadays most people have atleast DSL connection.

Also, the larger memory footprint is negated by modern computers. Hard to run across a computer that isn't atleast Windows Vista or higher and 2-4 gig RAM or higher.

Re: Modulair applications

PostPosted: Wed Mar 25, 2015 5:45 am
by Gaev
Two questions ...

a) Will there ever be a requirement to have more than one "module" to be running at any one time ?

b) Does selection of a "module" (from the left panel) automatically close the "module" running in the right panel ?

Re: Modulair applications

PostPosted: Wed Mar 25, 2015 9:59 am
by Neosoft Support
Since RunNeoBook allows you to leave custom windows open between modules, put your menu in a fixed-position custom window. The menu window will stay open between modules allowing you to navigate between them. Here is a sample pub:

http://www.neosoftware.com/software/pubs/ModularAppExample.zip

Re: Modular applications

PostPosted: Wed Mar 25, 2015 10:48 am
by ebear
Hello Dave and the rest,

This sample is really interesting approach, I'm going to do some tests with it. Thanks a lot.

Gaev,

Two questions ...

a) Will there ever be a requirement to have more than one "module" to be running at any one time ?
No only one module will run at a time. The user will switch between these.

b) Does selection of a "module" (from the left panel) automatically close the "module" running in the right panel ?
Yes as above, the open module will be closed when another is selected.

The main reason is that a solution will give the possibilities to add "on the run" a new module. As we normally would replace the complete application, with my idea it is enough to copy the new module to the PubFolder and to add the module to the Tree Menu database. After a DBRefesh the module will be available for the user. Also an update on one module will not affect the whole system.
This means that I can work on each module separate. Of cause there are more advantages in this modular system like file size etc, but that's for me only a extra...

All thanks a lot, I will do some tests with the approach Dave created and will report back.

Also if someone interested in the way I use the HPW tree menu please let me know. I'm glad to share.

Rest regards,

Eric

Re: Modulair applications

PostPosted: Wed Mar 25, 2015 2:53 pm
by Gaev
Eric:

One "thinking out of the box" type of design you might consider is ...

1) have each module run as a separate publication e.g a.exe, b.exe, c.exe etc. ... make sure each has ...

- identical width and height
- a (placeholder) rectangle on the left for the menu items

2) When user clicks on one of the menu item for one of the other Modules ...
Code: Select all
SetVar "[NextAction] "name of corresponding App"
Exit "" ""


3) in each of the publications' Shutdown section ...
Code: Select all
Run "[NextAction]" etc. etc.
Delay "x000" ... optional


4) in each of the publications' Startup section, populate the (placeholder) Rectangle ... do something like this ...
Code: Select all
SetVar "[CallFileName]" "![PubDir]PopulateMenuRectangle"
Call "[CallFileName]" "optional parameters"


Just place the function file called PopulateMenuRectangle in the same folder as the module Apps.



You can tweak it a bit (to give the user the impression that it is one and the same Application) by exploiting NeoBook Global Variables ...

[WindowState]
[WindowsOrder]
[WindowLeft]
[WindowTop]

... and perhaps even replace the Delay command (in the exiting App) with something in the starting App that explicitly closes it.

Re: Modulair applications

PostPosted: Thu Mar 26, 2015 6:24 am
by DIGIROSS
Neosoft Support wrote:Since RunNeoBook allows you to leave custom windows open between modules, put your menu in a fixed-position custom window. The menu window will stay open between modules allowing you to navigate between them. Here is a sample pub:

http://www.neosoftware.com/software/pubs/ModularAppExample.zip


Interesting example, the more I use NeoBook the more I realize it can do just about anything. The NeoAppBuilder will be a nice addition, but also I can't wait for updates to the core since I develop for desktops mostly. Cheers! :P

Re: Modular applications

PostPosted: Fri Mar 27, 2015 7:47 am
by ebear
Hello All,

After a few days of experimenting with the example of Dave and some extra from me I'm pretty close to the perfect solution.
Only one problem I didn't solve till now:

- I'm building my applications for a minimum resolution of 1280 x 800, we have a lot of tablets etc with this resolution. Next to the tablets the most monitors in my company are 1920 x 1080.

In Dave's example the screen size is the same, but I need to start the application in full screen. Now when switching between the modules you see the module grow from 1280 x 800 to full screen on a 1920 x 1080 monitor. Hopefully my explanation is understandable ;-)

This looks not very professional. If there is a way to prevent this, I think the "Modular application" issue is solved and I will be glad to share.

Best regards,

Eric