Modulair applications

Questions about using NeoBook's scripting language

Moderator: Neosoft Support

User avatar
DIGIROSS
Posts: 15
Joined: Fri Apr 05, 2013 5:35 am
Location: Virginia

Re: Modulair applications

Post by DIGIROSS »

1) Is the resize the first code called when your application starts? If not then make it the first subroutine executed.

2) Have you tried using the splash screen option to see if your still seeing the resize from 1280x800 to 1920x1080?

3) Have you tried starting the application minimized, resize to desired resolution, then show the application (after a short delay)?
User avatar
ebear
Posts: 270
Joined: Wed Jan 18, 2012 3:12 am
Location: Vrchlabi - Czech republic
Contact:

Re: Modulair applications

Post by ebear »

Hello Digiross,

Thanks a lot for your reaction. To get this working is very import for me, and I think I'm not alone... ;*)

See answers below:

1) Is the resize the first code called when your application starts? If not then make it the first subroutine executed.
EB: I tried several ways; resize code in the startup actions, via the alStartup plugin (this plugin runs code before anything is shown)

Below code I tried with the "Great" npInfoGet plugin, for full screen without hiding the taskbar

Code: Select all

:alStartup
    npInfoGet "System.WorkArea.Bottom,System.WorkArea.Left,System.WorkArea.Right,System.WorkArea.Top"
    SetVar "[WindowTop]" "[System.WorkArea.Top]"
    SetVar "[WindowLeft]" "[System.WorkArea.Left]"
    SetVar "[WindowWidth]" "[System.WorkArea.Right] - [System.WorkArea.Left]"
    SetVar "[WindowHeight]" "[System.WorkArea.Bottom] - [System.WorkArea.Top]"
Return
2) Have you tried using the splash screen option to see if your still seeing the resize from 1280x800 to 1920x1080?
This I tried now but makes no difference.


3) Have you tried starting the application minimized, resize to desired resolution, then show the application (after a short delay)?
How to do this????

Best regards,

Eric
http://www.lunarsoftware.eu - Lunar Software ERP database Development. Manufacturing processes, Document management, QMS, Stock management. Standalone solutions or connected to Helios Orange and other ERP systems.
Neosoft Support
NeoSoft Team
Posts: 5628
Joined: Thu Mar 31, 2005 10:48 pm
Location: Oregon, USA
Contact:

Re: Modulair applications

Post by Neosoft Support »

You can maximize the pub window by placing the following in your startup action:

SetVar "[WindowState]" "Maximized"

This works, but you will see the window appear briefly at it's designed size before maximizing. You could alleviate this by making the first page a splash screen. Use a delay to make the splash image appear for a few seconds, before maximizing and changing pages. For example:

Delay "3000"
SetVar "[WindowState]" "Maximized"
GotoNextPage
...
NeoSoft Support
User avatar
ebear
Posts: 270
Joined: Wed Jan 18, 2012 3:12 am
Location: Vrchlabi - Czech republic
Contact:

Re: Modulair applications

Post by ebear »

Hello All,

Okay after a week experimenting with all the ideas everyone wrote down, I went further with the idea from Geav. I don't use the "RunNeobook" action as in Dave's example because this is also unstable, possible due to plugins used I don't know. I don't have yet everything solved, but lets say that 90% is done.

The main solution I have developed is the follow:

1. I made a standard "template" for the currently and future modules. The template design is done to get a standard for all the modules. The template has some standard scripts needed for each module. Rest of the scripts is of cause different per module.

2. All the modules are full screen windows but don't cover the task-balk, and are compiled as a standard application and the extension renamed to DLL (I don´t know if this can give problems???). I also had before my apps full screen mainly for tablet users, for me this is okay.

3. The main module is a user login application (with EXE extension). This application loads also the HPW treemenu from the database and saves this as a text file, all the other modules are using this to show the treemenu. The login application also loads the language variables from a database (multi-language per user) and some other needed variables. After the user login, the login application saves the variables in a encrypted file which is used by the other modules. (Encrypted because of passwords etc etc)

