Giter Site home page Giter Site logo

fotopretty / patternpaint Goto Github PK

View Code? Open in Web Editor NEW

This project forked from blinkinlabs/patternpaint

0.0 2.0 0.0 14.79 MB

Making beautiful light shows is as easy as drawing a picture with Pattern Paint!

Home Page: http://blinkinlabs.com/patternpaint/

License: GNU General Public License v2.0

NSIS 2.46% QMake 2.40% C++ 60.90% Arduino 1.26% C 29.31% Python 0.49% Objective-C++ 0.62% Shell 2.55%

patternpaint's Introduction

PatternPaint

image

Making beautiful light shows is as easy as drawing a picture with PatternPaint! Simply plug in your BlinkyTape, run PatternPaint, and draw away!

User Guide

This is the devlopment guide- For instructions on how to use Pattern Paint, please visit the PatternPaint website: http://blinkinlabs.com/patternpaint

For instructions on how to contribute to Pattern Paint development, read on!

Development

PatternPaint is a cross-platform application, targetting Mac OS X, Windows, and Linux.

We use Github Issues for bug tracking and feature implementation.

Getting started

PatternPaint is written in C++ with QT (5.4.1) libraries. The easiest way to get started is to download QT Creator, and run the project through there.

First download QT Creator 5.4.1.

For OS X:

http://download.qt.io/archive/qt/5.4/5.4.1/qt-opensource-mac-x64-clang-5.4.1.dmg

For Windows:

http://download.qt.io/official_releases/qt/5.4/5.4.1/qt-opensource-windows-x86-mingw491_opengl-5.4.1.exe

For Ubuntu (tested with 14.4):

sudo apt-get install qtcreator libusb-1.0-0-dev

Next, clone the PatternPaint repository:

git clone https://github.com/Blinkinlabs/PatternPaint.git

Finally, open QT creator, then open the project file PatternPaint.pro, which should be located in the PatternPaint subdirectory of the repository.

That's all you should need to do to build and make changes to PatternPaint. If you come up with a cool new feature or add support for a new device, please send a pull request!

License

PatternPaint is licensed under the GPL version 2

Deployment instructions

These are the steps required to build a release version (installer) for PatternPaint. This is for distribution only- for hacking or modifying PatternPaint, only the steps in the above section 'Development' are necessicary.

OS X

Prerequsites

Xcode (for clang compiler and git)

https://itunes.apple.com/us/app/xcode/id497799835?ls=1&mt=12

QT dev environment (Qt 5.4.1 for Mac):

http://download.qt.io/archive/qt/5.4/5.4.1/qt-opensource-mac-x64-clang-5.4.1.dmg

Developer certificate (for signing the application)

  • First, sign up for an Apple developer account and pay up to get the account. Then, in Xcode:
  • xcode->preference->accounts
  • add ID for dev account
  • click ‘view details'
  • click '+' to add ‘developer ID application’ and ‘developer ID Installer’

Building a Pattern Paint Release

Once the prerequsites have been installed, the deployment script can be run:

curl -O https://raw.githubusercontent.com/Blinkinlabs/PatternPaint/master/release_patternpaint_osx.sh
sh ./release_patternpaint_osx.sh

If everything works, it will generate a redistributable disk image 'PatternPaint_X.Y.Z.dmg', where X.Y.Y is the current version of PatternPaint.

Test this file manually on a clean OS X host.

Note: See the script for the spicy details of making a distributable Qt app image for OS X! Note: There might be some temporary file carnage left over after running this. Sorry about that.

Build a release for Windows

Prerequisites

Windows deployment requires the following tools:

Windows:

Windows 7 is used internally, newer versions will likely work as well.

msysgit:

https://git-for-windows.github.io/

Note: be sure to check 'Run Git from the Windows Command Prompt' and 'Checkout Windows-style'.

