VNC Viewer en Velneo

VNC es una de las soluciones Open Source de escritorio remoto más usadas por todos.

https://es.wikipedia.org/wiki/VNC

VNC son las siglas en inglés de Virtual Network Computing (Computación Virtual en Red).

VNC es un programa de software libre basado en una estructura cliente-servidor que permite observar las acciones del ordenador servidor remotamente a través de un ordenador cliente. VNC no impone restricciones en el sistema operativo del ordenador servidor con respecto al del cliente: es posible compartir la pantalla de una máquina con cualquier sistema operativo que admita VNC conectándose desde otro ordenador o dispositivo que disponga de un cliente VNC portado.

La versión original del VNC se desarrolló en el Reino Unido, concretamente en los laboratorios AT&T Olivetti Research Laboratory, en Cambridge. El programa era de código abierto, por lo que cualquiera podía modificarlo, y existen hoy en día varios programas para el mismo uso. Muchos derivados modernos de él son software libre con licencia GPL.

Simple de instalar, de configurar y de usar, nos permite conectar remotamente a un ordenador que tenga instalado VNC Server (el servidor VNC que soporte este protocolo).

Partiendo del código fuente del plugin QmlVncViewer  https://github.com/heroyin/qmlvncviewer con licencia https://github.com/heroyin/qmlvncviewer/blob/master/LICENSE hemos compilado para Win32 obteniendo un plugin sencillo y funcional. No hemos necesitado realizar ninguna modificación en el mismo.

image

Este plugin usa las librerías de http://www.tightvnc.com/ con licencia GNU GPL v2 https://www.gnu.org/licenses/old-licenses/gpl-2.0.html. Esta licencia nos obliga a liberar todo el código fuente de las aplicaciones donde se integre con la misma licencia (o licencia abierta equivalente).

En caso de querer usarlas para uso comercial tienes una segunda opción, la licencia comercial. La puedes solicitar en https://www.tightvnc.com/licensing.php. Esta licencia os permitiría incluirla en productos comerciales.

 

Compilar QmlVncViewer para Velneo

La compilación no es especialmente compleja, aunque lo cierto es que no hay nada de documentación al respecto.

Primero tienes que compilar la solución tightvnc.sln, para Win32 en modo Release desde Visual Studio 2013. Es importante que marques todos los proyectos para que se compilen en modo Multi-threaded DLL (/MD)

image

Después abre desde QtCreator el fichero vncroot.pro y procede a la compilación en modo Release. Recuerda que el entorno requerido es el que os explicamos en el artículo https://tipesoft.com/compilar-plugins-qml-para-velneo/. Poco más que añadir.

image

Ejemplo del Plugin QML VncViewer

A partir de ahora podrás disfrutar de ella en Velneo gracias a este nuevo plugin que os presentamos hoy.

image

Como veis, podemos conectarnos sin ningún problema desde Velneo a nuestros servidores VNC gracias a este nuevo plugin.

image

Desde el punto de vista de la implementación QML, poco que decir. Disponemos de un Elemento QML llamado VncViewer donde establecemos el host, port y password. Por otro lado, usamos la función adjustView() para ajustar el scrollView que nos permite acceder a todo el escritorio de la máquina a la que estamos conectados.

image

Para iniciar el visor, usamos vncViewer.start(). Para cerrar la visualización usamos vncViewer.stop() y para refrescar la misma vncViewer.refresh(). Es importante la parada de la visualización ya que es un raw abierto en un socket.

