Page 1 of 1

VIEW_Program call GL_Program ?

Posted: Wed Jun 29, 2022 9:15 am
by Javi
Quiero crear una aplicación que,

1/ primero arrojará un formulario de ventana VIEW_Program, donde el usuario podrá elegir entre varias opciones de personalización.

2/ Una vez presionado el botón Ok en el formulario debe arrojar un GL_Program de acuerdo a esa opción.

Como ejemplo, puedo pensar en una postal navideña presentada como demostración aquí:

Hola mundo en VR-VIEW
http://msxvr.es/doc/wiki/mdwiki.html#!3 ... 6c2ddf6.md

Postal Navideña en VR-Script + GL
http://msxvr.es/doc/wiki/mdwiki.html#!5 ... 13651e9.md


La idea en el código podría ser así:

E2.pi file,

Code: Select all

class E2 implements VIEW_Program
{
    virtual Start()
    {
        _wnd = CreateWindow();
        _menu = _wnd.CreateMenu();
        _section = _menu.AddSection("File");
        _section.AddItem("Exit", this, "End");
        _label = _wnd.CreateLabel(10, 10, 200, 200);
        _label.SetText("Hola mundo!!");
    }    

    function End()
    {
        //End(0);

	NewObject("main", "main");	

    }
}


main.pi file,

Code: Select all

class Main implements GL_Program
{
    function Start()
    {
	//Postal Navideña
	...
	
	::Start();
    }
}
Pero el comando NewObject no está presente en VIEW_Program.

Preguntas:

1/ ¿Cómo puedo hacer eso?
2/ ¿Cómo puedo pasar el bean de formulario de VIEW_Program a GL_Program?





I want to create an app that,

1/ first will throw a VIEW_Program window form, where the user could choose among several personalization options.

2/ Once pressed the Ok button on the form it should throw a GL_Program according to that option.

As an example, I can think about a Christmas postcard presented as a demo here:


Hola mundo en VR-VIEW
http://msxvr.es/doc/wiki/mdwiki.html#!3 ... 6c2ddf6.md

Postal Navideña en VR-Script + GL
http://msxvr.es/doc/wiki/mdwiki.html#!5 ... 13651e9.md


The idea in code could be like that:


E2.pi file,

Code: Select all

class E2 implements VIEW_Program
{
    virtual Start()
    {
        _wnd = CreateWindow();
        _menu = _wnd.CreateMenu();
        _section = _menu.AddSection("File");
        _section.AddItem("Exit", this, "End");
        _label = _wnd.CreateLabel(10, 10, 200, 200);
        _label.SetText("Hola mundo!!");
    }    

    function End()
    {
        //End(0);

	NewObject("main", "main");	

    }
}

main.pi file,

Code: Select all

class Main implements GL_Program
{
    function Start()
    {
	//Postal Navideña
	...
	
	::Start();
    }
}
But the NewObject command is not present on VIEW_Program.

Questions:

1/ How can I do that?
2/ How I can pass the form bean from VIEW_Program to the GL_Program?

Re: VIEW_Program call GL_Program ?

Posted: Mon Jul 04, 2022 9:53 am
by droman
No estoy delante del VR ni tengo mis códigos a mano, pero voy a tratar de explicarte lo que yo haría.

CUIDADO... esto no quiere decir, ni por mucho, que sea lo correcto, pero te digo como lo haría y vemos si sacamos algo en claro.


Tu primer programa, debería ser GL_Program, es la clase "padre" del resto y él tiene todo lo que puedes necesitar y como todo lo que crees después va a tenerlo como padre podrías ir pasándote una instancia.

Una vez creado este programa inicial, llama desde él a NewObject y crea tu ventana de configuración de la clase View_Program, en esta nueva clase, puedes recibir como parámetro, la instancia del padre.

Por cierto, si a tu botón EXIT le asocias una función End() imagino que podrás tener problemas, dado que este es un nombre de función reservada por la clase, así que estarías sobre escribiendo esa función y cada vez que quieras cerrar la app, te saldrá la ventana de la postal.

Esta tarde, miro si puedo ponerte ejemplos de código sobre como implementar una clase "core" que tenga los constructores y la instáncia del programa padre, de manera que luego derives cualquier programa de ese "core" y tengas acceso a todo.

Como siempre... el q ue mejor te puede guiar es @msxvr.

Re: VIEW_Program call GL_Program ?

Posted: Tue Jul 05, 2022 9:49 am
by Javi
Gracias Droman por tu respuesta.


Podría seguir adelante. Encontré una función llamada

Code: Select all

función RunBasic (parámetros = [], dos = nulo)

Ejecuta la aplicación VR-BASIC asociada. Se le pasarán los parámetros indicados en una lista \ y se le podrá asociar un controlador de programa DOS \.
http://msxvr.es/doc/wiki/mdwiki.html#!6 ... ad3b420.md


Esto permite llamarlo desde VR_VIEW y ejecutar un programa fuera de la ventana de VR-VIEW.


(*) VR_VIEW
---→ RunBasic (parámetros = [], dos = nulo) --→ GL_program


Si esta es la única solución encontrada, lo que quiero ahora es salir de GL_progam y volver a la ventana de configuración VR_VIEW.

Eso se puede hacer presionando CTRL + c. Quizás también llamando al código End(0).


(**) GL_program
---→ CTRL + c o End(0) --→VR_VIEW



