Karya, built on 2018-02-23T20:23:55 (patch cf8565b7ac832266878af99a942555d139065f12)

Safe Haskell None

App.Config

Description

Global static app defaults.

# Documentation

type SelNum = Int Source #

This is Num, but duplicated here to avoid the import.

data Platform Source #

Constructors

 Mac Linux

Instances

 # Methods # MethodsshowList :: [Platform] -> ShowS #

# paths

newtype RelativePath Source #

Paths which are intended to be relative to the app dir get this type, so it's harder to accidentally use them directly.

Constructors

 RelativePath FilePath

Instances

 # MethodsshowList :: [RelativePath] -> ShowS # # Methods

All paths should be relative to this one. I may later change this to an env var, a flag, or just leave it hardcoded.

All code and data local to an installation (i.e. specific to a particular configuration) should go here.

These directories are searched for ky files containing local definitions. The directory of the saved score is prepended to the list.

Store instrument db code and data.

Directory for instruments with slow patch loading to save their caches. This should be below instrument_dir.

Saved scores are expected to be relative to this directory.

# status view

## per-view

Control value, if this is a control track.

Selection start and range.

Selected TrackId.

Zoom and scroll of the visible area.

## per block

Base octave of the kbd note entry.

Current time step.

Various record flags. Most are reflected in the color of the edit box, but the secondary ones go here.

Text of the last note, even if it didn't create an event. Useful to know what a key would enter.

Track state_note_text, which is the previously entered note track text. This is useful e.g. to set an attribute and maintain that for several notes in a row.

Show the source block for blocks integrated from another block.

# repl

Unix socket to listen on for repl requests.

PortID version of repl_port. The clients use filenames so they rely on this being a unix socket.

# input

This is the primary mouse button, used to set the insertion selection.

# selnums

The insertion selection is what just about all Cmds should look at to know where to apply any score changes they are supposed to make. Generally if a Cmd doesn't have specific BlockId, TrackId, and ScoreTime arguments, it probably defaults to the insert_selnum.

Temporary insert point, to indicate insert position when it's not the insert_selnum.

Highlight errors. I use insert_selnum for this nowadays, so it's probably unused. logview when you click on a stack trace.

Display current Cmd.StepPlay position.

Display current play position, managed by play monitor thread.

Display Color.Highlights. This has many possible colors.

The most number of SelNums that will be used. The only reason this needs a constant is so refresh_selections can emit updates for all selections.

Colors that come from a SelNum.

# colors

Colors indicate if state_advance is set.

Colors indicate if state_advance is set.

Set when playing.

Default color for the block status line background.

Color for the status of the root block.

Color for the status of a block integrated from another block.

Like status_integrate_destination, but for score integration.

Color of the skeleton lines.

Color of lines indicating an integrate dependency.

Color of lines indicating a score integrate dependency.

# defaults

The background derive threads will wait this many seconds before starting up, to avoid working too hard during an edit.

Keep this many past history entries for undo. Beyond this entries will have to be loaded from disk.

Default scale id for new projects. It's a string so I don't have import anything.

Default range for input devices (e.g. MIDI keyboards).

view_size :: (Int, Int) Source #

Default size of new views.

Create new views at this zoom.

Default width for the block ruler track.

Default width for new tracks. This should just fit common control track contents, e.g. e (4f#).

Width of the divider that represents a collapsed track.

Default color for the track signal, as rendered in the track UI.

The default namespace for the clipboard. Copies go to block + tracks in this namespace.

The copied block will be BlockId (Id.id clip_namespace clip_block_name).

# hardcoded configs

Default contents of track and sb boxes.

## fiddly pixel bits

This is the number of pixels taken up by the various gizmos in the window track beyond the main track view. It's only correct when the window is first created, since various widgets can be dragged around.

How many pixels the window bar consumes above the window. This is needed because to place windows I need an accurate idea of their dimensions. I can wait to get the resized msg back from fltk, but that's too late if if I want to change the size of a window and do something (e.g. zoom) based on the new size.

TODO I should actually be getting this from fltk but it's easier to hardcode for now. But I need a window, since it comes from Fl_Window::decorated_h() - Fl_Window::h(). However I can't assume that linux will have 0.

# event style

Like Symbols, these are sent to the UI layer at startup and then remain static.

data Style Source #

Constructors

 Default Control Pitch Parent Error

Instances

 # Methodssucc :: Style -> Style #pred :: Style -> Style #toEnum :: Int -> Style #enumFrom :: Style -> [Style] #enumFromThen :: Style -> Style -> [Style] #enumFromTo :: Style -> Style -> [Style] #enumFromThenTo :: Style -> Style -> Style -> [Style] # # MethodsshowsPrec :: Int -> Style -> ShowS #showList :: [Style] -> ShowS #

Events on note tracks.

Events on control tracks.

Events on pitch tracks

A note track with tracks below it.

Parse errors.

Indicates that this event was integrated from somewhere else.

Indicates that this integrated event has not yet been modified.

Indicates that this integrated event was modified after integration.