Para nuestras pruebas, hemos usado en el lado del servidor UltraVNC Sever (http://www.uvnc.com/). Hemos obtenido buenos resultados, sin ningún problema importante.

image

Respecto a a la configuración del servidor, es importante fijar el puerto, abrir el firewall y establecer las dos contraseñas requeridas. El resto de los parámetros los podemos dejar por defecto.

Por otro lado, recordaros que VNC no es que sea especialmente seguro, por lo que se recomienda mantener actualizadas las versiones de nuestros servidores VNC. Por otro lado fija contraseñas fuertes y mantenlas actualizadas.

 

Descargas

Como podéis apreciar, es un plugin fenomenal. Os dejamos disponible todo lo necesario para que podáis disfrutar de el en Velneo 7.22.1.

Descargar código fuente del plugin QML

Recuerda que esta librería tendrás que compilarla para la versión adecuada de tu vClient. Para facilitarte el trabajo, hemos empaquetado la versión para Windows x32 en un descargable. Solo tienes que copiar el contenido dentro de la carpeta Velneo (donde está ubicado el ejecutable del vClient.exe). Asegúrate de que el plugin queda dentro de la carpeta qml del directorio de instalación de Velneo. Recuerda respetar la licencia abierta del mismo, esta librería tiene restricciones importantes de uso, no te las saltes.

Descargar Plugin QML para Velneo v7.22.1Descarga libre

Esta vez no os damos acceso al VIN con el ejemplo por cuestiones de licencia, pero no os preocupéis… es tan simple como crear un proyecto Velneo que contenga un fichero QML con el ejemplo incluido en el código fuente anteriormente enlazado. Si tenéis dudas… no tardéis en comentar para aclararlas. Podéis fijaros en los anteriores.

Ante todo, no se te olvide respetar las licencias de todos ellos.

 

 

Qué es un Plugin QML

Nuestro buen amigo Paco Satué nos deja caer en uno de nuestros últimos artículos que sería interesante aclarar para toda la comunidad Velneo una serie de cuestiones:

Paco Satué

marzo 8, 2018 | Responder

Hola Jorge.

Las preguntas serían:

– ¿ qué es realmente un plugin QML ?
– ¿ necesito unos conocimientos medios de C++ ?
– ¿ existen en Internet desarrollos en Qt que sean fácilmente importables a Velneo como plugins ?
– ¿ ésta sería una buena forma de extender Velneo y en ese caso, por qué no se hace más a menudo ?

Saludos y gracias por los artículos de excelente nivel.
Paco Satué

Paco tiene razón… y vamos a dársela atendiendo a esta cuestiones y otras que puedan ser necesarias para clarificar que es eso de un plugin QML y como nos afecta a los desarrolladores Velneo.

 

Qué es un plugin QML

Un plugin QML es una posibilidad de extensibilidad que tiene QML y por ende Velneo. Nos permite extender su funcionalidad de una forma modular (los módulos son los plugins).

Estos plugins pueden contener código C/C++, código javascript y código QML. Se pueden desarrollar combinando las tres tecnologías, haciendo que sea realmente interesante.

Lo habitual es que sea un componente C/C++ con pequeñas partes en QML y javascript.

En caso de requerir solo de capacidades QML y javascript no es necesario desarrollar un plugin c++, con integrarlo como un componente dentro de nuestro desarrollo QML sería suficiente.

Si nos fijamos uno de ellos, veremos que la dispone de funcionalidades desarrolladas de forma mixta (C/C++, código javascript y código QML).

Fíjate en el siguiente directorio de tu instalación de Velneo.

image

Como puedes observar, el plugin QML QtMultimedia, está formado por una dll (resultado de compilar código c/c++), un fichero QML (Video.qml) y un fichero de configuración (qmldir).

Si abrimos el fichero Video.qml con un editor de texto podemos observar como dentro del mismo hay fragmentos de código JavaScript.

image

Observar esta cuestión nos permite vislumbrar en que consiste un plugin QML (técnicamente hablando).

Plugins QML en Qt

Dentro de Qt 5 existen multitud de plugins QML. Parte de ellos integrados dentro de la plataforma base, otros como extensiones dentro del proyecto Qt y otros de terceros (de código abierto o cerrado).

En caso de ser plugins QML/C++ requerimos compilarlos para cada plataforma. Esto provoca que sea más complejo técnicamente de lo deseado.

 

Plugins QML en Velneo

Usarlos dentro de Velneo consiste en poco más que pegarlos en la ubicación correcta (si ya los tienes compilados) e importarlos dentro de tus formularios o listas QML de Velneo.

Actualmente podemos extender el vClient y el vDevelop mediante plugins QML.

En el mundo Velneo, no hay ningún soporte para esta capacidad de extender nuestras herramientas, pero lo cierto es que tampoco es que nos haga demasiada falta.

 

Necesito saber C++ para desarrollar plugins QML

Sin dudas.

Por desgracia, necesitas algo más que el conocimiento básico:

  • Por un lado, necesitas conocer C y C++ (nivel medio).
  • Por otro, necesitas conocer QML y JavaScript (no es demasiado complejo, pero requiere de cierto esfuerzo). Recuerda que ya hemos escrito algún artículo sobre como compilar
  • Por otro, la forma de declarar un plugin (no es demasiado compleja). Tenemos escrito otro  artículo sobre como crear tus plugins, no dudes en leerlo.
  • Por otro, necesitas conocer la plataforma Qt en cada sistema operativo, no es lo mismo compilar en windows, linux o iOS (la verdad es que no es tan simple como puede parecer).
  • También necesitas conocer herramientas tales como compiladores, enlazadores, JDK, SDK, XCode, CMake, QMake, Git…

Vamos… que no está al alcance de todo el mundo.

 

Proyectos Qt que se puedan incorporar como plugins Velneo

Proyectos Qt hay muchos. Que se puedan integrar de forma directa en Velneo, pocos.

 

Plugins que requieren poco esfuerzo

En los proyectos Qt/QML que hay, el soporte de la comunidad de desarrollo Qt es medio/bajo. Podríamos empezar por esta lista de recursos disponibles Qt/QML:

https://github.com/mikalv/awesome-qt-qml

En algunos de ellos, solo hay que coger la instrucciones del proyecto, compilarlos para cada plataforma y volcar los binarios adecuadamente. En otros… no es tan simple.

 

Plugins que requieren de esfuerzo medio-alto

Por otro lado, también hay proyectos, que haciendo un esfuerzo medio/alto se podrían convertir en plugins QML. Tendríamos que ver si funcionalmente son necesarios, estudiar el código fuente, desarrollar las clases que intermedien y por último crear y compilar los plugins. De estos hay muchos más.

https://github.com/JesseTG/awesome-qt

https://github.com/skhaz/awesome-qt

https://github.com/fffaraz/awesome-qt

https://github.com/insideqt/awesome-qt

 

Plugins que requieren de esfuerzo alto

Y ya puestos… si cogemos C y C++ las posibilidades son infinitas, pero el esfuerzo es mucho mayor.

https://github.com/fffaraz/awesome-cpp

 

Es una buena forma de extender Velneo

La verdad es que los plugins QML son una poderosa forma de extender Velneo, tal vez la más poderosa. Pero también es cierto, que los esfuerzos necesarios son medio/altos, y eso echa para atrás a muchos desarrolladores de la comunidad Velneo.

Este es el motivo por el que hemos decidido caminar en esta dirección, para ayudaros a abrir camino en esta difícil tarea. Los resultados saltan a la vista:

Por nuestra parte seguiremos dando luz sobre esta forma de extensión de Qt… ¿Cuál será el siguiente?

QtRecorder en Velneo

Me he tomado un descanso en los últimos días, los anteriores artículos fueron realmente intensos y necesitaba un relax. El trabajo que supone hacer todo el proceso para añadir un nuevo plugin QML es intenso, y lo cierto es que las dos últimas semanas no hemos parado.

Por eso he elegido esta vez, un plugin light. Por lo menos esa era la teoría.

He partido de QML Recorder (https://github.com/sverzegnassi/qml-recorder).

Este plugin QML, esencialmente nos permite grabar audio desde QML en distintos formatos y fuentes.

 image

Como ha priori parecía muy simple, compilé el plugin e importé los ejemplos a Velneo. El resultado… no funcionaba.

Revisando código, encontré un par de cosas que podían ser las culpables (tratamiento de las rutas y otro detalle menor). Corregidas, compiladas y a funcionar.

Parecía que ya estaba yo contento… hasta que me dio por leer. Terminé leyendo https://github.com/sverzegnassi/qml-recorder/issues y me día cuenta de que era una versión anticuada (no mucho la verdad). Navegando… encontré unas fuentes más actualizadas. Tal vez era más correcto partir de ellas y olvidarnos de las antiguas https://bazaar.launchpad.net/~verzegnassi-stefano/+junk/recorder-test/files.

Al analizar el código fuente, voy y me encuentro dos problemas .

Primer problema

El código fuente está dividido en dos plugins QML.

image

Vuelta a empezar… no por favor. No quería hacer nada complicado, tengo que leer mucho más sobre de Angular 5 y TypeScript, tengo que revisar el diseño de Arquitectura de otro mega-proyecto, tengo que ofertar un montaje de un CAS, tengo que evitar los rebotes del 4066.

No tengo tiempo para estas cosas…. pufff… dos plugins en vez de uno… pufff…

Pero no siempre, lo pude evitar. No quiero que mis compis Velneadores tengan que andar con dos librerías para algo tan sencillo como grabar un audio (conceptualmente están mejor separadas, pero para facilitar el uso, considero que mejor juntas).

El resumen… que he creado un plugin QML que contiene los dos y que hace el trabajo correctamente.

Segundo problema

El ejemplo está desarrollado para Ubuntu…. esto no me lo esperaba.

image

A revisar el ejemplo y retocar las cosas que no son compatibles. Y todo esto para un simple botón que graba audio.

image

Moralejas

“No es oro todo lo que reluce”, “No hay mal que por bien no venga”, “Lo barato sale caro”, “El que corre pronto para”… aplicaros el que más os guste. A mi me da, que aplican todos y alguno más en este caso.

QML es dado a la fragmentación por culpa de los fabricantes (como siempre):

  • BB10
  • Ubuntu
  • V-Play
  • Jolla
  • Nemo
  • Qt5

Muchas formas de hacer lo mismo, un sinsentido para un framework tan genial como Qt.

Descargas

Bueno, es hora de publicarlo. Funcionalmente es una librería simple, pero que resuelve una cuestión interesante. Os dejamos disponible todo lo necesario para que podáis disfrutar de ella en Velneo 7.22.1.

Descargar código fuente del plugin QML de QRecorder para v7.22.1Descargar código fuente

Recuerda que esta librería tendrás que compilarla para la versión adecuada de tu vClient. Para facilitarte el trabajo, hemos empaquetado la versión para Windows x32 en un descargable. Solo tienes que copiar el contenido dentro de la carpeta Velneo (donde está ubicado el ejecutable del vClient.exe). Asegúrate de que el plugin queda dentro de la carpeta qml del directorio de instalación de Velneo.

Descargar Plugin QML para Velneo v7.22.1Requiere estar registrado

También os damos acceso al VIN de todos los ejemplos funcinando en Velneo V7

Descargar VIN con los ejemplos de QtRecorder para Velneo v7.22.1Requiere estar registrado

La verdad es que no se cual es el uso que la vais a dar, ya me contareis. Recuerda respetar la licencia GNU del mismo.

Aún hay más

Si crees que ya has superado todos los problemas es que aún te queda alguno que superar.

Pues eso, que voy a publicar en WordPress y zasca. Ha dicho que hoy no, tal vez mañana.

image

Un abrazo… y espero que tengáis un camino más sencillo con las pruebas de este plugin.

QZXing en Velneo

Esta vez nos enfocamos en una buena librería de uso empresarial. Sin duda aportará gran valor en la comunidad Velneo.

QZXing es una librería intermediaria entre ZXing y Qt. ZXing, abreviatura de (“Zebra Crossing”), es una librería de procesamiento de imágenes que permite leer y generar códigos de barras 1D y 2D. Es especialmente buena en el proceso de decodificación, no tanto en la codificación. ZXing dispone de soporte para c++, Java y Android https://github.com/zxing/zxing.

Su licencia es Apache 2.0. https://github.com/zxing/zxing/blob/master/LICENSE

image

Significa que es permisiva, pero tiene que mantener las marcas de uso. También recordaros que QR code está licenciado por Denso Wave, inc.

Por otro lado, QZXing es la librería intermediara entre Qt y ZXing, convirtiéndose en la librería más importante en codificación/decodificación de códigos de barras en Qt https://github.com/ftylitak/qzxing. Su licencia también es Apache 2.0 https://github.com/ftylitak/qzxing/blob/master/LICENSE.

QZXing, en teoría, dispone de soporte para QML (https://github.com/ftylitak/qzxing), pero lo cierto es que hemos tenido que desarrollar un plugin para que funcione correctamente en Velneo. El código fuente del plugin lo podrás encontrar al final del artículo, dentro del fichero comprimido del código fuente, en la carpeta QZXing-master\examples\QMLZXing. De momento solo la hemos probado sobre Win32, por lo que desconocemos como se comportará sobre otras plataformas.

image

QZXing soporta decodificación de códigos de barra de los siguientes tipos:

  • UPC-A
  • UPC-E
  • EAN-8
  • EAN-13
  • ITF
  • Code 39
  • Code 93
  • Code 128 (GS1)
  • Codabar
  • QR Code
  • Data Matrix
  • Aztec (beta)
  • PDF 417

También soporta codificación de tipo:

  • QR Code

 

Véase el siguiente ejemplo de como usar el decodificador desde QML:

import QZXing 2.3

function decode(preview) {
	imageToDecode.source = preview
	decoder.decodeImageQML(imageToDecode);
}

Image {
	id:imageToDecode
}

QZXing{
	id: decoder
	enabledDecoders: QZXing.DecoderFormat_QR_CODE
	onDecodingStarted: console.log("Decoding of image started...")
	onTagFound: console.log("Barcode data: " + tag)
	onDecodingFinished: console.log("Decoding finished " + (succeeded==true ? "successfully" : "unsuccessfully"))
}

Para la codificación de un código Qr usamos un proveedor de imágenes que se registra al iniciar le plugin. Véase el siguiente ejemplo de como usar el codificador de códigos Qr desde QML:

import QZXing 2.3

TextField {
	id: inputField
	text: "Hello world!"
}

Image{
	source: "image://QZXing/encode/" + inputField.text;
	cache: false;
}

 

Como podéis apreciar es relativamente sencillo de usar. Pero no os engañéis, es realmente poderoso.

 

Ejemplos de uso de QZXing en Velneo

En la zona de descargas, podrás encontrar un fichero VIN con cuatro los ejemplos funcionales. Trabajo ha costado conseguir que todos ellos funcionen correctamente, algunos de ellos los hemos tenido que revisar y corregir de forma profunda ya que no eran funcionales en primera instancia.

image

Lector de códigos desde imágenes con soporte Drag N Drop. Permite leer las imágenes mediante Drag N Drop dentro de velneo y obtener el Tag que se encuentre en ellas. Soporta todos los Decorders que veis en la captura.

image

Lector en vivo de etiquetas Qr. Es una implementación que permite leer códigos Qr en vivo. Acerca uno a tu webcam y verás como funciona.

image

Codificación de códigos Qr. Como podéis apreciar, es relativamente sencillo, el problema es que solo soporta códigos Qr.

image

Lector de códigos bajo demanda. Poco que decir… acercas el código a leer, pulsas en Decode y obtendrás un cuadro de dialogo con el código leído.

image

Descargas

Como podéis apreciar, funcionalmente es una gran librería. Os dejamos disponible todo lo necesario para que podáis disfrutar de ella en Velneo 7.22.1.

Descargar código fuente del plugin QML de QZXing para v7.22.1Descargar código fuente

 

Recuerda que esta librería tendrás que compilarla para la versión adecuada de tu vClient. Para facilitarte el trabajo, hemos empaquetado la versión para Windows x32 en un descargable. Solo tienes que copiar el contenido dentro de la carpeta Velneo (donde está ubicado el ejecutable del vClient.exe). Asegúrate de que el plugin queda dentro de la carpeta qml del directorio de instalación de Velneo.

Descargar Plugin QML para Velneo v7.22.1Requiere estar registrado

 

También os damos acceso al VIN de todos los ejemplos funcinando en Velneo V7

Descargar VIN con los ejemplos de QZXing para Velneo v7.22.1Requiere estar registrado

 

Con un poquito de trabajo podrás integrarla en tus desarrollos para conseguir grandes mejoras en tus aplicaciones Velneo. Pero, ante todo, no se te olvide respetar la licencia Apache 2.0.

 

 

 

 

Desarrollar plugins QML para Velneo

En el anterior artículo, instalamos todo lo necesario para empezar a desarrollar complementos QML para Velneo sobre Windows x32 y x64.

Hoy toca probar el entorno y desarrollar un primer complemento.

 

Hello World QML

Antes de aventurarnos con Qt5 es recomendable probar nuestro entorno.

Para ello desarrollaremos un hola mundo con QML, de esta forma garantizaremos que todo está en su sitio.

Dentro del QtCreator pulsamos en File > New Project

Seleccionamos Qt Quick Application – Empty

image

Establecemos el nombre del proyecto y la ubicación.

Recomiendo una ruta corta para la ubicación de los proyectos (en mi caso uso C:\Qt\Proyectos\). Establécela como la por defecto.

image

Definimos la herramienta para generar las compilaciones (qmake por compatibilidad).

image

Establecemos la versión de Qt (no todos los tipos de plantillas permiten 5.6.X).

image

Seleccionamos el Kit Desktop Qt 5.6.2 MSVC2016 32bit o 64bit (según corresponda)image

Y pulsamos en Finish

image

Debug

Para ejecutar en modo Debug sin depuración pulsamos en el botón Play (no lanza el depurador, solo ejecuta)

image

Si ya somos capaces de ejecutar nuestra App es que tenemos el compilador en su sitio.image

Para ejecutar en modo Debug con depuración pulsamos en el botón Play con cucaracha (lanza el depurador y ejecuta). Un depurador de los de verdad, aunque lo cierto es que los he visto mejores (también peores).

image

Si lanza el depurador correctamente, ya lo tenemos todo, nos podemos aventurar en algo más complejo.

 

Release

Para compilar la versión final (la que vamos a desplegar en Velneo) cambiamos el modo a Release.

image

Para compilar, depurar o ejecutar disponemos del menú Build.

image

Desarrollando nuestro primer plugin QML

Lo básico ya lo tenemos claro, entorno, compilador y depurador. Ahora toca empezar con la parte dura del asunto, desarrollar un plugin c++/qml. Pero antes de empezar toca aprender un poco, toca leer al respecto http://doc.qt.io/qt-5/qtqml-modules-cppplugins.html

Un plugin QML es una librería que contiene una clase que hereda de QQmlExtensionPlugin. QtCreator dispone de una plantilla para crear extensiones (Qt Quick 2 Extension Plugin), por lo que no nos tenemos que enredar demasiado, deja que QtCreator te ayude.

image

Le damos nombre a nuestro Plugin. Este nombre se usará como nombre del archivo de nuestra librería y como nombre de plugin.

image

Creamos una clase que contendrá el elemento QML que usaremos desde Velneo. También tenemos que definir la URI de los componentes. Esta URI se usará como ruta de los ficheros y como nombre del módulo.

image

Finalizamos el asistente y obtenemos el código de nuestro plugin en base a la plantilla. Observa que la clase de nuestro plugin hereda de QQmlExtensionPlugin. Fíjate en la función registerTypes(). Esta función se encarga de registrar los tipos disponibles en nuestro plugin. Date cuenta de que usa la URI que hemos fijado en el asistente.

image

En la implementación de la función registerTypes() puedes apreciar como se llama a qmlRegisterType que es la encargada de registrar el tipo de elemento dentro de la ejecución del plugin. En nuestro caso MyHelloWorldItem.

image

La clase MyHelloWorldItem, es la que contendrá el código de la implementación de nuestro primer componente. Evidentemente, implementaremos algo muy simple, para entender como encajan todas las piezas.

La clase MyHelloWorldItem hereda de QQuickItem (elemento más básico de QtQuick).

image

Como veis en la propia documentación del código, QtQuickItem no pinta nada. Si quieres que pinte algo, pues toca implementarlo (puede que lo que quieras es hacer algo en C++ en segundo plano, por ejemplo montar un complemento para guardar ficheros en el disco).

Como os podéis imaginar. podemos implementar desde esta clase base o desde una especializada (que herede de ella). Por por poner un ejemplo, si queremos pintar algo en pantalla, podemos partir desde la clase QQuickPaintedItem

image

Para el ejemplo, vamos a pintar un rectángulo cuadrado de un cierto color. Algo sencillo que todos podamos entender.

La clase QQuickPaintedItem dispone de un método paint() que permite pintar elementos. Si queremos pintar un rectángulo, drawRect() nos valdrá.

image

 

Como veis, fijamos el color mediante la función setPen, y lo leemos desde una variable privada llamada m_color.

Si queremos que esta variable pueda ser establecida desde Velneo, tenemos que definir una variable publica llamada color e implementar los métodos Get y Set

image

Y establecer el comportamiento en el fichero.h de cabeceras de la clase. El fichero de cabeceras quedará tal que así:

image

A observar… la definición de la señal de control del cambio de color, la variable pública y el método setter. Por último el como establecemos una Q_PROPERTY que se pueda invocar desde QML para que sea capaz de leer i escribir en el color.

Ya tenemos nuestro ejemplo. Ahora toca compilar en modo Release.

image

Y ya tenemos nuestra DLL. La copiamos a la ruta de Velneo… pero no va sola (la acompaña del fichero qmldir con la definición del plugin y del módulo).

Es importante darse cuenta de que la uri establecida condiciona la carpeta donde tenemos que ubicarla. No podemos dejarla tirada en cualquier sitio. Si la uri es “com.tipesoft.qmlcomponents”, tendremos que crear una estructura de carpetas tal que “com/tipesoft/qmlcomponents” donde dejar nuestra dll y nuestro fichero qmldir

image

El fichero qmldir lo podemos copiar desde C:\Qt\Proyectos\HelloWorldPlugin (lo creó en base a la plantilla).

imageAhora ya podemos implementar en Velneo lo necesario para cargar nuestro plugin.

image

Fíjate en el import (en base a la uri) y en el nombre del elemento QML (MyHelloWorldItem)

Si no establecemos ningún color… resulta en negro.

imageSi lo fijamos a “red”

image

Bueno… parece que ya lo tenemos. Sencillo no es, cierto. Pero estructuralmente son todos iguales.

Os dejamos todo el código necesario descargable desde el siguiente enlace.

Descargar ejemplos Plugin QML para Velneo v7.22.1Requiere estar registrado

Ahora os toca a vosotros

Por nuestro lado, seguiremos aportando nuevos artículos de librerías “open source” que aporten gran valor a Velneo V7. Si os fijáis en las capturas, tal vez apreséis cual es la siguiente de la lista.

Compilar plugins QML para Velneo

La tarea de compilar plugins QML para Velneo, es fundamentalmente, un proceso .

 

Preparación del entorno

El primer paso, y tal vez el más pesado, es la preparación del entorno para compilar las librerías de forma adecuada (para hacerlo compatible con nuestra versión de Velneo).

Para saber que versión estamos usando de las librerías Qt, podemos abrir el cuadro “acerca de” de cualquiera de los productos Velneo. En este cuadro se nos informa de la versión de Velneo, Sistema operativo, arquitectura y versión de Qt.

image

En la versión v7.22.1 se usa la versión de 5.6.2 de Qt.

Por otro lado necesitamos saber que compilador usa Velneo para esa versión. Como no lo sabemos, tenemos que suponérnoslo. En mi caso he supuesto que compilan con Visual Studio 2013. Con estos primeros dos datos, ya podemos empezar.

Resumiendo (en el escenario windows):

  • Plataforma: Windows
  • Arquitecturas: x32 y x64
  • Compilador: Visual Studio 2013
  • Versión de Qt: 5.6.2

 

Instalar el compilador

Identificada la versión de Qt y el entorno requerido procedemos a instalar el compilador compatible con nuestro entorno.

Por cuestiones de mi trabajo, habitualmente en mis máquinas, están disponibles todos los editores y compiladores de Microsoft. Si en tu caso no dispones de ellos, solo tienes que descargarlos e instalarlos.

Tenéis dos opciones para ello:

  • Instalar Visual Studio 2013 Community – Update 5 (opción recomendada)Podemos instalar una versión gratuita de Visual Studio, que Microsoft nos facilita para empresas de pequeño tamaño, desde https://www.visualstudio.com/es/vs/older-downloads/. En el proceso de instalación se requieren unos 10Gb de espacio para los componentes habituales.

image

 

Cualquiera de los dos procedimientos de instalación nos instala el comando cl.exe (compilador de nuestro código C++)

image

Instalar las herramientas de depuración

Lo segundo es instalar las herramientas de depuración. Curiosamente, estas herramientas no vienen incluidas en Visual Studio Community ni en las build tools.

Tenéis tres opciones para instalarlas:

 

Instalar Qt 5.6.2

Ahora nos toca el tercer paso. Instalar Qt en su versión “open source”. Descargamos desde https://www.qt.io/download pulsando en “Go to open source”

image

 

Aceptamos la licencia L(GPL) que nos obliga a que nuestro código sea abierto y por último descargamos el instalador. http://download.qt.io/official_releases/online_installers/qt-unified-windows-x86-online.exe

Abrimos el instalador… siguiente, siguiente… paciencia… le decimos la ruta de instalación… hasta que nos pida los componentes a instalar:

image

Marcamos Qt 5.6 (equivale a la rama 5.6.2) para msvc2013 en                                                                                                           x32 y si lo deseas en x64

También puedes marcar aquellos plugins QML que deseas incluir en tu instalación (además de los por defecto que ya incluye el instalador de la versión elegida). Los marcados como TP son en fase beta. Los marcados como Deprecated desaparecerán en Qt 6.x

Si para más adelante… deseas compilar y depurar sobre Android necesitas marcar un par de cositas más. El compilador MiniGW y el soporte CDB para el depurador.

image

Marcado todo lo necesario… procedemos con la instalación.

Arrancamos QtCreator

Cuando tengamos instalado Qt, procedemos a arrancar QtCreator.

Para comprobar que todo ha ido bien, tenemos que entrar en Tools > Options.

Dentro de la sección Build & Run veremos los Kits que están configurados… en vuestro caso Desktop Qt 5.6.2 MSVC2013 32bit y 64bit. Si aparecen en rojo o no aparecen… malo, no ha detectado los compiladores. Si aparece en amarillo… malo, puede que no haya detectado las herramientas de depuración. Si todo está perfecto, ya tienes el entorno preparado para compilar bajo Windows

image

Para el siguiente artículo, si creéis que es necesario, os cuento como desarrollar un plugin QML para Velneo (comentar en este artículo si consideráis para que así me anime a ello).

 

 

Comienza el curso escolar 2017/2018

La verdad es que estoy como los niños cuando empiezan el nuevo curso escolar: con mucha ilusión por reencontrarme con los “amigos virtuales” ( o sea tu) y deseando hacer cosas nuevas en el blog.

curso escolarEste 2017 no está siendo como yo esperaba a nivel personal.

Cuando estaba a punto de irme de vacaciones para olvidar mis problemas de salud, (y cuando digo a punto de salir, quiero decir la noche antes con las maletas ya preparadas) tuvimos que llevar a mi hijo mayor al hospital: operación de apendicitis y cancelación de las vacaciones.

Tampoco me puedo quejar. Todo se ha cogido a tiempo y no deja de ser ya una “anécdota” familiar.

Siendo sinceros… alguna asignatura pendiente me ha quedado.

De mis propósitos de año nuevo, algunas asignaturas me han quedado pendientes para “septiembre”:

  • Todavía no he logrado crear un sistema de ingresos recurrentes.
  • Creación de un nuevo curso de iniciación.
  • Escribir artículos con mas regularidad. Esto está muy relacionado con el punto 1… si no logro ingresos recurrentes, tengo que intercambiar tiempo por ingresos… y ahí salgo perdiendo.

Prometo aplicarme para “aprobar” estas asignaturas.

¿Y este nuevo curso escolar qué?

La verdad es que estoy muy ilusionado con el proyecto ayudavelneo.

Sentir que con los artículos ayudo a los desarrolladores que se están iniciando en Velneo a ser mas productivos y a obtener beneficios desde el minuto uno, me produce una gran satisfacción.

Además gracias al blog cada vez mas a menudo me llegan propuestas de trabajo: desarrollos, cursos online, cursos presenciales así como ofertas de trabajo en empresas.

Esta última opción, de momento está descartada.

Como te he comentado anteriormente, he prometido aplicarme para “recuperar” las asignaturas que llevo suspensas.

En esta última parte del año, he decidido emprender las siguientes acciones:

  • Publicar un post todos los martes. Si además hay post de algún invitado, se publicarán los jueves.
  • Crear un nuevo curso de iniciación en Velneo para todos aquellos de vosotros que estáis empezando a desarrollar con la plataforma.
  • Enviar un boletín o newsletter los viernes a todos los suscriptores del blog,  con las novedades y artículos interesantes que aparezcan relacionados con Velneo. Si no te has suscrito todavía, puedes hacerlo al pie de este post.
  • Como los grandes clubes de futbol (quitando al Barcelona este año… jejeje), yo también he “fichado” a un nuevo colaborador para el blog: El “profesor vBacterio“. Algún experimento interesante mezclando Velneo y vJavaScript ya he visto que saldrá de su laboratorio.

Además durante el verano he recibido algunos e-mails en los que me preguntábais si los “Cursos Online” relacionados con QML iban a volver a estar disponibles.

Aunque en un principio había decidido no volver a ponerlos a la venta, al final he recapacitado y vuelven a estar disponibles:

También están disponibles en el menú superior de la web (opción “Cursos”)

De momento esto es todo lo que tenía que contarte..

¿Qué te han parecido mis “medidas” para aprobar en septiembre? ¿Acertadas?

¿Prefieres recibir la newsletter el fin de semana?

Déjame un comentario mas abajo y comenzamos el debate.

La entrada Comienza el curso escolar 2017/2018 aparece primero en AyudaVelneo.

Avances en trabajos para próximas versiones


En Velneo estamos inmersos en la futura versión 21 y queremos adelantaros algunos cambios importantes para la próxima versión de la plataforma. Esto no son las novedades de la version 21, son algunos cambios importantes que nos gustaría compartir con la comunidad.

Navegador integrado

Hasta Velneo 20, el navegador web integrado en las aplicaciones estaba basado en el engine WebKit que nos ha dado muchos años de estabilidad y buenas funcionalidades web. En Velneo 21, alineados con el trabajo de trabajo de Qt, se hace el cambio al engine del navegador de Chromium, que aporta más funcionalidades e integración con los últimos estándares web, HTML5 completo, WebRTC y otras tecnologías.
El nuevo engine se ha integrado con las mismas funcionalidades de multihilo de Chromium, lo que permite un mayor aprovechamiento de recursos de la máquina.

En este cambio, nuestro principal objetivo es que todas las aplicaciones desarrolladas que usan controles web puedan funcionar sin cambios de comportamiento en Velneo 21. Esta tarea no está siendo sencilla ya que el cambio de funcionamiento de los engines es bastante importante, sobre todo en la gestión de señales. En las próximas semanas publicaremos un post con información más detallada sobre las ventajas de este nuevo engine y sus peculiaridades para cada uno de los sistemas operativos.

QML2

Con la llegada de Velneo 21 desaparecerá el soporte a QML1 para centrarse totalmente en el soporte de QML2, que ofrece múltiples ventajas tanto a nivel de funcionalidades como de rendimiento.
Hemos trabajado duro el año pasado para que Velneo 20 pueda ser compatible con las dos implementaciones de QML para facilitar la migración de las aplicaciones de una versión de QML a la siguiente.
Relacionado con QML2, se mejorará la detección de los drivers OpenGL y se solucionarán varias incidencias de problemas de pintado en distintos sistemas.

QT 5.6.2

Relacionado con los cambios del navegador y QML2, avanzamos a la última versión con soporte a largo plazo de QT, lo que a la vez que soluciona varias incidencias relacionadas con sistemas operativos nos ofrece más estabilidad a largo plazo. Durante estos meses estamos realizando los cambios y las pruebas en todo Velneo para garantizar que las aplicaciones funcionen mejor que nunca en Velneo 21

64 Bits

Siguiendo con el Rumbo a 64 bits y analizando que menos del 2% de las instalaciones de Velneo 20 en Linux son en 32 bits, la próxima versión funcionará exclusivamente en 64 bits en Linux, lo que nos permite eliminar código vinculado exclusivamente a 32 bits y mejorar el rendimiento de las versiones de 64 bits. Con este cambio tanto macOS como Linux ya habrán completado su migración a 64 bits.
En Windows, dado el gran número de instalaciones en ambas arquitecturas, seguirán estando disponibles los ejecutables en 32 y 64 bits.

Si tienes cualquier duda o consulta sobre como puedan afectarte estos cambios, no dudes en ponerte en contacto con soporte para conocer tu caso en particular.

Este artículo Avances en trabajos para próximas versiones es original de Velneo.

Webinar Velneo 20 y QML 2

El pasado martes 22 de noviembre estuve de “maestro de ceremonias” en un webinar con Jorge Hontoria, en el que nos estuvo contando las novedades sobre QML 2 incluidas en Velneo 20.

Lo primero dar las gracias a los casi 150 inscritos para el webinar y sobre todo a los 70 asistentes que tuvimos en directo.

¿Qué vimos en el webinar sobre QT y QML 2?

Comenzamos el webinar realizando una pequeña introducción sobre QT 5, la plataforma de desarrollo sobre la que está desarrollada Velneo.

Después Jorge nos hizo un repaso de los nuevos componentes incluidos en QML 2:

  • Window
  • Dialogs
  • Controls
  • Layouts
  • Particles

Así como a los nuevos módulos:

  • Positioning
  • Sensoring

Para concluir el webinar, realizamos un primer ejemplo con QML 2 dentro de Velneo 20.

Vídeo del webinar Velneo 20 y QML 2

Por si no tuvisteis ocasión de asistir al webinar en directo, aquí os dejo el vídeo.

¿Y ahora qué?

Hemos organizado un “Seminario QML 2” que tendrá lugar los días 20, 21 y 22 de diciembre de 16 a 19 horas (hora de Madrid).

Tendréis toda la información disponible mañana viernes 25 de noviembre.

Por sugerencia de Jorge, y por si hay alguien interesado en realizar este nuevo seminario, he vuelto a poner a vuestra disposición los cursos online realizados sobre vJavaScript y QML.

En el “Seminario QML 2” no se verá nada de introducción por lo que si estás interesado en apuntarte al seminario, es mas que aconsejable que refresques lo aprendido en los seminarios precedentes.

¿Qué te ha parecido el webinar Velneo 20 y QML 2? 

Déjame un comentario mas abajo y comenzamos el debate.

La entrada Webinar Velneo 20 y QML 2 aparece primero en AyudaVelneo.