GithubHelp home page GithubHelp logo

yio-remote / integrations.library Goto Github PK

View Code? Open in Web Editor NEW
0.0 6.0 6.0 122 KB

๐Ÿ—„ Common include library for integrations

License: GNU General Public License v3.0

Shell 0.07% QMake 8.91% C++ 91.03%
yio

integrations.library's Introduction

Repo is deprecated

This repo is deprecated as efforts are put into Remote Two and its new software. Find more information about it here: www.yio-remote.com The software made for Remote Two, once released, will be available for the DIY YIO Remote.

There won't be any updates to this repo, but it will stay here on GitHub to be forked and used.


YIO Integration Library Repository

For details about the YIO Remote projectes and the integration library, please visit our documentation repository which can be found under https://github.com/YIO-Remote/documentation/wiki.

Integration Library

This integration library contains all required header files to develop YIO integration plugins with Qt C++.
Furthermore, there are shared model classes included to simplify media player integrations and common skeleton classes for plugin development.

This integration library is not a static linked library, but organized as plain Qt Project Include files (.pri). The main reason for this approach is to simplify the build processes and project organization since there are already four platforms which need to be supported (ARM, Linux, macOS, Windows). In the future this might be changed, for the moment we valued the simple setup higher than having static libraries for all platforms.

Project Includes

yio-interface.pri

This include contains all plugin header files required to develop integration plugins. It is the minimal requirement for plugins.

yio-plugin-lib.pri

This includes additional skeleton classes to simplify plugin development.
The yio-interface.pri project is included and doesn't need to be specified anymore.

yio-model-mediaplayer.pri

Shared media player model classes. This is only required for media player integrations.

yio-model-weather.pri

Shared weather model classes. This is only required for weather integrations.

Plugin Project Setup

Environment Setup

To develop a YIO Remote integration plugin this integrations.library project needs to be checked out and made accessible for the plugin project.
We recommend to check out integrations.library on the same level as the plugin project. I.e. the library can be referenced with the default path ../integrations.library.
The only dependency of an integration project is this library. It is the mandatory dependency for plugins as well as the remote-software project.

Example for an imaginary FooBar plugin:

~/projects
โ””โ”€โ”€ yio
    โ”œโ”€โ”€ integration.foobar
    โ”œโ”€โ”€ integrations.library
    โ””โ”€โ”€ remote-software

For other non-standard project setups there's the YIO_SRC environment variable. It needs to be initialized to the base directory of the integrations.library project.

Plugin Project File

Blueprint to include one or more integration Qt project includes into the plugin project:

INTG_LIB_PATH = $$(YIO_SRC)
isEmpty(INTG_LIB_PATH) {
    INTG_LIB_PATH = $$clean_path($$PWD/../integrations.library)
    message("Environment variables YIO_SRC not defined! Using '$$INTG_LIB_PATH' for integrations.library project.")
} else {
    INTG_LIB_PATH = $$(YIO_SRC)/integrations.library
    message("YIO_SRC is set: using '$$INTG_LIB_PATH' for integrations.library project.")
}

! include($$INTG_LIB_PATH/yio-plugin-lib.pri) {
    error( "Cannot find the yio-plugin-lib.pri file!" )
}

integrations.library's People

Contributors

christianriedl avatar jadlers avatar martonborzak avatar miloit avatar nikos1988 avatar zehnm avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.