4. The modules cannot start standalone (in case some renames DLL to EXE), this is done with a special commandline parameter and a IF ELSE script.

5. If a user switches from one module to the other via the tree menu, the previous modules stays on top and is closed when the new module finishes start-up. This gives the user almost idea that he is working in the same application. Before the next modules is started the previous module again saves the variables.

6. Each module can have also more pages and functions (in the scope of the module), in case of a page switch via the treemenu this is recognized, and only a page switch is done (not a complete restart of the module). Most of the time the users are using 1 or 2 modules, so starting a new module isn't that frequently. But even then, the time it takes to switch between modules isn't that increased against the application with all in one.

There are two things I don't have yet completed:

1. I don't want to have two buttons shown on the windows task-balk between switching.
2. On the moment the previous module closes itself after an delay, but I would like that the new module, after the start-up is completed, closes the previous module. The problem with the delay is that not every module start-up is the same. I tried some ways I found in this forum but till now I didn't the 100% way the archive this.

Of cause there are a lot more procedures I use then described above.

If everything works I will try to create a small demo to share, but a lot of things are database driven so it would not be a complete copy.

I'm open for discussion.

Regards,

Eric
http://www.lunarsoftware.eu - Lunar Software ERP database Development. Manufacturing processes, Document management, QMS, Stock management. Standalone solutions or connected to Helios Orange and other ERP systems.
User avatar
Gaev
Posts: 3782
Joined: Fri Apr 01, 2005 7:48 am
Location: Toronto, Canada
Contact:

Re: Modulair applications

Post by Gaev »

Eric:

Glad you could make use of the suggestion.
1. I don't want to have two buttons shown on the windows task-balk between switching.
I don't understand ... did you mean "windows task bar" ?
2. On the moment the previous module closes itself after an delay, but I would like that the new module, after the start-up is completed, closes the previous module. The problem with the delay is that not every module start-up is the same. I tried some ways I found in this forum but till now I didn't the 100% way the archive this.
From the Help file ...
You can detect when a user attempts to launch a second instance of your publication by creating a special subroutine called CommandLine_OnChange. NeoBook will automatically execute this subroutine whenever the user attempts to start more than one copy of your publication. For example:

:CommandLine_OnChange
AlertBox "Warning" "An attempt was made to launch a second copy of this app."
Return
One approach might be that, when the start-up is complete, the new module requests NeoBook to "run the previous (i.e. calling) module" ... with a special (command line) parameter ... like "Pretty Please Exit Now" ... and that would be the cue for the previous module to "close itself".
User avatar
ebear
Posts: 270
Joined: Wed Jan 18, 2012 3:12 am
Location: Vrchlabi - Czech republic
Contact:

Re: Modulair applications

Post by ebear »

Hello Gaev,

Thanks for your response.

1. Yes I mean the windows task balk, it looks strange to have two task balk buttons between switching.
2. I'm now testing with a plugin from David npUtils the command "npKillProgram". I tried this before, but I think I did something wrong.

I will try and report back.

Regards,

Eric
http://www.lunarsoftware.eu - Lunar Software ERP database Development. Manufacturing processes, Document management, QMS, Stock management. Standalone solutions or connected to Helios Orange and other ERP systems.
User avatar
Gaev
Posts: 3782
Joined: Fri Apr 01, 2005 7:48 am
Location: Toronto, Canada
Contact:

Re: Modulair applications

Post by Gaev »

Eric:
1. Yes I mean the windows task balk, it looks strange to have two task balk buttons between switching.
I experimented with changing the value of [AppTitle] ... I was hoping that if I did ...

Code: Select all

SetVar "[AppTitle]" ""
... it would make the Button really thin ... unfortunately, it leaves the width of the button as before ... and the Icon is still there.