lo que quiero ahora es volver al GL_program,

(***) VR_VER
---→ RunBasic (parámetros = [], dos = nulo) --→ GL_program


Manteniendo lo que he cargado la primera vez en la memoria. Para no volver a cargar.

Por ejemplo, he cargado 200 Mb de datos la primera vez,

(*) GL_program carga 200 MB de datos en Init.


No quiero esperar una ganancia para volver a cargar los 200Mb de datos necesarios

.(***) GL_program carga 200 MB de datos en Init. ¡¡Otra vez!!






Thank you droman for your response.


I could go ahead. I found a function called

Code: Select all

function RunBasic (params = [], dos = null)

Ejecuta la aplicación VR-BASIC asociada. Se le pasarán los parámetros indicados en una lista \ y se le podrá asociar un controlador de programa DOS \.
http://msxvr.es/doc/wiki/mdwiki.html#!6 ... ad3b420.md


This allows to call it from VR_VIEW end execute a program outside the window of VR-VIEW.


(*) VR_VIEW
---→ RunBasic (params = [], dos = null) --→ GL_program


If this is the only solution found, what I want now is exit GL_progam and return to the configuration VR_VIEW Window.

That can be done pushing CTRL + c. Perhaps by code calling End(0), too.


(**) GL_program
---→ CTRL + c or End(0) --→VR_VIEW



what I want now is, return to the GL_program,

(***) VR_VIEW
---→ RunBasic (params = [], dos = null) --→ GL_program


Keeping what I have loaded the first time in memory. To do not load again.

For instance I have load 200Mb of data on the first time,

(*) GL_program loads 200 MB of data on Init.


I don’t want to wait a gain to load again the 200Mb of data necessary

.(***) GL_program loads 200 MB of data on Init. Again!!
[/i]

Re: VIEW_Program call GL_Program ?

Posted: Tue Jul 05, 2022 4:19 pm
by msxvr
Lo que yo veo es que tendrías que crear un GL_Program ... porque según leo, lo que quieres es usas las cosas de los GL_Program (librería GL).
Y haciendo esto, te creas la ventana o un MDI sobre la ventana activa y aquí pones las opciones que quieras.
Por ejemplo:

Code: Select all

class MySample implements GL_Program
{
	function Start()
	{
		_wnd = GetEngine().GetDesktop().GetActiveWindow();
		_mdi = _wnd.CreateMDI(0, 0, 200, 200);
		_mdi.CenterToDesktop();
		_button = _mdi.CreateButton(0, 0, 100, -1);
		_button.SetText("Play");
		_button.SetOnClick(this, "OnPlay");	
		_button.AlignToParent(UI_BOTTOM | UI_RIGHT, 5);		
	}
	
	function OnPlay(_sender, _event, _params)
	{
		//Esto invocaría al Start del GL_Program
		::Start();
		//Esto borraría nuestro MDI
		delete _sender.GetWindow();
	}
}

Re: VIEW_Program call GL_Program ?

Posted: Fri Jul 08, 2022 6:42 am
by Javi
quiero llamar a VR_BASIC
Gracias,

I want to call VR-BASIC.
Thank you.

Re: VIEW_Program call GL_Program ?

Posted: Mon Jul 11, 2022 6:51 am
by droman
No sé como se llama a VR_Basic desde VR_SCRIPT, pero casi todas las funciones "nuevas" de VR_Basic son llamadas a funciones de VR_Script, por ejemplo:

Cuando haces esto en VR_BASIC:

Code: Select all

	SPR1=_GLNEW(ST,"SPR1","GL_SPRITE")
En el fondo, estás llamando a una función que en VR_SCRIPT es:

Code: Select all

	SPR1 = NewSprite("GL_SPRITE", ST);
Lo que quiero decir, es, que al llamar desde ambos sitios a las funciones del sistema, será muchísimo más rápido que implementes en VR_Script lo que quieres hacer desde VR_Basic. Todo esto, por supuesto, sin saber que es lo que realmente quieres hacer.

De todas formas, puedes crear un programa Basic_Program de esta manera:

http://msxvr.es/doc/wiki/mdwiki.html#!8 ... 520e01a.md

Code: Select all

    class E3 implements BASIC_Program
    {
        virtual Start()
        {
            Screen (0);
            Color (15, 1, 1);
            Cls ();
            KeyOff ();
            Print("Hola mundo!");
        } 
    }
PD: La velocidad de ejecución de programas VR_SCRIPT en comparación con VR_BASIC es muy elevada. Te recomiendo encarecidamente, que no los mezcles.

Re: VIEW_Program call GL_Program ?

Posted: Fri Jul 15, 2022 2:40 pm
by Javi
Gracias Droman, pero esto no es exacto.
No es posible acceder a las funciones del motor API desde VR-BASIC.
Solo el subconjunto de funciones VR_GL es accesible desde VR-BASIC. Solo inténtalo y verás.





Thank you Droman, but this is not accurate.
It is not possible to access to the API engine functions from VR-BASIC.
Only the VR_GL subset of functions are accessible from VR-BASIC. Just try it and you will see.

Re: VIEW_Program call GL_Program ?

Posted: Wed Jul 20, 2022 7:11 am
by droman
@Javi Créeme... confío en tí, yo no toco VR-Basic ni con un palo, verlo todo seguido me da ansiedad ya :)