Developer documentation

The subpages of this section of the wiki describe specific aspects of updating the GUI source code.

Here's an overview of what you'll find in our GitHub repository:

Home folder

  • README.rst - reStructuredText file with a brief introduction to the GUI, along with installation instructions
  • license.txt - GPL v3.0 license file
  • .gitignore - lists the files and folders Git shouldn't track; for example, binaries in the build/ folder that shouldn't be uploaded to the repository
  • astyle.options - used to automatically enforce style conventions. See Coding standards for more info.
  • open-ephys.jucer - the file loaded into the "Introjucer" that defines how the GUI should be compiled. IMPORTANT: Makefiles are auto-generated by the Introjucer, so if you want to add files, delete files, or change the compiler flags, you must do it through the Introjucer, available in the Introjucer/ folder.

Source folder

  • Main and MainWindow files
  • Plugins folder - Code for all core plugins
  • Processors folder
    • All of the individual data processing modules hardcoded in the GUI
    • DataThreads folder - source code for threads that interface with external inputs
    • Editors folder - source code for processor base editors
    • Utilities folder - source code for splitters and mergers
    • Visualization folder - the base source code for visualizers
  • UI folder - source code for user-interface classes
  • Network folder - network-related code
  • Dsp folder - code from the Digital signal processing library
  • Audio folder - code for interfacing with the system audio

JuceLibraryCode folder

  • Header files included by almost all of the GUI source code
  • modules folder - contains the entire Juce source code, with some important modifications
  • BinaryData files - contain raw data used by the application (auto-generated by the Introjucer)

Introjucer folder

  • Contains source code and project files for building the Introjucer

Resources folder

  • Images used by the application
  • Fonts used by the application
  • DataFiles that can be used with the File Reader processor
  • Fonts used by the application
  • DLLs used by the application
  • Scripts and other useful configuration tools
  • Bitfiles to load onto an FPGA

Any new resources must be added to the these folders AND referenced within the Introjucer application. For fonts used by Juce components, you need to serialize the fonts using the Font Serializer application found here.

Builds folder

  • Build files for the main application are generated by Projucer
  • Build files for plugins should be made according to  Plugin build files
  • holds the Linux Makefile, Xcode project, and project files for Visual Studio 2012, 2013, and 2015
  • Check out the Linux, macOS, and Windows wiki pages for issues with compiling the GUI on different platforms.