I saw several references to utilities that can "permanently" hide the showing of buttons for specified Applications ... so it should be possible to have a plugin do something similar on demand.
2. I'm now testing with a plugin from David npUtils the command "npKillProgram". I tried this before, but I think I did something wrong.
Ask dec about (1) as well ... he probably add this functionality in a day or two :wink:
User avatar
ebear
Posts: 270
Joined: Wed Jan 18, 2012 3:12 am
Location: Vrchlabi - Czech republic
Contact:

Re: Modulair applications - Solved!!!

Post by ebear »

Hello All,

My modular applications systems is finally working.

The last two problems where simple small failures. :oops: :oops: :oops:

1. Hiding the "Old Module from the Windows Task Bar"
After hiding the application from the Windows Task Bar with "npHideFromTaskbar", some script was done in the application. This made the application again visible on the Windows Task Bar, moving the "npHideFromTaskbar" function after the scripts was the solution.

2. Closing the "Old Module" from the "New Module
This was really a logical thinking failure ;-) (Sorry David E. with bordering you). As I already described before I save the variables from the "Old module", and load these in the "New module". Okay with the RUN function I also set a parameter which application to close after start-up. At start-up I do a

Code: Select all

StrParse "[CommandLine]" "[#13]" "[Param]" "[Count]"
, my problem was that I after this opened the variables file, and of cause overwrote also the [Param] variables. Changing the script sequence solved also this problem.

Tomorrow I will create a sample with the complete solution and share. Maybe it can save someone a little time.

Thanks a lot everyone.

Regards,

Eric
http://www.lunarsoftware.eu - Lunar Software ERP database Development. Manufacturing processes, Document management, QMS, Stock management. Standalone solutions or connected to Helios Orange and other ERP systems.
User avatar
ebear
Posts: 270
Joined: Wed Jan 18, 2012 3:12 am
Location: Vrchlabi - Czech republic
Contact:

Re: Modulair applications

Post by ebear »

Gaev wrote:Eric:
1. Yes I mean the windows task balk, it looks strange to have two task balk buttons between switching.
I experimented with changing the value of [AppTitle] ... I was hoping that if I did ...

Code: Select all

SetVar "[AppTitle]" ""
... it would make the Button really thin ... unfortunately, it leaves the width of the button as before ... and the Icon is still there.

I saw several references to utilities that can "permanently" hide the showing of buttons for specified Applications ... so it should be possible to have a plugin do something similar on demand.
2. I'm now testing with a plugin from David npUtils the command "npKillProgram". I tried this before, but I think I did something wrong.
Ask dec about (1) as well ... he probably add this functionality in a day or two :wink:
As in my other message, David has these functions (working) in his great plugins :lol:

Eric
http://www.lunarsoftware.eu - Lunar Software ERP database Development. Manufacturing processes, Document management, QMS, Stock management. Standalone solutions or connected to Helios Orange and other ERP systems.
TMcD
Posts: 239
Joined: Sun Apr 10, 2005 11:20 am

Re: Modulair applications

Post by TMcD »

Since file size has been discussed regarding updates, etc.

I do recommend this software for creating small sized patches:

http://www.clickteam.com/patch-maker

I have the software, use it and again, recommend it.

Troy
User avatar
fkapnist
Posts: 348
Joined: Mon Nov 17, 2014 4:24 pm
Location: Greece
Contact:

Re: Modular applications

Post by fkapnist »

ebear wrote: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
I used something like this to get the size and position of a window before it is moved or resized. The following "WHOP", etc.variables return the window to its original size and position.....

Setvar "[WHOP]" "[WindowHeight]"
Setvar "[WWOP]" "[WindowWidth]"
Setvar "[WTOP]" "[WindowTop]"
Setvar "[WLOP]" "[WindowLeft]"
.Delay "5"
SetVar "[WindowWidth]" "968"
SetVar "[WindowHeight]" "570"

You can have a transition slide effect or disable/enable an object during the resizing so it does not look clumbsy to the user...

:idea:

It sounds like you modular program is similar to the Microsoft snap in console



You can gray out the entire screen and do a transition fade-in etc., while your program resizes..... the user will not see anything except a gradual fade in.

8)
Locked