The QT dev environment (Qt 5.5.1 for Windows 32-bit (MinGW 4.9.2, OpenGL):

http://download.qt.io/official_releases/qt/5.5/5.5.1/qt-opensource-windows-x86-mingw492-5.5.1.exe

NSIS (3.0b2), for generating the installer:

http://nsis.sourceforge.net/Download

Windows SDK (version 10) (for signtool):

https://go.microsoft.com/fwlink/p/?LinkId=619296

Windows Driver Kit (version 10) (for dpinst):

http://go.microsoft.com/fwlink/p/?LinkId=526733

(Optional) Dependency Walker, for tracking down which DLLs need to be included with the release:

http://www.dependencywalker.com/

Certificate setup

The release version of PatternPaint needs to be crypograpically signed. We use a certificate from GlobalSign.

  1. Install the .pfx file for code signing (right click and choose 'Install PFX'). You'll need to purchase your own if you intend to distribute PatternPaint for Windows with a signature.
  2. Install the GlobalSign cross certificate if you are using a GlobalSign certificate (as suggested in David Grayson's guide)

Building a Pattern Paint Release

NOTE: Obtain the GlobalSign file and install the Blinkinlabs Cert before continuing. The GlobalSign file needs to be in the directory the build script is run from.

Start Git bash (start->run->git bash)

curl -O https://raw.githubusercontent.com/Blinkinlabs/PatternPaint/master/release_patternpaint_windows.sh
sh release_patternpaint_windows.sh

If everything works, it will generate an installer executable 'PatternPaint_Installer_X.Y.Z.exe', where X.Y.Y is the current version of PatternPaint.

Test this file manually on clean Windows 7 and 8 hosts.

Linux

Please contact us if you have experience releasing packages for Linux. We're particularly interested in making a release for Debian-based systems. The main requirement is that a fairly recent version of Qt (5.2.1+) is available. There appear to be random bugs with each Qt release on each platform, so some attention needs to be paid to the specific version targeted.

Create a release page on Github

  1. Go to the releases page:

    https://github.com/Blinkinlabs/PatternPaint/releases

  2. Click 'Draft a new release' to start a new release

  3. Take a cool screenshot demonstrating the new features

  4. Write a description of the changes

  5. Upload the OS X and Windows distribution files from above

  6. Pause and reflect on these changes

  7. Click publish to make the release official

  8. Tweet about it and maybe a blog post?

Update the website

The PatternPaint page at blinkinlabs.com contains links to the latest releases. Update those! The page is:

http://blinkinlabs.com/patternpaint

Update the appcast files

PatternPaint uses Sparkle and WinSparkle to notify PatternPaint users of new releases, and allow them to upgrade automatically. PattternPaint installs regularly check for updates by querying an XML file on the Blinkinlabs server. There are two files, one for OS X releases and one for Windows releases.

TODO: Script to autmate this procedure

  1. Create a new <item> entry to describe the release. Most of the details can be scraped from the Github releases page. A sample one looks like this:

     <item>	
         <title>PatternPaint 1.8.0</title>        
         <pubDate>Mon, 27 Jul 2015 8:32:00 +0000</pubDate>        
         <description>
           <![CDATA[
     <b>Introducing PatternPaint 1.8! This is a big one- now you can store multiple animations on your BlinkyTape at once!<b>
     <br>Changelog:<br>
     <ul>
     <li>New slideshow editor to load and manage multiple patterns</li>
     <li>Upload multiple patterns to your BlinkyTape (BlinkyTile and BlinkyPendant coming soon)</li>
     <li>Drag and drop support for loading animations directly from your file manager or favorite program</li>
     <li>Automatically checks for new versions (using Sparkle and WinSparkle)</li>
     <li>Mac: Appnap automatically disabled</li>
     </ul>
           ]]>
         </description>
         <enclosure url="https://github.com/Blinkinlabs/PatternPaint/releases/download/1.8.0/PatternPaint_1.8.0.dmg"
           sparkle:version="1.8.0"
           length="13321443"
           type="application/octet-stream"
         />
       </item>
       
     <item>	
         <title>PatternPaint 1.8.0</title>        
         <pubDate>Mon, 27 Jul 2015 8:32:00 +0000</pubDate>        
         <description>
           <![CDATA[
     <b>Introducing PatternPaint 1.8! This is a big one- now you can store multiple animations on your BlinkyTape at once!<b>
     <br>Changelog:<br>
     <ul>
     <li>New slideshow editor to load and manage multiple patterns</li>
     <li>Upload multiple patterns to your BlinkyTape (BlinkyTile and BlinkyPendant coming soon)</li>
     <li>Drag and drop support for loading animations directly from your file manager or favorite program</li>
     <li>Automatically checks for new versions (using Sparkle and WinSparkle)</li>
     <li>Mac: Appnap automatically disabled</li>
     </ul>
           ]]>
         </description>
         <enclosure url="https://github.com/Blinkinlabs/PatternPaint/releases/download/1.8.0/PatternPaint_Installer_1.8.0.exe"
           sparkle:version="1.8.0"
           length="25551480"
           type="application/octet-stream"
         />
       </item>
       
  2. The description and features should (probably) be the same for both OS X and Windows, so they can be created once and then copied into both files. The file links and lengths will need to be modified independently.

  3. TODO: Test locally?

  4. Check the appcast files into Github. Then the server can pull them from Github.

  5. Upload the updated files to the Blinkinlabs server.

patternpaint's People

Contributors

cibomahto avatar a-pavlov avatar jravetch avatar

Watchers

James Cloos avatar Voravit Euavatanakorn 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.