Codebase list supercollider / f88d706
Imported Upstream version 3.6.3~repack Dan Stowell 11 years ago
241 changed file(s) with 6024 addition(s) and 2807 deletion(s). Raw diff Collapse all Expand all
147147 option(SSE42 "Compile with support for SSE4.2 instructions.")
148148
149149 set(AUDIOAPI "default" CACHE STRING "Audio API to use (one of {default,coreaudio,jack,portaudio})")
150 option(LIBSCSYNTH "Compile libscsynth as shared library" OFF)
150
151 if(NOT WIN32)
152 option(LIBSCSYNTH "Compile libscsynth as shared library" OFF)
153 else()
154 # libscsynth has unresolved symbols, which are resolved when linked with server executable.
155 # On Windows, this is not supported for static libraries, so we build dynamic by default.
156 option(LIBSCSYNTH "Compile libscsynth as shared library" ON)
157 endif()
151158
152159 option(INSTALL_HELP "Install help docs and examples along with the software" ON)
153160 option(SC_DOC_RENDER "Pre-render SCDoc documentation. (For putting online, etc)" OFF)
166173 option(GC_SANITYCHECK "Enable sanity checks in the sclang garbage collector.")
167174
168175 option(NO_LIBSNDFILE "Disable soundfile functionality. (Not recommended.)" OFF)
169
170176 option(NO_AVAHI "Disable Avahi support. (Not recommended.)" OFF)
177 option(NO_GPL3 "Disable GPL3 code, for pure-GPL2 situations. (Not recommended.)" OFF)
171178
172179 option(SCLANG_SERVER "Build with internal server." ON)
173180
179186 if (SC_QT)
180187 message( STATUS "Compiling with Qt GUI" )
181188 endif (SC_QT)
182
183 if(WIN32)
184 option(SC_WIN_DEP_DIRS
185 "A list of directories where dependencies will be searched for when packaging.")
186 endif()
187189
188190 if(CMAKE_COMPILER_IS_GNUCXX)
189191 option(NATIVE "Optimize binary for this architecture (binaries may not run on other machines, requires gcc-4.3 or higher).")
284286 add_definitions(-DDISABLE_MEMORY_POOLS)
285287 endif()
286288
289 if(MINGW)
290 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mstackrealign")
291 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mstackrealign")
292 endif()
293
294 if (NO_GPL3)
295 add_definitions(-DNO_GPL3)
296 endif()
297
287298 #############################################
288299 # subdirectories
289300 add_subdirectory(external_libraries)
292303 set(YAMLCPP_LIBRARY yaml)
293304 set(YAMLCPP_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/external_libraries/yaml-cpp-0.3.0/include)
294305 endif()
306
307
308 configure_file(common/SC_Version.hpp.in common/SC_Version.hpp)
309 include_directories(${CMAKE_CURRENT_BINARY_DIR}/common)
295310
296311 add_subdirectory(server)
297312 add_subdirectory(lang)
384399 PATTERN "*#" EXCLUDE
385400 )
386401 endif()
387
388 configure_file(platform/SCVersion.sc.in SCVersion/SCVersion.sc)
389 install(DIRECTORY "${CMAKE_BINARY_DIR}/SCVersion" DESTINATION "${auxresourcesdir}/SCClassLibrary")
390402
391403 install(DIRECTORY sounds
392404 DESTINATION ${auxresourcesdir}
1919
2020 compare:
2121 code::
22 { BrownNoise.ar(0.5) }.play;
23 { WhiteNoise.ar(0.5) }.play;
22 { BrownNoise.ar(0.1) }.play;
23 { WhiteNoise.ar(0.1) }.play;
2424 ::
2525
2626 brownian noise as a frequency modulator:
3232 code::
3333 { BPF.ar(BrownNoise.ar(0.1.dup), MouseX.kr(40, 17000, 1), 0.2) }.play;
3434 ::
35
100100 subsection:: Asynchronous Control Bus Methods
101101
102102 The following commands apply only to control buses and are asynchronous. For synchronous access to control busses please
103 consult link::Classes/Bus#synchronous_control_bus_methods::.
103 consult link::#Synchronous control bus methods::.
104104
105105 method:: value
106106 Set all channels to this float value. This command is asynchronous.
1111
1212 strong::DragBoth::, specifically, strong::accepts any:: dropped data and stores it into the strong::-object:: variable, as well as gives that variable as data strong::for dragging::.
1313
14 See: link::Classes/View#drag_and_drop:: for a general description of the drag and drop mechanism.
14 See: link::Classes/View#Drag and drop:: for a general description of the drag and drop mechanism.
1515
1616
1717
1111
1212 strong::DragSink::, specifically, strong::accepts any:: dropped data and stores it into the strong::-object:: variable, but allows strong::no dragging::.
1313
14 See: link::Classes/View#drag_and_drop:: for a general description of the drag and drop mechanism.
14 See: link::Classes/View#Drag and drop:: for a general description of the drag and drop mechanism.
1515
1616
1717
1111
1212 strong::DragSource::, specifically, gives the strong::-object:: variable as the data strong::for dragging::, but strong::accepts no drop::.
1313
14 See: link::Classes/View#drag_and_drop:: for a general description of the drag and drop mechanism.
14 See: link::Classes/View#Drag and drop:: for a general description of the drag and drop mechanism.
1515
1616
1717
439439 (e.g. Env.adsr, Env.asr), the envelope is held open until the
440440 gate becomes 0, at which point is released.
441441
442 If strong::gate:: < 0, force release with time code:: -1.0 - gate ::, see link::#forced_release:: below.
442 If strong::gate:: < 0, force release with time code:: -1.0 - gate ::. See link::Classes/EnvGen#Forced release:: example.
443443
444444
445445 argument::timeScale
3838 (e.g. Env.adsr, Env.asr), the envelope is held open until the
3939 gate becomes 0, at which point is released.
4040
41 If strong::gate:: < 0, force release with time code:: -1.0 - gate ::, see link::#forced_release:: below.
41 If strong::gate:: < 0, force release with time code:: -1.0 - gate ::. See link::#Forced release:: below.
4242
4343 argument::levelScale
4444
140140 argument:: connections
141141 An Array of Integers - indexes of nodes, each to become the second end to a new connection created.
142142
143 METHOD:: selection
144 note::Only in Qt GUI::
145 Returns an array of indexes of all selected nodes.
143146
144147
145148 SUBSECTION:: Appearance
4848
4949 You can make an item span more than one cell by wrapping it into an Array, followed by pairs of (\rows, number) and/or (\columns, number). You can also assign an alignment to an item by following it with a pair of (\align, alignment). \rows, \columns, and \align can be abbreviated with \r, \c, and \a, respectively.
5050
51 The simplified syntax for placing key-value pairs into an array comes handy (see link::Reference/Syntax-Shortcuts#creating_arrays_with_key-value_pairs::, and the example below).
51 The simplified syntax for placing key-value pairs into an array comes handy (see link::Reference/Syntax-Shortcuts#Creating Arrays with key-value pairs::, and the example below).
5252
5353 Example:
5454 Code::
88 etc.), a single impulse trigger will be generated. Its amplitude is the
99 value that the bus was set to.
1010
11 If the bus is set link::Classes/Bus#synchronous_control_bus_methods#synchrounosly:: no trigger will be generated.
11 If the bus is set link::Classes/Bus#Synchronous control bus methods#synchronously:: no trigger will be generated.
1212
1313
1414 classmethods::
1515
1616 This triggers the envelope and holds it open while > 0.
1717
18 If strong::gate:: < 0, force release with time code:: -1.0 - gate ::, see link::Classes/EnvGen#forced_release::.
18 If strong::gate:: < 0, force release with time code:: -1.0 - gate ::. See link::Classes/EnvGen#Forced release::.
1919
2020 argument::attackTime
2121
4040 METHOD:: valueAction
4141 Sets link::#-value:: and triggers the link::#-action::.
4242
43 METHOD:: selection
44 note::Only in Qt GUI::
45 Returns an array of all selected indexes. See also: link::#-selectionMode::.
4346
4447
4548 SUBSECTION:: Appearance
8989 (a <> (type: \midi, midiout: m)).play;
9090 ::
9191
92 See link::Tutorials/A-Practical-Guide/PG_08_Event_Types_and_Parameters#midi_output#PG_08_Event_Types_and_Parameters: MIDI Output:: for a list of midi commands supported by the 'midi' event type.
92 See link::Tutorials/A-Practical-Guide/PG_08_Event_Types_and_Parameters#MIDI output:: for a list of midi commands supported by the 'midi' event type.
9393
9494 subsection::Linux specific: Connecting and disconnecting ports
9595
148148
149149 NodeProxy keeps a number of slots which can be sources and are mixed on the same bus.. The default source is the slot 0. All objects can be exchanged while running, and also before and after. Normally, the source is active immediately. If sources are to be exchanged "quietly", set the node proxy to sleep (awake = false), or use the message prime().
150150
151 See the list under section link::#supported_sources::
151 See the list under section link::#Supported sources::
152152
153153 method::source
154154 Play a new synth through proxy and release/remove any old ones.
155155
156156 argument::obj
157 can be one of the supported inputs (see link::#supported_sources::)
157 can be one of the supported inputs (see link::#Supported sources::)
158158
159159 method::prime
160160 Set source without starting the synth. To start it, link::#-send:: can be used later. Running synths are released and proxy is initialized if still neutral.
175175 where the object should be placed in the internal order. if code::-1::, all objects are freed
176176
177177 argument::obj
178 A valid source (see link::#supported_sources::).
178 A valid source (see link::#Supported sources::).
179179
180180 argument::channelOffset
181181 using a multichannel setup it can be useful to set this, when the objects numChannels is smaller than the proxy
77 Pbind combines several value streams into one event stream. Each value stream is assigned to one or more keys in the resulting event stream. It specifies a stream of strong::Events:: in terms of different patterns that are strong::bound:: to different keys in the Event.
88 The patterns bound to keys are referred to as emphasis::value patterns:: and the Pbind itself is termed an event pattern.
99
10 The keys used in a Pbind are usually determined by link::Classes/Event::'s default mechanism and the controls defined for the link::Classes/SynthDef:: to be played. (See link::#synthdef_and_event:: below for a brief discussion of both in relation to Pbind.)
10 The keys used in a Pbind are usually determined by link::Classes/Event::'s default mechanism and the controls defined for the link::Classes/SynthDef:: to be played. (See link::#SynthDef and Event:: below for a brief discussion of both in relation to Pbind.)
1111
1212 ClassMethods::
1313
502502 Discard any previous path.
503503
504504 method:: beginTransparencyLayer
505 Begins a new transparency layer. Transparency layers are useful when you want to apply an effect to a group of objects or create a composite graphic. See link::#transparency_layer_example:: for an example.
505 Begins a new transparency layer. Transparency layers are useful when you want to apply an effect to a group of objects or create a composite graphic. See link::#Transparency layer example::.
506506
507507 method:: endTransparencyLayer
508508 Ends the current transparency layer.
622622
623623 method:: blendMode
624624 Set the blending mode to use.
625 See link::#blending_modes:: for more information.
625 See link::#Blending modes:: for more information.
626626
627627 method:: lineDash
628628 Set the line dash pattern.
3030
3131 discussion::
3232
33 You can assign a strong::stretch factor:: and/or strong::alignment:: to an item by wrapping it into an array, followed by pairs of ('stretch', factor) and/or ('align', flag). 'stretch' and 'align' may be abbreviated with 's' and 'a'. Simplified syntax for placing key-value pairs into an array comes handy (see link::Reference/Syntax-Shortcuts#creating_arrays_with_key-value_pairs::, and the example below).
33 You can assign a strong::stretch factor:: and/or strong::alignment:: to an item by wrapping it into an array, followed by pairs of ('stretch', factor) and/or ('align', flag). 'stretch' and 'align' may be abbreviated with 's' and 'a'. Simplified syntax for placing key-value pairs into an array comes handy (see link::Reference/Syntax-Shortcuts#Creating arrays with key-value pairs::, and the example below).
3434
3535 If the item is a stretchable empty space (nil) alignment will have no effect; if the item is a fixed-size empty space (an Integer), it is unaffected by both the stretch factor and alignment.
3636
4242 value.
4343
4444 argument:: doneAction
45 an integer representing an action to be executed when the buffer is finished playing. This can be used to free the enclosing synth, etc. See link::Reference/UGen-doneActions:: for more detail. code::doneAction:: is only evaluated if loop is 0.
45 an integer representing an action to be executed when the buffer is finished recording. This can be used to free the enclosing synth, etc. See link::Reference/UGen-doneActions:: for more detail. code::doneAction:: is only evaluated if loop is 0.
4646
4747 Examples::
4848
4242
4343 The difference between the two is that the local server runs as a separate application with its own address space, and the internal server runs within the same space as the language/client app.
4444
45 Both local and internal server supports link::#-scope#scoping:: and link::Classes/Bus#synchronous_control_bus_methods#synchronous bus access::.
45 Both local and internal server supports link::#-scope#scoping:: and link::Classes/Bus#Synchronous control bus methods#synchronous bus access::.
4646
4747 The local server, and any other server apps running on your local machine, have the advantage that if the language app crashes, it (and thus possibly your piece) will continue to run. It is thus an inherently more robust arrangement. But note that even if the synths on the server continue to run, any language-side sequencing and control will terminate if the language app crashes.
4848
293293 Get process ID of running server (if not internal).
294294
295295 method:: hasShmInterface
296 Returns true if a link::Classes/ServerShmInterface:: is available. See also link::Classes/Bus#synchronous_control_bus_methods#Synchronous Control Bus Methods::.
296 Returns true if a link::Classes/ServerShmInterface:: is available. See also link::Classes/Bus#Synchronous control bus methods::.
297297 discussion::
298298 The shared memory interface is initialized after first server boot.
299299
451451 ::
452452
453453 method::split
454 Returns an Array of Strings split at the separator. The separator is a link::Classes/Char::, a link::Classes/String::, or anything that can be converted into a string. It is strong::not:: included in the output array. The default separator is $/, handy for Unix paths.
455 code::
454 Returns an Array of Strings split at the separator. The separator is a link::Classes/Char::, and is strong::not:: included in the output array.
455 code::
456 "These are several words".split($ );
457
458 // The default separator $/ is handy for Unix paths.
456459 "This/could/be/a/Unix/path".split;
457 "These are several words".split($ );
458 "These are several words".split(" ");
459 "accgcagcttag".split("gc");
460460 ::
461461
462462 subsection:: Stream support
185185 (optional) The metadata plug-in class that will be used to persist metadata. If not supplied, the default plug-in is used. See the SynthDesc help file for details.
186186
187187
188 method:: memStore
189 This method has been deprecated, use add instead.
190
191188 method:: play
192189 A convenience method which compiles the def and sends it to target's server. When this asynchronous command is completed, it create one synth from this definition, using the argument values specified in the Array args. For a list of valid addActions see link::Classes/Synth::. The default is \addToHead.
193190 Returns:: a corresponding Synth object.
188188
189189 SUBSECTION:: Drag and Drop
190190
191 note:: Default drag-and-drop behavior of TextView is not defined in standard SC methods (see link::Classes/View#subclassing::), but in the view implementation instead (except for link::#-defaultGetDrag:: in Qt GUI). It may or may not be overridable by adding your own handlers (see link::Classes/View#drag_and_drop::), depending on the GUI kit in use.
191 note:: Default drag-and-drop behavior of TextView is not defined in standard SC methods (see link::Classes/View#subclassing::), but in the view implementation instead (except for link::#-defaultGetDrag:: in Qt GUI). It may or may not be overridable by adding your own handlers (see link::Classes/View#Drag and drop::), depending on the GUI kit in use.
192192 ::
193193
194194 Dragging from TextView will give the selected text in a String as drag data, while dropping will accept any object and insert it link::Classes/Object#-asString#as String:: at the drop location.
1212
1313 This class offers convenient mechanisms for creating animations, that is, to automatically redraw itself in regular time intervals. See the link::#animation#Animation:: section of this document.
1414
15 For a guide to using this view, see the link::Guides/GUI-Introduction.html#custom_views#Custom Views:: section of the 'Introduction to GUI'. For a tutorial on how to write a emphasis::subclass:: of UserView to make your own custom view classes, see the link::Guides/UserView-Subclassing:: guide.
15 For a guide to using this view, see link::Guides/GUI-Introduction#Custom views::. For a tutorial on how to write a emphasis::subclass:: of UserView to make your own custom view classes, see the link::Guides/UserView-Subclassing:: guide.
1616
1717
1818
108108
109109 SUBSECTION:: Actions
110110
111 The UserView by itself does not respond to any interaction by the user. You can define the modes of interaction entirely on your own using mouse and keyboard actions. See link::Guides/GUI-Introduction#actions_and_hooks:_make_that_button_do_something!#Actions and Hooks:: section of the 'Introduction to GUI' for detailed explanation.
111 The UserView by itself does not respond to any interaction by the user. You can define the modes of interaction entirely on your own using mouse and keyboard actions. See link::Guides/GUI-Introduction#Actions and hooks: make that button do something!#Actions and Hooks:: for detailed explanation.
112112
113113 Note that there is no default mode of interaction with the UserView, so link::Classes/View#-action:: will never be triggered, if you don't implement that yourself.
114114
115115 EXAMPLES::
116116
117 'Introduction to GUI' contains an link::Guides/GUI-Introduction#custom_views#example:: with elaborate explanation on how to use UserView. Below are further examples.
117 'Introduction to GUI' contains an link::Guides/GUI-Introduction#Custom views#example:: with elaborate explanation on how to use UserView. Below are further examples.
118118
119119 For a tutorial on how to write a emphasis::subclass:: of UserView to make your own custom view classes, see the link::Guides/UserView-Subclassing:: guide.
120120
170170
171171 SUBSECTION:: Responding to mouse clicks and movement
172172
173 Using the link:: Classes/View#mouse_actions#mouse actions :: you can make UserView change the way it is drawn in response to mouse interaction. The sequence of examples below will guide you through the various possibilities.
173 Using link::Classes/View#Mouse actions#mouse actions:: you can make UserView change the way it is drawn in response to mouse interaction. The sequence of examples below will guide you through the various possibilities.
174174
175175 Clicking and moving the mouse on each of the painted squares in the following example will redraw them differently. See interpreter output for posted information that you can use in the mouse actions.
176176
517517 METHOD:: mouseDownAction
518518 The object to be evaluated when a mouse button is pressed on the view.
519519
520 The following arguments are passed at evaluation: strong::view, x, y, modifiers, buttonNumber, clickCount::.
520 The following arguments are passed at evaluation: strong::view, x, y, modifiers, buttonNumber, clickCount::. See link::#Mouse actions:: for explanation of arguments.
521521
522522 The return value of evaluation controls the event propagation to parent view. See link::#Key and mouse event processing:: for details.
523523
524524 METHOD:: mouseUpAction
525525 The object to be evaluated when a mouse button is released after it was pressed on the view.
526526
527 The following arguments are passed at evaluation: strong::view, x, y, modifiers::.
527 The following arguments are passed at evaluation: strong::view, x, y, modifiers::. See link::#Mouse actions:: for explanation of arguments.
528528
529529 The return value of evaluation controls the event propagation to parent view. See link::#Key and mouse event processing:: for details.
530530
531531 METHOD:: mouseMoveAction
532532 The object to be evaluated whenever the mouse pointer moves after a mouse button was pressed on the view.
533533
534 The following arguments are passed at evaluation: strong::view, x, y, modifiers::.
534 The following arguments are passed at evaluation: strong::view, x, y, modifiers::. See link::#Mouse actions:: for explanation of arguments.
535535
536536 The return value of evaluation controls the event propagation to parent view. See link::#Key and mouse event processing:: for details.
537537
538538 METHOD:: mouseOverAction
539539 The object to be evaluated when the mouse pointer moves over the view with no mouse buttons pressed.
540540
541 The following arguments are passed at evaluation: strong::view, x, y::.
541 The following arguments are passed at evaluation: strong::view, x, y::. See link::#Mouse actions:: for explanation of arguments.
542542
543543 The object is evaluated only when link::Classes/Window#-acceptsMouseOver:: of the containing Window (or, in Qt, link::#-acceptsMouseOver:: of the top View) is code::true::.
544544
549549
550550 The object to be evaluated when the mouse wheel is used while the mouse is pointing onto the view.
551551
552 The following arguments are passed at evaluation: strong::view, x, y, modifiers, xDelta, yDelta::.
552 The following arguments are passed at evaluation: strong::view, x, y, modifiers, xDelta, yDelta::. See link::#Mouse actions:: for explanation of arguments.
553553
554554 The xDelta and yDelta arguments express rotation in horizontal and vertical direction, respectively. The value is in degrees (typically, an event occurs every 15 degrees), and can be positive or negative, depending on the direction of rotation.
555555
560560
561561 The object to be evaluated when the mouse pointer enters the view.
562562
563 The following arguments are passed at evaluation: strong::view, x, y::.
563 The following arguments are passed at evaluation: strong::view, x, y::. See link::#Mouse actions:: for explanation of arguments.
564564
565565 METHOD:: mouseLeaveAction
566566 note:: strong:: Only in Qt GUI :: ::
567567
568568 The object to be evaluated when the mouse pointer leaves the view.
569569
570 The following arguments are passed at evaluation: strong::view, x, y::.
570 The following arguments are passed at evaluation: strong::view, x, y::. See link::#Mouse actions:: for explanation of arguments.
571571
572572
573573 SUBSECTION:: Key actions
590590 ## strong::unicode:: - The Integer unicode number associated with the 'char' passed.
591591
592592 ## strong::keycode:: - The hardware dependent keycode indicating the physical key. This will vary from machine to machine, but is useful for building musical interfaces using the computer keyboard. warning::Function key modifier in combination with another key may change the latter's keycode.::
593
594 ## strong::key:: - In Qt GUI, an Integer denoting a key, corresponding to the "Key" enum of the Qt C++ API. Comparing this value is the most reliable way to check which key was pressed. For a list of possible values, see: link::http://qt-project.org/doc/qt-4.8/qt.html#Key-enum::.
593595 ::
594596
595597 note::
606608 METHOD:: keyDownAction
607609 The object to be evaluated when a key is pressed.
608610
609 The following arguments are passed at evaluation: strong::view, char, modifiers, unicode, keycode::.
611 The following arguments are passed at evaluation: strong::view, char, modifiers, unicode, keycode, key::. See link::#Key actions:: for explanation of arguments. Note that they 'key' argument is only passed in Qt GUI.
610612
611613 The return value of evaluation controls the event propagation to parent view. See link::#Key and mouse event processing:: for details.
612614
615617 METHOD:: keyUpAction
616618 The object to be evaluated when a key is released.
617619
618 The following arguments are passed at evaluation: strong::view, char, modifiers, unicode, keycode::.
620 The following arguments are passed at evaluation: strong::view, char, modifiers, unicode, keycode, key::. See link::#Key actions:: for explanation of arguments. Note that they 'key' argument is only passed in Qt GUI.
619621
620622 The return value of evaluation controls the event propagation to parent view. See link::#Key and mouse event processing:: for details.
621623
709711
710712 The method called when a key is pressed and link::#-keyDownAction:: is nil. Subclass it to define your own functionality on key presses.
711713
712 See link::#key_actions#Key actions :: for explanation of arguments.
714 See link::#Key actions:: for explanation of arguments.
713715
714716 The return value controls the event propagation to parent view. See link::#Key and mouse event processing:: for details.
715717
717719
718720 The method called when a key is released and link::#-keyUpAction:: is nil. Subclass it to define your own functionality on key-release.
719721
720 See link::#key_actions#Key actions :: for explanation of arguments.
722 See link::#Key actions:: for explanation of arguments.
721723
722724 The return value controls the event propagation to parent view. See link::#Key and mouse event processing:: for details.
723725
726728 Handles response to a key press event. First evaluates link::#*globalKeyDownAction::, then calls link::#-handleKeyDownBubbling::.
727729
728730 note::
729 In Qt GUI, instead of calling link::#-handleKeyDownBubbling::, this method directly triggers the action and returns, forwarding the action's return value. See link::#key_actions#Key Actions :: for detailed explanation.
731 In Qt GUI, instead of calling link::#-handleKeyDownBubbling::, this method directly triggers the action and returns, forwarding the action's return value. See link::#Key actions:: for detailed explanation.
730732 ::
731733
732 See link::#key_actions#Key actions :: for explanation of arguments.
734 See link::#Key actions:: for explanation of arguments.
733735
734736 returns:: strong:: Only in Qt GUI: :: A Boolean, stating whether the event was handled or not (and will not or will propagate to the parent view, respectively), or the view, in which case it lets the Qt view implementation handle the event.
735737
738740 Handles response to a key release event. Sets link::#-keyTyped:: to 'char', evaluates link::#*globalKeyUpAction::, and then calls link::#-handleKeyUpBubbling::.
739741
740742 note::
741 In Qt GUI, instead of calling link::#-handleKeyUpBubbling::, this method directly triggers the action and returns, forwarding the action's return value. See link::#key_actions#Key Actions :: for detailed explanation.
743 In Qt GUI, instead of calling link::#-handleKeyUpBubbling::, this method directly triggers the action and returns, forwarding the action's return value. See link::#Key actions:: for detailed explanation.
742744 ::
743745
744 See link::#key_actions#Key actions :: for explanation of arguments.
746 See link::#Key actions:: for explanation of arguments.
745747
746748 returns:: strong:: Only in Qt GUI: :: A Boolean, stating whether the event was handled or not (and will not or will propagate to the parent view, respectively), or the view, in which case it lets the Qt view implementation handle the event.
747749
752754 In Qt GUI, instead of calling link::#-handleKeyModifiersChangedBubbling::, a modifier key press or release event also produces a normal key press or release event, and it is the handling of those events that will determine propagation to the parent.
753755 ::
754756
755 See link::#key_actions#Key actions :: for explanation of arguments.
757 See link::#Key actions:: for explanation of arguments.
756758
757759 METHOD:: handleKeyDownBubbling
758760 note:: Only in Cocoa and SwingOSC GUI ::
775777 METHOD:: mouseDown
776778 Handles response to a mouse button press event. Evaluates link::#-mouseDownAction::.
777779
778 See link::#mouse_actions#Mouse actions :: for explanation of arguments.
780 See link::#Mouse actions:: for explanation of arguments.
779781
780782 METHOD:: mouseUp
781783 Handles response to a mouse button release event. Evaluates link::#-mouseDownAction::.
782784
783 See link::#mouse_actions#Mouse actions :: for explanation of arguments.
785 See link::#Mouse actions:: for explanation of arguments.
784786
785787 METHOD:: mouseMove
786788 Handles response to mouse pointer moving after a mouse button has been pressed on the view. Evaluates link::#-mouseMoveAction::.
787789
788 See link::#mouse_actions#Mouse actions :: for explanation of arguments.
790 See link::#Mouse actions:: for explanation of arguments.
789791
790792 METHOD:: mouseOver
791793 Handles response to mouse pointer moving over the view with no mouse buttons pressed. Evaluates link::#-mouseOverAction::.
792794
793795 This method is called only if link::Classes/Window#-acceptsMouseOver:: of the containing Window (or, in Qt, link::#-acceptsMouseOver:: of the top View) is code::true::.
794796
795 See link::#mouse_actions#Mouse actions :: for explanation of arguments.
797 See link::#Mouse actions:: for explanation of arguments.
796798
797799 METHOD:: mouseEnter
798800 note:: strong:: Only in Qt GUI :: ::
228228
229229 Objects can also be given to views and windows to evalute on events that are not a direct result of user's interaction, but convey useful information about the view's operation and the state it moved in. In this case they are often differentiated from actions and called strong::hooks::.
230230
231 Here, we will give an overview of different kinds of actions and hooks. See link::Classes/View#actions_in_general:: and following sections for precise explanation of how to assign and make use of them.
231 Here, we will give an overview of different kinds of actions and hooks. See link::Classes/View#Actions in general:: and following sections for precise explanation of how to assign and make use of them.
232232
233233
234234 subsection:: Default actions
251251
252252 You can assign actions to strong::mouse events:: generated when the mouse pointer enters the space of a view, when it moves over them, and when a mouse button is pressed or released.
253253
254 See link::Classes/View#mouse_actions#View: Mouse Actions:: for details.
254 See link::Classes/View#Mouse actions:: for details.
255255
256256 In the following example the StaticText will report whether the Button is pressed or released.
257257
265265
266266 You can assign actions to strong::keyboard events:: generated whenever a key is pressed or released while the view has keyboard focus. Keyboard focus is a state of a view in which it has exclusive priority to respond to keyboard events. A view that has keyboard focus typically in a way visually indicates so. On most platforms, pressing the Tab key will switch the keyboard focus between views in the active window and clicking on a view will give it focus.
267267
268 See link::Classes/View#key_actions#View: Key Actions:: for details.
268 See link::Classes/View#Key actions:: for details.
269269
270270 Typing text into any of the TextFields in the following example will change the color of the rectangle bellow, for each TextField a different color.
271271
290290
291291 It is possible to customize what object a view exports when dragged from and how a view reacts to objects dropped by assigning custom drag and drop actions.
292292
293 See link::Classes/View#drag_and_drop:: for details.
293 See link::Classes/View#Drag and drop:: for details.
294294
295295 code::
296296 (
11 summary:: A summary of news in SC 3.6
22 categories:: News
33
4 SECTION:: ScIDE
4 SECTION:: SuperCollider IDE
55
6 link::Guides/SCIde::
6 A new cross-platform SuperCollider coding environment.
7
8 Read link::Guides/SCIde##the guide::!
79
810
911 SECTION:: Language-side news
2426 ^
2527 123;
2628 -----------------------------------
27 ERROR: Command line parse failed
29 ERROR: Command line parse failed
2830 ::
2931
3032 subsection:: Remove old syntax
5456 been changed in order to fix the behavior.
5557
5658 subsection:: Array primitives respect mutability
57 The array primitives now respect object mutability: writing to an immutable object now fails and changing an
58 immutable object with TELETYPE::add::, TELETYPE::addAll::, TELETYPE::insert::, TELETYPE::extend::,
59 The array primitives now respect object mutability: writing to an immutable object now fails and changing an
60 immutable object with TELETYPE::add::, TELETYPE::addAll::, TELETYPE::insert::, TELETYPE::extend::,
5961 TELETYPE::growClear:: and TELETYPE::overwrite:: will return a newly allocated object.
6062
6163 SECTION:: Server-side news
4545
4646 SUBSECTION:: Intrinsic view sizes
4747
48 You may have noticed in the examples above that, besides omitting the code::parent:: argument, we sometimes omitted the code::bounds:: argument as well, at view construction. This is possible because views have intrinsically defined preferred and minimum sizes. See the link::Guides/GUI-Layout-Management#intrinsic_view_sizes#Intrinsic view sizes:: section of the Layout Management guide.
48 You may have noticed in the examples above that, besides omitting the code::parent:: argument, we sometimes omitted the code::bounds:: argument as well, at view construction. This is possible because views have intrinsically defined preferred and minimum sizes. See link::Guides/GUI-Layout-Management#Intrinsic view sizes:: for further explanation.
4949
5050 SUBSECTION:: Layout classes
5151
162162
163163 SUBSECTION:: Hooks for position and size change
164164
165 Since views can be automatically repositioned and resized by link::#layout_management#layouts::, or by the user (if they are windows), it may come handy to make your view respond to these changes using link::Classes/View#-onMove:: and link::Classes/View#-onResize::.
165 Since views can be automatically repositioned and resized by link::#Layout management#layouts::, or by the user (if they are windows), it may come handy to make your view respond to these changes using link::Classes/View#-onMove:: and link::Classes/View#-onResize::.
166166
167167 code::
168168 (
276276
277277 SUBSECTION:: ScrollView
278278
279 link::Classes/ScrollView:: allows to strong::replace the canvas:: that holds its child views with an arbitrary view. This allows great flexibility, including using a link::#layout_management#layout:: to manage the child views. See link::Classes/ScrollView#-canvas:: for explanation, and this link::Classes/ScrollView#examples#example::.
279 link::Classes/ScrollView:: allows to strong::replace the canvas:: that holds its child views with an arbitrary view. This allows great flexibility, including using a link::#Layout management#layout:: to manage the child views. See link::Classes/ScrollView#-canvas:: for explanation, and this link::Classes/ScrollView#examples#example::.
280280
281281
282282 SECTION:: New views
141141 timer = Sweep.ar(1);
142142 // 'i' must be audio-rate for BufWr.ar
143143 BufWr.ar(timer, resultbuf, K2A.ar(i), loop: 0);
144 BufWr.ar(i, resultbuf, DC.ar(0), 0); // # of points in index 0
144 BufWr.kr(i, resultbuf, DC.kr(0), 0); // # of points in index 0
145145 }).asBytes]],
146146 [0, Synth.basicNew(\onsets, s, 1000).newMsg],
147147 [dur, resultbuf.writeMsg(resultpath, headerFormat: "AIFF", sampleFormat: "float")]
0 title:: SC-IDE: SuperCollider Integrated Development Environment
1 summary:: A brief overview of the main features of the cross-platform code editor environment introduced in SuperCollider 3.6.
0 title:: SuperCollider IDE
1 summary:: A guide to the cross-platform SuperCollider coding environment
22 categories:: Frontends
33 keyword:: scide
44 keyword:: editor
55
6 Section:: What is SC-IDE?
7
8 SC-IDE is a new code-editing environment, developed specifically for SuperCollider and introduced in version 3.6. It's written using the Qt graphic interface framework, meaning that it is compatible with any operating system supported by Qt. In the alpha release, SC-IDE works correctly in Mac OSX, Linux and Windows 7. (Issues with Windows XP remain to be solved.)
9
10 note:: Throughout this document, Ctrl- indicates the modifier key for keyboard shortcuts that is used in Linux and Windows platforms. In Mac OSX, use Cmd- instead.::
11
12 Section:: IDE window components
13
14 The editor window contains several panels, as shown here:
15
16 image::sc-ide.png::
17
18 You will spend most of the time in the code editor at right. SC's posted output appears in the emphasis::Post Window:: at left. Underneath the code editor is a emphasis::Tool Panel::, which supports find/replace, go-to line and command-line functions.
19
20 The Post Window is a emphasis::dock:: widget. You can grab the post window's title bar and drop the post window on any edge of the window you like.
6
7 SuperCollider IDE is a new cross-platform coding environment, developed specifically for SuperCollider and introduced in version 3.6.
8
9 It is easy to start using, handy to work with, and sprinkled with powerful features for experienced SuperCollider coders. It is also very customizable.
10
11 It runs equally well and looks almost the same on Mac OSX, Linux and Windows 7. (Issues with Windows XP remain to be solved.)
12
13
14
15 Section:: Overview
16
17 note:: Throughout this document, strong::Ctrl:: indicates the modifier key for keyboard shortcuts that is used on Linux and Windows platforms. strong::On Mac OSX, use Cmd instead::.::
18
19 Here is an annotated screenshot describing various components of the IDE.
20 Click link::Guides/sc_ide_overview.png##here:: for a natural-size version.
21
22 image::sc_ide_overview_scaled.png::
23
24
25
26 Subsection:: Central components
27
28 definitionlist::
29 ## Title Bar || Displays the current session name (see link::#Sessions::), and the filename of the current document.
30 ## Code Editor || The editor takes the central place. Here is where you will spend most of your time, writing code. Read more in the link::#Code editor:: section.
31 ## Document Tabs || Above the editor, there is a series of tabs, one for each open document. Clicking on a tab
32 will display the related document in the editor. The tabs can be drag-and-dropped to change their order.
33 ## Tool Panel || This is where various tools related to code editing are displayed. The panel is initially hidden, and is only displayed when one of the tools is activated. You can activate each of the available tools via the menu strong::View > Tool Panels::, as well as using keyboard shortcuts. This the list of tools:
34 list::
35 ## Find (Ctrl+F) - Find text in the current document.
36 ## Replace (Ctrl+R) - Find and replace text in the current document.
37 ## Go-to-line (Ctrl+L) - Jump to a particular line of the current document by number.
38 ## Command Line (Ctrl+E) - Write and evaluate single lines of code, as in a terminal.
39 ::
40 ## Status Bar || Contains status information about the interpreter and the sound server. Also displays any occasional notifications related to the IDE.
41 ::
42
43 Subsection:: Docklets
44
45 Around the central area described above, there are strong::dock areas:: where various other panels called strong::docklets:: are displayed. They are named so, because they can be moved around to different positions in the dock areas, or even be undocked to float above the main window, and they may also be hidden. You can show or hide each of the available docklets via the menu strong::View > Docklets::.
46
47 Here is a list of available docklets:
48
49 definitionlist::
50 ## Help Browser || Displays and navigates through help pages.
51 ## Post Window || Displays the response of the interpreter: results of code evaluation and various notifications, warnings, errors, etc...
52 ## Documents List || A list of open documents; when you have a lot of them, this may be more handy than the Document tabs.
53 ::
54
55 The docklets may be moved to different areas by strong::drag-and-dropping:: them by their own title bar. There are four dock areas, along each of the edges of the screen: left, right, top and bottom. .
56
57 The docklets may be in four different states:
58
59 list::
60 ## strong::Docked:: - You can drag-and-drop docklets into each dock area either strong::side by side:: or strong::on top of each other::. In the latter case, small tabs will appear that allow you to switch the visible docklet in a particular area. Some docklets are restricted so they can only be placed into some of the areas.
61 ## strong::Undocked:: - By dropping a docklet outside of any dock area it will stay separate and always on top of the main window. You can also undock it using the menu accessible by clicking in the top-left corner of a docklet.
62 ## strong::Detached:: - Using the menu accessible by clicking in the top-left corner of a docklet, you can detach it. A detached docklet behaves just like a normal window: it may be minimized and maximized, the main window may be raised in front of it, it will appear in the operating system task bar, etc.
63 ## strong::Hidden:: - A docklet may be hidden either using the menu accessible by clicking in the top-left corner of a docklet, closing a detached docklet's window, or using the main window menu View > Docklets. To show a hidden docklet, use the same main window menu.
64 ::
2165
2266 Section:: Getting help
2367
24 The help key is Ctrl-D (for Documentation).
25
26 If the cursor is on a class or method name, the help browser will try to open help for the class or method. Otherwise the main help page will appear.
27
28 If you want to go directly to help for a specific topic without entering text into the editor, press Ctrl-shift-D and type the identifier into the pop-up box.
29
30 Section:: Evaluating code
31
32 definitionlist::
33 ## Ctrl-return || The main key to evaluate code. Its behavior is "intelligent":
34 list::
35 ## If a block of code is manually selected, that block will be executed.
36 ## If no code is selected but the cursor is within a emphasis::region::, the entire region will be executed. See below.
37 ## Otherwise, the current line containing the cursor will be executed.
38 ::
39 ## Ctrl-shift-return || Always evaluates the single line under the cursor, whether or not a code block is selected.
40 ::
41
42 Subsection:: Regions
43
44 emphasis::Regions:: make it quick and easy to evaluate longer blocks of code. A region is surrounded by parentheses.
68 All the help options are accessible via the main menu under Help.
69
70 The keyboard shortcut strong::Ctrl+D:: (as in Documentation) is the most handy way to get help. It will navigate the Help Browser to a help page related to the text around the cursor:
71 list::
72 ## If the cursor is at a class or a method name, its documentation will be displayed.
73 ## If there is no class or method matching the text at the cursor, the help search results will be displayed for the text.
74 ## In any case, the Help Browser will be shown, if it was hidden.
75 ::
76
77 The Ctrl+D shortcut works in various places in the IDE: the Editor, the Command Line, the Post Window, or the Help Browser itself. It will always use the text around the cursor or the selected text (if any) to search for help.
78
79 If you want to go directly to a specific help page, use the strong::Ctrl+Shift+D:: shortcut which will pop up a box where you can type a name of a class or a method, or any text, and hit Return to get related help.
80
81 In the title bar of the Help Browser there are controls to strong::navigate:: to the help home page, or backwards and forwards in history, as well as to strong::reload:: the current page.
82
83 Using the strong::Ctrl+F:: shortcut while the Help Browser is focused, you are sent directly to the strong::Find:: field, which you can use to search for text in the current help page.
84
85
86
87 Section:: Starting up the system
88
89 There is no SuperCollider fun without two crucial components:
90
91 definitionlist::
92 ## The language interpreter ||
93 ...is what interprets and executes your SuperCollider code. It is strong::started automatically:: when the IDE starts. However, it is actually separate from the IDE, so it can be stopped and restarted at your will using the strong::Language menu::. When the interpreter is running, the box in the Status Bar labelled "Interpreter" will display "Active" in green letters.
94
95 ## The audio server ||
96 ...is what makes your SuperCollider code sound. Without the audio server running, you can run SuperCollider code, but it will not make any sound. Unlike the interpreter, the audio server is strong::not started automatically::. To start it, use the quick strong::Ctrl+B:: shortcut, or the strong::Language menu::. Note that the language interpreter must already be running in order to start the audio server. When the audio server is running, the box in the Status Bar labelled "Server" will display the status in green numbers.
97 ::
98
99 Of course, once the interpreter and the audio server are running, the most fun part of it all is strong::evaluating code::. Use the strong::Ctrl+Return:: shortcut to evaluate the current line, region, or selection. See link::#Evaluating code:: for more information.
100
101 When you want to strong::stop the running code::, use the strong::Ctrl+.:: shortcut (Ctrl+Period). See more on this at the end of the link::#Evaluating code:: section.
102
103 Most of the time, there is no need for strong::restarting the interpreter::. However, this becomes very useful if you accidentally evaluate code that goes into an infinite loop without a pause, or if the interpreter simply crashes and stops by itself. In that case, use the strong::Language menu:: to restart the interpreter.
104
105 When your class library changes, either because you have installed or removed a Quark, or just modified a class file, you will need to strong::recompile the class library:: in order for changes to take effect. You can do that quickly via the strong::Ctrl+Shift+L:: shortcut, or via the Language menu.
106
107
108
109 Section:: Code editor
110
111 Subsection:: Evaluating code
112
113 To evaluate code, use one of the following keyboard commands:
114
115 definitionlist::
116
117 ## Ctrl+Return || Most used, "smart" code evaluation:
118
119 list::
120 ## Normally, the current line will be evaluated (where the cursor is).
121 ## If the cursor is within a emphasis::region::, the entire region will be evaluated. See below for explanation of regions.
122 ## If some code is selected, the selection will be evaluated.
123 ::
124
125 ## Shift+Return || Evaluates either the current line, or the selection (if any). Use this to evaluate a single line within a region without the need to select it.
126
127 ::
128
129 strong::Regions:: make it quick and easy to evaluate larger portions of code. A region is surrounded by parentheses; to be interpreted as a region, the parenthesis must each be the only character on a line.
45130
46131 code::
47132 (
52137 )
53138 ::
54139
55 If the cursor is anywhere between the outermost parentheses, pressing ctrl-return will evaluate the entire block, starting with code::Pbind:: and ending with code::play;::. (This is faster even than SuperCollider.app's method of selecting a block by double-clicking inside the opening parenthesis.)
56
57 Regions may be more compact visually, provided that the opening and closing parentheses are the first and last elements on their respective lines.
58
59 code::
60 (Pbind(
61 \degree, Pseries(0, 1, 8),
62 \dur, 0.25
63 ).play)
64 ::
65
66 Any other element before or after the () delimiters means that the block will not be interpreted as a region.
67
68 code::
69 // (1 + 2) is not a region:
70 // the () indicate order of operations instead
71 (1 + 2).postln;
72 ::
73
74 Section:: Typing code
140 If the cursor is anywhere between the outermost parentheses, pressing Ctrl+Return will automatically evaluate the entire contents within the parentheses, starting with code::Pbind:: and ending with code::play;::.
141
142 To quickly evaluate a portion of code, you can also double-click on any bracket (round, squared, or curly), which will select everything between this and the other matching bracket, so you can quickly evaluate it.
143
144 To strong::stop:: any running code, use the strong::Ctrl+.:: shortcut (Ctrl+Period). This will stop all the code scheduled on the link::Tutorials/Getting-Started/14-Scheduling-Events##clocks::, as well as all the sound processes on the audio server.
145
146 note:: If some code goes into a strong::infinite loop without a pause::, using Ctrl+. will not help to stop it. In this case, you will need to restart the interpreter (see link::#Starting up the system::).
147 ::
75148
76149 Subsection:: Automatic indentation
77150
78 While you are typing, SC-IDE keeps track of opening and closing brackets and automatically indents lines accordingly. You don't have to press TAB to indent or Backspace to outdent. When you close a bracket, SC-IDE will automatically push the text to the left to align with the matching opening bracket.
79
80 Subsection:: Automatic completion of class and method names
81
82 If you begin to type a class name, the editor will pop up a menu listing the class names that match what you have typed so far. Keep typing, and the list is filtered accordingly. At any point, use the up and down arrows to choose the completion and then press Return to choose the class. The complete class name will be entered into the code.
83
84 The same happens when typing a method name after a dot. If SC-IDE can determine the class of object that will receive the method call, the list of matching methods will be appropriate for that class. Otherwise, after three characters, the list will include methods from all classes. (This is because it's often impossible to know the class of the result of an expression without evaluating the expression.)
85
86 If the auto-complete menu does not appear automatically during typing, you can force it using Ctrl-space.
87
88 Subsection:: Method call aid
89
90 When you type an opening parenthesis after a method name, the editor will try to produce a floating pop-up listing the method's arguments. The pop-up appears automatically if the class of the receiver can be determined.
91
92 If not, a pop-up menu appears listing the classes that implement the method. You can choose the desired class implementation that you intend, and then the floating pop-up will appear.
93
94 If the method call aid does not appear automatically during typing, you can force it using Ctrl-shift-space.
95
96 Section:: Editor features
97
98 definitionlist::
99 ## Find/Replace || Ctrl-F brings up the Find tool panel; Ctrl-R brings up Replace. If you started with the Find panel but then want to replace, press Ctrl-R and your search string will be preserved. See also the Options menu at right. Regular expression find/replace is supported, including backreferences.
100
101 ## Command line || Sometimes, you need to evaluate a temporary expression that does not need to be saved in a code document. Press Ctrl-E, and a one line text box appears. Any expression you type here will be evaluated after you press Return. Up and down arrows navigate through the history of commands entered in this box.
102
103 ## Go to line || Press Ctrl-G, enter a line number, and the editor will jump to that line.
104
105 ## Focus post window || Ctrl-L gives focus to the post window. Here, you can use arrow keys and Page Up / Page Down to scroll through output from the interpreter. Press TAB to return to the code editor.
106
107 ## Implementation-of || Ctrl-I (for Implementation) opens a class or method definition.
108
109 ## References-to || Ctrl-U (for Uses) produces a list of references to a class or method.
110 ::
111
112 Section:: Interacting with the SC language interpreter
113
114 Unlike SuperCollider.app in OSX, SC-IDE is a separate process from the interpreter. This is good for stability. If you accidentally execute code that causes an infinite loop, you can use the Language menu to Stop SCLang and regain control without losing unsaved code.
115
116 The Language menu contains commands to start and stop the interpreter and recompile the library.
117
118 definitionlist::
119 ## Stop activity || Ctrl-., like Cmd-. in SuperCollider.app, stops any executing code and sound from the server.
120
121 ## Recompile library || Ctrl-shift-L recompiles the library.
122 ::
123
124 Section:: Interacting with the audio server
125
126 The Language menu also includes commands to boot, reboot and quit the server, as well as open a level meter and dump a list of running nodes.
151 The editor helps you by automatically indenting lines according to opening and closing brackets as you type. With every new line, the indentation will be increased if there is an opening bracket on the previous line. As you continue to type closing brackets, the indentation will decrease to align with the matching opening brackets.
152
153 If the indentation of a portion of code is messed up, you can select it and press strong::Tab:: to automatically indent it according to surrounding brackets. This also works without selection for the current line.
154
155 You can manually insert a level of indentation anywhere in code by pressing strong::Shift+Tab::.
156
157 The indentation can either use strong::tab characters or spaces::, which you can quickly toggle via the main menu option Edit > Use Spaces for Indentation. More indentation options are available in the IDE preferences dialog.
158
159
160
161 Subsection:: Automatic completion
162
163 As you type, the editor will try to find possible continuations of your code, and pop up a list of suggestions, so you can quickly insert one instead of typing the whole text. This is called emphasis::autocompletion:: and is a great aid towards writing code faster and with less errors.
164
165 In general, this works for class and method names. These are the things that the editor can autocomplete:
166
167 list::
168
169 ## strong::Class names::
170 code::
171 Sin<...>
172 ::
173 When you have typed at least 3 letters of a class name, a list of classes beginning with these letters will be shown.
174
175 ## strong::Method names following class names::
176 code::
177 Array.<...>
178 ::
179 When you type a dot after a class name, a list of methods of that class will be shown.
180
181 ## strong::Method names following literals and built-ins::
182 code::
183 123.<...>
184 currentEnvironment.<...>
185 ::
186 When you type a dot after a literal (number, string, symbol, etc.) or a built-in (currentEnvironment, thisProcess, etc.), a list of instance methods of their classes will be shown.
187
188 ## strong::Method names following a variable name::
189 code::
190 value.lin<...>
191 ::
192 When you type a dot and 3 letters after a variable, a list of all methods of all classes starting with these letters will be shown (because the class of the variable is not known).
193 ::
194
195 Once the autocompletion menu pops up, you can use the arrow keys or Page Up and Page Down to select an entry, and press Return to insert it into your code. If you continue typing, the list of options will be further filtered to match the typed text.
196
197 Note that the autocompletion menu disappears when the typed text exactly matches one of autocompletion options. This is intended as help: the menu tries to get out of your way when you probably don't need it.
198
199 If the autocompletion menu is not shown, you can show it using strong::Ctrl+Space::, as long as there is any autocompletion options available. You can always dismiss the menu by pressing strong::Escape::.
200
201 Subsection:: Method call assistance
202
203 The editor helps you when writing arguments of a method by showing you a complete list of the method's arguments and their default values, as long as it manages to figure out exactly which method that is. This is called emphasis::method call assistance::. It helps you to know exactly which argument you are typing, and reduces the need to look into documentation.
204
205 The assistance is activated as soon as you type an opening parenthesis after a method name, at which point a box containing the arguments will pop up. However, if the class of the method is not known, first a menu of classes that implement the method will be shown, and after you select one of the classes using the arrow keys or the Page Up and Page Down keys, and press Return, the box with arguments will pop up.
206
207 So, for example, in the following cases method call assistance will pop up immediately:
208 code::
209 SinOsc.ar(
210 123.forBy(
211 ::
212 ...while in the following cases, you will first need to select a class, because the class is not known:
213 code::
214 min(
215 x.play(
216 [1,2,3].inject(
217 ::
218
219 If method call assistance is not shown, you can activate it using strong::Ctrl+Shift+Space:: with the cursor between parenthesis surrounding the arguments. You can always dismiss it by pressing strong::Escape::.
220
221
222
223 Section:: Tool panels
224
225 All tool panels are listed and may be activated via the main menu strong::View > Tool Panels::. To close the
226 currently displayed panel, press strong::Escape::.
227
228
229
230 subsection:: Find and Replace
231
232 Shortcuts: Find: strong::Ctrl+F:: / Replace: strong::Ctrl+R::
233
234 The strong::Find:: panel is used to find text in the currently open document. As soon as you start typing into the Find field, the entered text is searched for, and the results are highlighted. The first found result is also selected. By pressing Return, you can jump through all the result.
235
236 Notice how the Status Bar reports the strong::number of search results::, whenever the search text is changed.
237
238 If you invoke the Find shortcut with some text selected in the code editor, the Find field will be filled with the selection.
239
240 The strong::Replace:: panel is an extension to the Find panel: it adds another field where you can enter text to replace the search results with. By pressing Return in the Replace field, the current search result will be replaced and the next result will be selected.
241
242 Use the strong::Replace All:: button to replace all search results. Notice how the Status Bar reports the strong::number of replacements::.
243
244 You can access more strong::search options:: by clicking on the button in the top-right corner of the Find/Replace panel. The options are:
245
246 list::
247 ## strong::Match Case:: - make the search case-sensitive.
248 ## strong::Regular Expression:: - treat the search text as a emphasis::regular expression::. More on this below.
249 ## strong::Whole Words:: - only search for whole words; i.e. the characters on the left and the right side of a search result must not be letters or numbers.
250 ::
251
252 strong::Regular expressions:: are a powerful way to search for text that matches a pattern, instead of an exact sequence of characters. When this option is enabled, replacement supports strong::backreferences::, i.e. reusing portions of the found pattern in the replacement text.
253
254 We will not go here into details about regular expression. To learn more, we would like to refer you to an excellent tutorial online: link::http://www.regular-expressions.info/quickstart.html::
255
256
257
258 subsection:: Go-To-Line
259
260 Shortcut: strong::Ctrl+L::
261
262 Using the Go-To-Line tool, you can quickly jump to a line in the current document, by number. Just enter the line number and press Return.
263
264
265
266 subsection:: Comand Line
267
268 Shortcut: strong::Ctrl+E::
269
270 Sometimes, you need to evaluate a temporary expression that does not need to be saved into a document. The Command Line offers a one-line text field where you can enter a SuperCollider expression, and press Return to evaluate it.
271
272 Use the Up and Down arrow keys to navigate through the strong::history:: of evaluated expressions. Up will move to older expressions, and Down will move back to more recent ones.
273
274
275
276 Section:: Class library navigation
277
278 Often it is very useful to be able to jump directly to a place in a file, where a particular class or method is implemented, or to find all the places where a class or a method name is used. The IDE offers practical ways to achieve that.
279
280 subsection:: Look up implementations
281
282 The strong::Ctrl+I:: shortcut with the text cursor at a method or a class name will open a dialog with a list of places where that method or class is implemented. By selecting one of the entries and pressing Return, the IDE will open the file and position the text cursor at the location you are looking for.
283
284 Note that the Ctrl+I shortcut works in various places in the IDE, wherever there may be code: the Editor, the Command Line, the Post Window, or the Help Browser. It will always use the text around the cursor or the selected text (if any) to look for a method or a class with a matching name.
285
286 The list in the dialog is formed as follows:
287 list::
288 ## If you are looking up a class name, the class and all its methods including those of its superclasses will be listed.
289 ## If you are looking up a method name, all the methods of all classes with that name will be listed.
290 ## If there is no class or method that matches the name exactly, partial matches will be displayed
291 ::
292
293 You can use the text field at the top of the dialog to search for a method or a class directly. Just type in some text and press Return.
294
295 The strong::Ctrl+Shift+I:: shortcut will open the dialog empty, regardless of position of the text cursor.
296
297 subsection:: Look up references
298
299 The strong::Ctrl+U:: shortcut will open a dialog similar to the one described above, except that it will list places where a method or a class with a particular name is emphasis::used::. Note that this only searches class files in the class library, not regular code files.
300
301 Just as the Ctrl+I shortcut described above, Ctrl+U will work at any place in the IDE where there may be code.
302
303 The strong::Ctrl+Shift+U:: shortcut will open the dialog empty, regardless of position of the text cursor.
304
305
127306
128307 Section:: Sessions
129308
130 Sessions preserve the state of the editor environment at the time of quitting the editor, so you can resume with the same arrangement of IDE components and open documents automatically.
309 Sessions preserve the state of the IDE at the time of quitting, so next time you use it you can resume with the same arrangement of open documents and link::#Docklets#docklets:: automatically.
310
311 To strong::save:: the current state as a new session, use the "Session > Save Session As..." menu action. You will be prompted to enter a name for the new session.
312
313 To strong::open:: a saved session, use the "Session > Open Session..." menu, which contains all the saved sessions.
314
315 To start a strong::new:: unsaved session, use the "Session > New Session" menu action.
316
317 You can quickly strong::switch:: the active session via a pop-up list of all sessions using the Ctrl+Shift+Q shortcut.
318
319 More options, including strong::removing:: a saved session, are available in a session management dialog accessible via "Session > Manage Sessions..." menu action.
320
321 By default, the IDE starts with the strong::last session:: used before closing, but you can change this behavior in the IDE configuration dialog.
322
323
324
325 Section:: Various handy shortcuts
326
327 definitionlist::
328 ## Focus Post Window: Ctrl+P || Gives focus to the Post Window. Then you can use arrow keys and Page Up / Page Down to scroll through output from the interpreter. Press Tab to return to the Code Editor.
329 ## Clear Post Window: Ctrl+Shift+P || Cleares the Post Window contents.
330 ## Enlarge/Shrink Font: Ctrl++ / Ctrl+- || Enlarges or shrinks font in Code Editor, Post Window, or Help Browser.
331 ::
332
333 Section:: Customization
334
335 Many customization options are available in the IDE configuration dialog, accessible via "Edit > Preferences" menu action.
336
337 The options include: fonts, code colors, keyboard shortcuts,...
131338
132339 (More to write later)
133
134 Section:: Customizing
135
136 Many customization options are available under Settings >> Configure IDE. In particular, fonts, colors and keyboard shortcuts may be set here.
137
138 (More to write later)
1010 The main MIDI classes are:
1111
1212 definitionList::
13 ## link::Classes/MIDIClient:: || This class connects to the operating system's MIDI layer, and obtains the lists of available MIDI sources and destinations. The information about the hardware is stored in code::MIDIClient.sources:: and code::MIDIClient.destinations:: as link::Classes/MIDIEndPoint:: objects. MIDIClient must be initialized before MIDI can be received. See the example at link::#playing_notes_on_your_midi_keyboard#Playing notes on your MIDI keyboard::.
13 ## link::Classes/MIDIClient:: || This class connects to the operating system's MIDI layer, and obtains the lists of available MIDI sources and destinations. The information about the hardware is stored in code::MIDIClient.sources:: and code::MIDIClient.destinations:: as link::Classes/MIDIEndPoint:: objects. MIDIClient must be initialized before MIDI can be received. See the example link::#Playing notes on your MIDI keyboard::.
1414 ## link::Classes/MIDIFunc:: || The optimal way to receive the most typical MIDI messages: note on/off, controller, pitch bend, aftertouch, poly-touch and program change.
1515 ## link::Classes/MIDIdef:: || Related to link::Classes/MIDIFunc::, this class keeps several MIDIFunc objects in global storage, by name. Especially helpful for live or interactive use.
1616 ## link::Classes/MIDIOut:: || Supports MIDI output to hardware ports or inter-application MIDI buses.
2727
2828 link::Classes/MIDIFunc:: has a number of convenience methods allowing you to register for the different MIDI message types. It can filter incoming MIDI messages to respond to a particular device, channel number, or specific message number, or ranges thereof.
2929
30 See link::#playing_notes_on_your_midi_keyboard#Playing notes on your MIDI keyboard:: below for a simple example using the note-on and note-off MIDIFuncs.
30 See link::#Playing notes on your MIDI keyboard:: below for a simple example using the note-on and note-off MIDIFuncs.
3131
3232 subsection:: MIDIIn
3333
6868
6969 The link::Classes/MIDIIn:: help file contains a more elaborate example.
7070
71 SuperCollider does not have a built-in class to handle this automatically. However, emphasis::dewdrop_lib::, a third party library mentioned link::#third_party_libraries#below::, includes Voicer (to simplify note on-off bookkeeping) and VoicerMIDISocket (to trigger Voicer notes by MIDI). Users interested in this functionality may wish to examine that library.
71 SuperCollider does not have a built-in class to handle this automatically. However, emphasis::dewdrop_lib::, a third party library mentioned link::#Third party libraries#below::, includes Voicer (to simplify note on-off bookkeeping) and VoicerMIDISocket (to trigger Voicer notes by MIDI). Users interested in this functionality may wish to examine that library.
7272
7373 section::Sending MIDI out
7474
HelpSource/Guides/sc-ide.png less more
Binary diff not shown
191191 code:: ?? :: evaluates the function conditionally (only when needed).
192192 If the function defines no variables, the function will be inlined for speed.
193193
194 Especially useful when the absence of an object requires a new object to be created. In this example, it's critical that a new SCSlider not be created if the object was already passed in.
194 Especially useful when the absence of an object requires a new object to be created. In this example, it's critical that a new Slider not be created if the object was already passed in.
195195 code::
196196 f = { |slider, parent|
197 slider = slider ?? { SCSlider.new(parent, Rect(0, 0, 100, 20)) };
197 slider = slider ?? { Slider.new(parent, Rect(0, 0, 100, 20)) };
198198 slider.value_(0);
199199 };
200200 ::
201201 If the first line inside the function instead read code::
202 slider = slider ? SCSlider.new(parent, Rect(0, 0, 100, 20));
202 slider = slider ? Slider.new(parent, Rect(0, 0, 100, 20));
203203 ::
204204 , a new slider would be created even if it is not needed, or used.
205205
1212 ## strong::SynthDef2:: - A revised version that extends SynthDef's capacity.
1313 ::
1414
15 This document describes SynthDef2's format. See link::#original_synthdef_format#Original SynthDef format:: for the differences between SynthDef and SynthDef2.
15 This document describes SynthDef2's format. See link::#Original SynthDef format:: for the differences between SynthDef and SynthDef2.
1616
1717 section:: Basic types
1818 All data is stored big endian. All data is packed, not padded or aligned.
0 title:: PG_01_Introduction
0 title:: Pattern Guide 01: Introduction
11 summary:: Fundamental concepts of patterns and streams
22 categories:: Streams-Patterns-Events>A-Practical-Guide
33
6767 ::
6868 ## link::Tutorials/A-Practical-Guide/PG_Cookbook07_Rhythmic_Variations:: || list::
6969 ## An ever-changing drumbeat
70 ::
71 ## link::Tutorials/A-Practical-Guide/PG_Cookbook08_Swing:: || list::
72 ## Emulating quantize-with-swing from conventional sequencers
7073 ::
7174 ::
7275
0 title:: PG_02_Basic_Vocabulary
0 title:: Pattern Guide 02: Basic Vocabulary
11 summary:: Common patterns to generate streams of single values
22 related:: Tutorials/A-Practical-Guide/PG_01_Introduction, Tutorials/A-Practical-Guide/PG_03_What_Is_Pbind
33 categories:: Streams-Patterns-Events>A-Practical-Guide
0 title:: PG_03_What_Is_Pbind
0 title:: Pattern Guide 03: What Is Pbind
11 summary:: Pattern-based musical sequencing with Pbind and cousins
22 related:: Tutorials/A-Practical-Guide/PG_02_Basic_Vocabulary, Tutorials/A-Practical-Guide/PG_04_Words_to_Phrases
33 categories:: Streams-Patterns-Events>A-Practical-Guide
0 title:: PG_04_Words_to_Phrases
0 title:: Pattern Guide 04: Words to Phrases
11 summary:: Nesting patterns, arranging music in terms of phrases
22 related:: Tutorials/A-Practical-Guide/PG_03_What_Is_Pbind, Tutorials/A-Practical-Guide/PG_05_Math_on_Patterns
33 categories:: Streams-Patterns-Events>A-Practical-Guide
0 title:: PG_05_Math_on_Patterns
0 title:: Pattern Guide 05: Math on Patterns
11 summary:: Performing math and collection operations on patterns
22 related:: Tutorials/A-Practical-Guide/PG_04_Words_to_Phrases, Tutorials/A-Practical-Guide/PG_060_Filter_Patterns
33 categories:: Streams-Patterns-Events>A-Practical-Guide
0 title:: PG_060_Filter_Patterns
0 title:: Pattern Guide 060: Filter Patterns
11 summary:: Overview of patterns that modify the behavior of other patterns
22 related:: Tutorials/A-Practical-Guide/PG_05_Math_on_Patterns, Tutorials/A-Practical-Guide/PG_06a_Repetition_Contraint_Patterns
33 categories:: Streams-Patterns-Events>A-Practical-Guide
0 title:: PG_06a_Repetition_Contraint_Patterns
0 title:: Pattern Guide 06a: Repetition Contraint Patterns
11 summary:: Patterns that repeat values, or cut other patterns off early
22 related:: Tutorials/A-Practical-Guide/PG_060_Filter_Patterns, Tutorials/A-Practical-Guide/PG_06b_Time_Based_Patterns
33 categories:: Streams-Patterns-Events>A-Practical-Guide
0 title:: PG_06b_Time_Based_Patterns
0 title:: Pattern Guide 06b: Time Based Patterns
11 summary:: Patterns using time as the basis for their evaluation
22 related:: Tutorials/A-Practical-Guide/PG_06a_Repetition_Contraint_Patterns, Tutorials/A-Practical-Guide/PG_06c_Composition_of_Patterns
33 categories:: Streams-Patterns-Events>A-Practical-Guide
0 title:: PG_06c_Composition_of_Patterns
0 title:: Pattern Guide 06c: Composition of Patterns
11 summary:: Making multiple event patterns act as one
22 related:: Tutorials/A-Practical-Guide/PG_06b_Time_Based_Patterns, Tutorials/A-Practical-Guide/PG_06d_Parallel_Patterns
33 categories:: Streams-Patterns-Events>A-Practical-Guide
0 title:: PG_06d_Parallel_Patterns
0 title:: Pattern Guide 06d: Parallel Patterns
11 summary:: Running multiple event patterns simultaneously
22 related:: Tutorials/A-Practical-Guide/PG_06c_Composition_of_Patterns, Tutorials/A-Practical-Guide/PG_06e_Language_Control
33 categories:: Streams-Patterns-Events>A-Practical-Guide
0 title:: PG_06e_Language_Control
0 title:: Pattern Guide 06e: Language Control
11 summary:: Patterns that mimic some language-side control structures
22 related:: Tutorials/A-Practical-Guide/PG_06d_Parallel_Patterns, Tutorials/A-Practical-Guide/PG_06f_Server_Control
33 categories:: Streams-Patterns-Events>A-Practical-Guide
0 title:: PG_06f_Server_Control
0 title:: Pattern Guide 06f: Server Control
11 summary:: Patterns that manage server-side resources
22 related:: Tutorials/A-Practical-Guide/PG_06e_Language_Control, Tutorials/A-Practical-Guide/PG_06g_Data_Sharing
33 categories:: Streams-Patterns-Events>A-Practical-Guide
0 title:: PG_06g_Data_Sharing
0 title:: Pattern Guide 06g: Data Sharing
11 summary:: Writing patterns to use information from other patterns
22 related:: Tutorials/A-Practical-Guide/PG_06f_Server_Control, Tutorials/A-Practical-Guide/PG_07_Value_Conversions
33 categories:: Streams-Patterns-Events>A-Practical-Guide
0 title:: PG_07_Value_Conversions
0 title:: Pattern Guide 07: Value Conversions
11 summary:: Describes the default event's conversions for pitch, rhythm and amplitude
22 related:: Tutorials/A-Practical-Guide/PG_06g_Data_Sharing, Tutorials/A-Practical-Guide/PG_08_Event_Types_and_Parameters
33 categories:: Streams-Patterns-Events>A-Practical-Guide
0 title:: PG_08_Event_Types_and_Parameters
0 title:: Pattern Guide 08: Event Types and Parameters
11 summary:: Describes the event types defined in the default event, and the parameters they expect
22 related:: Tutorials/A-Practical-Guide/PG_07_Value_Conversions, Tutorials/A-Practical-Guide/PG_Cookbook01_Basic_Sequencing
33 categories:: Streams-Patterns-Events>A-Practical-Guide
194194
195195 subsection::Buffer control
196196
197 All of these buffer event types expect the buffer number to be provided. They will not automatically get a buffer number from the server's buffer allocator. A Buffer object is allowed -- you could create the Buffer first using code::Buffer.alloc:: or code::Buffer.new:: and then use this object in the control events. See also link::#event_types_with_cleanup#Event types with cleanup:: below for other, user-friendlier Buffer control options.
197 All of these buffer event types expect the buffer number to be provided. They will not automatically get a buffer number from the server's buffer allocator. A Buffer object is allowed -- you could create the Buffer first using code::Buffer.alloc:: or code::Buffer.new:: and then use this object in the control events. See also link::#Event types with cleanup:: below for other, user-friendlier Buffer control options.
198198
199199 definitionList::
200200 ## alloc || Allocate memory for a buffer on the server. Only one buffer may be allocated per event.
0 title:: PG_Cookbook01_Basic_Sequencing
0 title:: Pattern Guide Cookbook 01: Basic Sequencing
11 summary:: Sequencing basics
22 related:: Tutorials/A-Practical-Guide/PG_08_Event_Types_and_Parameters, Tutorials/A-Practical-Guide/PG_Cookbook02_Manipulating_Patterns
33 categories:: Streams-Patterns-Events>A-Practical-Guide
0 title:: PG_Cookbook02_Manipulating_Patterns
0 title:: Pattern Guide Cookbook 02: Manipulating Patterns
11 summary:: Manipulating pattern data
22 related:: Tutorials/A-Practical-Guide/PG_Cookbook01_Basic_Sequencing, Tutorials/A-Practical-Guide/PG_Cookbook03_External_Control
33 categories:: Streams-Patterns-Events>A-Practical-Guide
0 title:: PG_Cookbook03_External_Control
0 title:: Pattern Guide Cookbook 03: External Control
11 summary:: Pattern control by external device
22 related:: Tutorials/A-Practical-Guide/PG_Cookbook02_Manipulating_Patterns, Tutorials/A-Practical-Guide/PG_Cookbook04_Sending_MIDI
33 categories:: Streams-Patterns-Events>A-Practical-Guide
0 title:: PG_Cookbook04_Sending_MIDI
0 title:: Pattern Guide Cookbook 04: Sending MIDI
11 summary:: Sending notes under pattern control to MIDI devices
22 related:: Tutorials/A-Practical-Guide/PG_Cookbook03_External_Control, Tutorials/A-Practical-Guide/PG_Cookbook05_Using_Samples
33 categories:: Streams-Patterns-Events>A-Practical-Guide
0 title:: PG_Cookbook05_Using_Samples
0 title:: Pattern Guide Cookbook 05: Using Samples
11 summary:: Using samples
22 related:: Tutorials/A-Practical-Guide/PG_Cookbook04_Sending_MIDI, Tutorials/A-Practical-Guide/PG_Cookbook06_Phrase_Network
33 categories:: Streams-Patterns-Events>A-Practical-Guide
0 title:: PG_Cookbook06_Phrase_Network
0 title:: Pattern Guide Cookbook 06: Phrase Network
11 summary:: Sequencing by a network of phrases, Articulating notes with PmonoArtic
22 related:: Tutorials/A-Practical-Guide/PG_Cookbook05_Using_Samples, Tutorials/A-Practical-Guide/PG_Cookbook07_Rhythmic_Variations
33 categories:: Streams-Patterns-Events>A-Practical-Guide
0 title:: PG_Cookbook07_Rhythmic_Variations
0 title:: Pattern Guide Cookbook 07: Rhythmic Variations
11 summary:: An ever-changing drumbeat
2 related:: Tutorials/A-Practical-Guide/PG_Cookbook06_Phrase_Network, Tutorials/A-Practical-Guide/PG_Ref01_Pattern_Internals
2 related:: Tutorials/A-Practical-Guide/PG_Cookbook06_Phrase_Network, Tutorials/A-Practical-Guide/PG_Cookbook08_Swing
33 categories:: Streams-Patterns-Events>A-Practical-Guide
44
55 section::Creating variations on a base rhythmic pattern
226226
227227 Previous: link::Tutorials/A-Practical-Guide/PG_Cookbook06_Phrase_Network::
228228
229 Next: link::Tutorials/A-Practical-Guide/PG_Ref01_Pattern_Internals::
229 Next: link::Tutorials/A-Practical-Guide/PG_Cookbook08_Swing::
0 title:: Pattern Guide Cookbook 08: Swing
1 summary:: A filter pattern that turns equal rhythmic divisions into swung notes
2 related:: Tutorials/A-Practical-Guide/PG_Cookbook07_Rhythmic_Variations, Tutorials/A-Practical-Guide/PG_Ref01_Pattern_Internals
3 categories:: Streams-Patterns-Events>A-Practical-Guide
4
5 section:: Converting equal divisions into "swing"
6
7 Most MIDI sequencers have a "swing" feature, which handles a note's timing differently depending on its metric position. A note in a stronger metric position is played on time; a note in a weaker position is delayed by some fraction of the beat.
8
9 In SuperCollider patterns, it's more convenient to express rhythm in terms of equal note durations. To mimic the swing-quantize behavior of conventional sequencers, it's helpful to have a way to modify the output events from a pattern so that the metrically-weaker notes sound later, without requiring the original pattern to be aware of the notes' metric positions.
10
11 subsection:: Requirements
12
13 definitionlist::
14 ## Parameter: Base rhythmic value || You should be able to swing any subdivision of the beat: 8th-, 16th-, quarter-notes. If this is 0.5 (8th-notes), then quarter notes will play unchanged.
15 ## Parameter: Swing amount || Fraction of the base rhythm to delay the weaker notes. The actual delay time will be code::base_value * swing_amount::.
16 ## Weaker-positioned notes || The attack needs to be moved later, using the event's timingOffset (see link::Tutorials/A-Practical-Guide/PG_08_Event_Types_and_Parameters#Timing control::). Also, if the next note is in a stronger position, this note needs to be shorter by the same amount.
17 ## Stronger-positioned notes || The attack will not be moved in time; but, if the next note is in a weaker position, this note needs to be slightly longer to compensate for the additional time between note onsets.
18 ## Non-duple subdivisions || Swing typically assumes a beat will be divided into two notes. Treating triplets, quintuplets or other divisions by the same algorithm would produce confusing rhythms. So, we may also want a parameter teletype::swingThreshold:: to disable swing for notes that are too far away from the base rhythmic value.
19 ::
20
21
22 subsection:: Implementation
23
24 link::Classes/Pchain:: applies one pattern to the result of another pattern. So, if we can write a pattern that will modify the events coming from the source, Pchain will be an easy way to combine them.
25
26 The parameters noted above should be provided in the source pattern. Alternately, they may be given as an event at the end of Pchain's list of inputs. (Pchain, following the model of function composition, evaluates its patterns in reverse order. See link::Tutorials/A-Practical-Guide/PG_06c_Composition_of_Patterns::.)
27
28 So... deep breath...
29
30 code::
31 (
32 ~swingify = Prout({ |ev|
33 var now, nextTime = 0, thisShouldSwing, nextShouldSwing = false, adjust;
34 while { ev.notNil } {
35 // current time is what was "next" last time
36 now = nextTime;
37 nextTime = now + ev.delta;
38 thisShouldSwing = nextShouldSwing;
39 nextShouldSwing = ((nextTime absdif: nextTime.round(ev[\swingBase])) <= (ev[\swingThreshold] ? 0)) and: {
40 (nextTime / ev[\swingBase]).round.asInteger.odd
41 };
42 adjust = ev[\swingBase] * ev[\swingAmount];
43 // an odd number here means we're on an off-beat
44 if(thisShouldSwing) {
45 ev[\timingOffset] = (ev[\timingOffset] ? 0) + adjust;
46 // if next note will not swing, this note needs to be shortened
47 if(nextShouldSwing.not) {
48 ev[\sustain] = ev.use { ~sustain.value } - adjust;
49 };
50 } {
51 // if next note will swing, this note needs to be lengthened
52 if(nextShouldSwing) {
53 ev[\sustain] = ev.use { ~sustain.value } + adjust;
54 };
55 };
56 ev = ev.yield;
57 };
58 });
59 )
60 ::
61
62 subsection:: Examples
63
64 code::
65 p = Pbind(\degree, Pseries(0, 1, 8), \dur, 0.25);
66
67 p.play; // straight 16ths
68
69 // swingBase: 0.25: Every other 16th-note is delayed
70 // swingAmount: 1/3: Off-beat notes will be delayed by 1/3 of a 16th-note
71 Pchain(~swingify, p, (swingBase: 0.25, swingAmount: 1/3)).play;
72
73 // note duration = twice swingBase, no swing (correct)
74 Pchain(~swingify, Pstretch(2, p), (swingBase: 0.25, swingAmount: 1/3)).play;
75
76 // hear the result of different swing amounts
77 (
78 Ppar([
79 // 60% of a 16th-note
80 Pchain(~swingify, p, (swingBase: 0.25, swingAmount: 0.6, pan: -1)),
81 // 20% of a 16th-note
82 Pchain(~swingify, p, (swingBase: 0.25, swingAmount: 0.2, pan: 1, octave: 6))
83 ]).play;
84 )
85
86
87 (
88 q = Ppar([
89 // walking bass (by an idiot bass player who only chooses notes randomly)
90 Pbind(
91 \octave, 3,
92 \degree, Pwhite(0, 7, inf),
93 \dur, 0.5
94 ),
95 Pseq([
96 Pchain(
97 ~swingify,
98 Pbind(
99 \degree, Pseries(-7, 1, 15) +.x Pseq([0, 9], 1),
100 \dur, Pwhite(1, 3, inf) * 0.25
101 ),
102 (swingBase: 0.25, swingAmount: 0.2)
103 ),
104 Pfuncn({ q.stop; Event.silent(1) }, 1)
105 ])
106 ]).play;
107 )
108 ::
109
110 Swing should not apply to triplets. Note that the rhythmic value 1/6 introduces floating-point rounding error, so we need to raise the threshold slightly. code::(1/6)+(1/6)+(1/6):: is within 0.05 of an eighth-note, but code::1/6:: is not, causing triplet notes to pass through unchanged.
111
112 code::
113 // swing threshold: throw a few triplets in
114 (
115 Pchain(
116 ~swingify,
117 Pbind(
118 \degree, Pseries(-7, 1, 15),
119 \dur, Pwrand([Pn(0.25, 2), Pn(1/6, 3)], [0.7, 0.3], inf)
120 ),
121 (swingBase: 0.25, swingAmount: 0.2, swingThreshold: 0.05)
122 ).play;
123 )
124 ::
125
126
127 subsection:: Explanation
128
129 We need to measure the current metric position against some reference point. The most logical is the time when the pattern started processing. link::Classes/Prout:: allows variables to persist for the entire length of its stream (unlike link::Classes/Pfunc::).
130
131 code::
132 (
133 ~swingify = Prout({ |ev|
134 var now, nextTime = 0, thisShouldSwing, nextShouldSwing = false, adjust;
135 ::
136
137 ~~
138
139 If the source event is nil, errors will follow, so we should stop looping in that case.
140
141 code::
142 while { ev.notNil } {
143 ::
144
145 ~~
146
147 code::now:: is what the next time emphasis::was::. The time of the next event simply adds code::ev.delta::.
148
149 code::
150 now = nextTime;
151 nextTime = now + ev.delta;
152 ::
153
154 ~~
155
156 As discussed above, there are two factors to decide whether or not this note should be delayed:
157
158 definitionlist::
159 ## Is it close enough to the base rhythm grid? || Round the current time to the grid, and the difference between the actual and rounded times must be less than the threshold: code::(now absdif: now.round(ev[\swingBase])) <= (ev[\swingThreshold] ? 0)::.
160 ## Is it in a weaker metrical position? || Dividing by the base value yields an even number for stronger positions, and odd for weaker positions: code::(now / ev[\swingBase]).round.asInteger.odd::.
161 ::
162
163 There's room also for a slight optimization. In the previous event, we decided whether the next event would need to swing or not. Now, in the current event, we are processing what used to be "next." So we can just copy the old value of teletype::nextShouldSwing:: from last time, instead of redoing the calculation. (Note that this requires code::nextShouldSwing = false:: in the beginning -- because teletype::now:: is always 0 for the first event, and consequently can never swing.)
164
165 code::
166 // current this time is what was "next" last time
167 thisShouldSwing = nextShouldSwing;
168 nextShouldSwing = ((nextTime absdif: now.round(ev[\swingBase])) <= (ev[\swingThreshold] ? 0)) and: {
169 (nextTime / ev[\swingBase]).round.asInteger.odd
170 };
171 adjust = ev[\swingBase] * ev[\swingAmount];
172 ::
173
174 ~~
175
176 Naming the variables appropriately makes the subsequent "if" block almost self-explanatory. Two notes:
177
178 list::
179 ## The event's teletype::timingOffset:: may be nonzero, in which case, it would be wrong to overwrite. We need to emphasis::adjust:: the timing offset: +.
180 ## The original teletype::sustain:: value may be calculated from teletype::dur:: and teletype::legato::. That calculation is done by the code::~sustain:: function, which must be executed from within the event (link::Classes/Environment#-use::).
181 ::
182
183 code::
184 if(thisShouldSwing) {
185 ev[\timingOffset] = (ev[\timingOffset] ? 0) + adjust;
186 // if next note will not swing, this note needs to be shortened
187 if(nextShouldSwing.not) {
188 ev[\sustain] = ev.use { ~sustain.value } - adjust;
189 };
190 } {
191 // if next note will swing, this note needs to be lengthened
192 if(nextShouldSwing) {
193 ev[\sustain] = ev.use { ~sustain.value } + adjust;
194 };
195 };
196 ::
197
198 ~~
199
200 teletype::yield:: is a bit of a funny method. It doesn't return its result right away. It passes the yielded value to whichever block of code called teletype::next:: on the stream, and then pauses. Then, the next time teletype::next:: is called, the teletype::yield:: method returns, taking its value from teletype::next::'s argument. Here, that will be the event currently being processed, so we need to reassign it to teletype::ev:: and loop back.
201
202 This is the normal, correct way to handle input values from teletype::next:: within routines.
203
204 code::
205 ev = ev.yield;
206 };
207 });
208 )
209 ::
210
211
212
213 Previous: link::Tutorials/A-Practical-Guide/PG_Cookbook07_Rhythmic_Variations::
214
215 Next: link::Tutorials/A-Practical-Guide/PG_Ref01_Pattern_Internals::
0 title:: PG_Ref01_Pattern_Internals
0 title:: Pattern Guide Reference 01: Pattern Internals
11 summary:: Details of pattern implementation, with guidance on writing new pattern classes
2 related:: Tutorials/A-Practical-Guide/PG_Cookbook07_Rhythmic_Variations
2 related:: Tutorials/A-Practical-Guide/PG_Cookbook08_Swing
33 categories:: Streams-Patterns-Events>A-Practical-Guide
44
55 section::Inner workings of patterns
271271
272272 Or, if there is a chance of the pattern stopping before one or more child patterns has stopped on its own, EventStreamCleanup is important so that the pattern is aware of cleanup actions from the children. For example, in a construction like code::Pfindur(10, Pmono(name, pairs...)):: , Pmono may continue for more than 10 beats, in which case Pfindur will cut it off. The Pmono needs to end its synth, but it doesn't know that a pattern higher up in the chain is making it stop. It becomes the parent's responsibility to clean up after the children. As illustrated above, EventStreamCleanup handles this with only minimal intrusion into normal pattern logic.
273273
274 Previous: link::Tutorials/A-Practical-Guide/PG_Cookbook07_Rhythmic_Variations::
274 Previous: link::Tutorials/A-Practical-Guide/PG_Cookbook08_Swing::
130130
131131 section::Reverberation
132132
133 The next example is by James McCartney. It comes from the link::#why_supercollider_2.0_?#01 Why SuperCollider:: document that was part of the SuperCollider2 distribution.
133 The next example is by James McCartney. It comes from the link::#Why Supercollider 2.0?#01 Why SuperCollider:: document that was part of the SuperCollider2 distribution.
134134
135135 The example is more or less a Schroeder reverb - a signal passed through a parallel bank of comb filters which then pass through a series of allpass filters.
136136
244244
245245 For context, here, below, is the complete text of the strong::01 Why SuperCollider:: document (by James McCartney) from the SuperCollider 2 distribution.
246246
247 section::Why SuperCollider 2.0 ?
247 section::Why SuperCollider 2.0?
248248
249249 SuperCollider version 2.0 is a new programming language. strong::Why invent a new language and not use an existing language?:: Computer music composition is a specification problem. Both sound synthesis and the composition of sounds are complex problems and demand a language which is highly expressive in order to deal with that complexity. Real time signal processing is a problem demanding an efficient implementation with bounded time operations.
250250 There was no language combining the features I wanted and needed for doing digital music synthesis. The SuperCollider language is most like Smalltalk. Everything is an object. It has class objects, methods, dynamic typing, full closures, default arguments, variable length argument lists, multiple assignment, etc. The implementation provides fast, constant time method lookup, real time garbage collection, and stack allocation of most function contexts while maintaining full closure semantics.
0 /************************************************************************
1 *
2 * Copyright 2010 Jakob Leben (jakob.leben@gmail.com)
3 *
4 * This file is part of SuperCollider Qt GUI.
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 *
19 ************************************************************************/
20
021 #include "Common.h"
122 #include "Slot.h"
223
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
6767 Event_Proxy_BringFront,
6868 Event_Proxy_SetFocus,
6969 Event_Proxy_SetAlwaysOnTop,
70 Event_Proxy_StartDrag,
7170 Event_Proxy_Release
7271 };
7372
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
463463
464464 QList<QVariant> args;
465465
466 if( !filterEvent( watched, event, *d, args ) ) {
466 if( !preProcessEvent( watched, event, *d, args ) ) {
467467 qcProxyDebugMsg(3,QString("Event (%1, %2) not handled, forwarding to the widget")
468468 .arg(type)
469469 .arg(event->spontaneous() ? "spontaneous" : "inspontaneous") );
476476 .arg(d->method->name)
477477 .arg(d->sync == Synchronous ? "sync" : "async") );
478478
479 return invokeEventHandler( event, *d, args );
479 bool eventHandled = invokeEventHandler( event, *d, args );
480
481 eventHandled = postProcessEvent( watched, event, eventHandled );
482
483 return eventHandled;
480484 }
481485
482486 bool QObjectProxy::invokeEventHandler( QEvent *event, EventHandlerData &eh, QList<QVariant> & args )
506510 return false;
507511 }
508512
509 bool QObjectProxy::filterEvent( QObject *, QEvent *e, EventHandlerData & eh, QList<QVariant> & args )
513 bool QObjectProxy::preProcessEvent( QObject *, QEvent *e, EventHandlerData & eh, QList<QVariant> & args )
510514 {
511515 return eh.enabled;
512516 }
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
132132
133133 virtual void customEvent( QEvent * );
134134
135 virtual bool filterEvent( QObject *, QEvent *, EventHandlerData &, QList<QVariant> & args );
135 virtual bool preProcessEvent( QObject *, QEvent *, EventHandlerData &, QList<QVariant> & args );
136
137 virtual bool postProcessEvent( QObject *, QEvent *, bool handled ) { return handled; }
136138
137139 bool invokeEventHandler( QEvent *e, EventHandlerData &, QList<QVariant> & args );
138140
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
2929 #include <QPainter>
3030 #include <QFontMetrics>
3131 #include <QUrl>
32 #include <QMimeData>
33 #include <QDrag>
3234
3335 #ifdef Q_WS_X11
3436 # include "hacks/hacks_x11.hpp"
4244 using namespace QtCollider;
4345
4446 QAtomicInt QWidgetProxy::_globalEventMask = 0;
45
46 QWidgetProxy::QWidgetProxy( QWidget *w, PyrObject *po )
47 : QObjectProxy( w, po ), _keyEventWidget( w ), _mouseEventWidget( w )
47 QMimeData * QWidgetProxy::sDragData = 0;
48 QString QWidgetProxy::sDragLabel;
49
50 QWidgetProxy::QWidgetProxy( QWidget *w, PyrObject *po ):
51 QObjectProxy( w, po ),
52 _keyEventWidget( w ),
53 _mouseEventWidget( w ),
54 _performDrag(false)
4855 { }
4956
5057 void QWidgetProxy::setKeyEventWidget( QWidget *w )
127134 return true;
128135 }
129136 return false;
137 }
138
139 void QWidgetProxy::setDragData( QMimeData * data, const QString & label )
140 {
141 if (data == 0)
142 return;
143
144 if (sDragData == 0) {
145 sDragData = data;
146 sDragLabel = label;
147 _performDrag = true;
148 } else {
149 delete data;
150 qcErrorMsg( "QWidgetProxy: attempt at starting a drag while another one is in progress.");
151 }
130152 }
131153
132154 void QWidgetProxy::customEvent( QEvent *e )
142164 case QtCollider::Event_Proxy_SetAlwaysOnTop:
143165 setAlwaysOnTopEvent( static_cast<SetAlwaysOnTopEvent*>(e) );
144166 return;
145 case QtCollider::Event_Proxy_StartDrag:
146 startDragEvent( static_cast<StartDragEvent*>(e) );
147 return;
148167 default:
149168 QObjectProxy::customEvent(e);
150169 }
199218 }
200219 }
201220
202 void QWidgetProxy::startDragEvent( StartDragEvent* e )
203 {
204 QWidget *w = widget();
205 if( !w ) return;
206
207 QFont f;
208 const QString & label = e->label;
209 QFontMetrics fm( f );
210 QSize size = fm.size( 0, label ) + QSize(8,4);
211
212 QPixmap pix( size );
213 QPainter p( &pix );
214 p.setBrush( QColor(255,255,255) );
215 QRect r( pix.rect() );
216 p.drawRect(r.adjusted(0,0,-1,-1));
217 p.drawText( r, Qt::AlignCenter, label );
218 p.end();
219
220 QMimeData *mime = e->data;
221 e->data = 0; // prevent deleting the data when event destroyed;
222
223 QDrag *drag = new QDrag(w);
224 drag->setMimeData( mime );
225 drag->setPixmap( pix );
226 drag->setHotSpot( QPoint( 0, + r.height() + 2 ) );
227 drag->exec();
228 }
229
230 bool QWidgetProxy::filterEvent( QObject *o, QEvent *e, EventHandlerData &eh, QList<QVariant> & args )
221 void QWidgetProxy::performDrag()
222 {
223 Q_ASSERT(sDragData);
224
225 QFont f;
226 const QString & label = sDragLabel;
227 QFontMetrics fm( f );
228 QSize size = fm.size( 0, label ) + QSize(8,4);
229
230 QPixmap pix( size );
231 QPainter p( &pix );
232 p.setBrush( QColor(255,255,255) );
233 QRect r( pix.rect() );
234 p.drawRect(r.adjusted(0,0,-1,-1));
235 p.drawText( r, Qt::AlignCenter, label );
236 p.end();
237
238 QDrag *drag = new QDrag( widget() );
239 drag->setMimeData( sDragData );
240 drag->setPixmap( pix );
241 drag->setHotSpot( QPoint( 0, + r.height() + 2 ) );
242 drag->exec();
243
244 sDragData = 0;
245 sDragLabel.clear();
246 }
247
248 bool QWidgetProxy::preProcessEvent( QObject *o, QEvent *e, EventHandlerData &eh, QList<QVariant> & args )
231249 {
232250 // NOTE We assume that qObject need not be checked here, as we wouldn't get events if
233251 // it wasn't existing
471489 return true;
472490 }
473491
492 bool QWidgetProxy::postProcessEvent( QObject *object, QEvent *event, bool handled )
493 {
494 if (_performDrag) {
495 _performDrag = false;
496 performDrag();
497 return true;
498 }
499
500 return handled;
501 }
474502
475503 void QWidgetProxy::customPaint( QPainter *painter )
476504 {
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
7171
7272 virtual bool setParent( QObjectProxy *parent );
7373
74 void setDragData( QMimeData * data, const QString & label );
75
7476 inline QWidget *widget() { return static_cast<QWidget*>( object() ); }
7577
7678 protected:
7779
7880 virtual void customEvent( QEvent * );
7981
80 virtual bool filterEvent( QObject *, QEvent *, EventHandlerData &, QList<QVariant> & args );
82 virtual bool preProcessEvent( QObject *, QEvent *, EventHandlerData &, QList<QVariant> & args );
83
84 virtual bool postProcessEvent( QObject *, QEvent *, bool handled );
8185
8286 private Q_SLOTS:
8387
9296 void bringFrontEvent();
9397 void setFocusEvent( QtCollider::SetFocusEvent * );
9498 void setAlwaysOnTopEvent( QtCollider::SetAlwaysOnTopEvent * );
95 void startDragEvent( QtCollider::StartDragEvent * );
99 void performDrag();
96100
97101 static void sendRefreshEventRecursive( QWidget *w );
98102
99103 QWidget *_keyEventWidget;
100104 QWidget *_mouseEventWidget;
101105 static QAtomicInt _globalEventMask;
106
107 static QMimeData *sDragData;
108 static QString sDragLabel;
109 bool _performDrag;
102110 };
103111
104112 namespace QtCollider {
121129 bool alwaysOnTop;
122130 };
123131
124 struct StartDragEvent : public QEvent
125 {
126 StartDragEvent( const QString &label_, QMimeData *data_ )
127 : QEvent( (QEvent::Type) QtCollider::Event_Proxy_StartDrag ),
128 label( label_ ), data( data_ )
129 {}
130 ~StartDragEvent() { delete data; }
131 QString label;
132 QMimeData *data;
133 };
134
135132 }
136133
137134 #endif //QC_WIDGET_PROXY_H
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
1111 *
1212 * This program is free software: you can redistribute it and/or modify
1313 * it under the terms of the GNU General Public License as published by
14 * the Free Software Foundation, either version 3 of the License, or
14 * the Free Software Foundation, either version 2 of the License, or
1515 * (at your option) any later version.
1616 *
1717 * This program is distributed in the hope that it will be useful,
66 *
77 * This program is free software: you can redistribute it and/or modify
88 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
9 * the Free Software Foundation, either version 2 of the License, or
1010 * (at your option) any later version.
1111 *
1212 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
99 *
1010 * This program is free software: you can redistribute it and/or modify
1111 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation, either version 3 of the License, or
12 * the Free Software Foundation, either version 2 of the License, or
1313 * (at your option) any later version.
1414 *
1515 * This program is distributed in the hope that it will be useful,
99 *
1010 * This program is free software: you can redistribute it and/or modify
1111 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation, either version 3 of the License, or
12 * the Free Software Foundation, either version 2 of the License, or
1313 * (at your option) any later version.
1414 *
1515 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
77 *
88 * This program is free software: you can redistribute it and/or modify
99 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation, either version 3 of the License, or
10 * the Free Software Foundation, either version 2 of the License, or
1111 * (at your option) any later version.
1212 *
1313 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
127127 };
128128
129129 QC_LANG_PRIMITIVE( QWidget_StartDrag, 3, PyrSlot *r, PyrSlot *a, VMGlobals *g ) {
130 qcDebugMsg(1, "Starting drag...");
131
130132 QWidgetProxy *wProxy = qobject_cast<QWidgetProxy*>( Slot::toObjectProxy(r) );
131133 if( !wProxy->compareThread() ) return QtCollider::wrongThreadError();
132134
133135 PyrSlot *data = a+1;
134136 QString str = Slot::toString(a+2);
137 QString label = Slot::toString(a);
135138
136139 QMimeData *mime = new QtCollider::MimeData;
137140
144147 if( !str.isEmpty() )
145148 mime->setText( str );
146149
147 QApplication::postEvent( wProxy, new StartDragEvent( Slot::toString(a), mime ) );
150 wProxy->setDragData( mime, label );
148151
149152 return errNone;
150153 }
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
3939 #include <QDesktopWidget>
4040 #include <QStyleFactory>
4141 #include <QWebSettings>
42 #include <QCursor>
4243
4344 namespace QtCollider {
4445
265266 return errNone;
266267 }
267268
269 QC_LANG_PRIMITIVE( Qt_CursorPosition, 0, PyrSlot *r, PyrSlot *a, VMGlobals *g )
270 {
271 if( !QcApplication::compareThread() ) return QtCollider::wrongThreadError();
272
273 Slot::setPoint(r, QCursor::pos());
274 return errNone;
275 }
276
268277 void defineMiscPrimitives()
269278 {
270279 LangPrimitiveDefiner definer;
283292 definer.define<Qt_AvailableStyles>();
284293 definer.define<Qt_IsMethodOverridden>();
285294 definer.define<QWebView_ClearMemoryCaches>();
295 definer.define<Qt_CursorPosition>();
286296 }
287297
288298 } // namespace QtCollider
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
105105 {
106106 QcGraphElement *e = currentElement();
107107 return e ? _model.elements().indexOf(e) : -1;
108 }
109
110 VariantList QcGraph::selectionIndexes() const
111 {
112 VariantList result;
113 int c = _model.elementCount();
114 for( int i = 0; i < c; ++i ) {
115 QcGraphElement *e = _model.elementAt(i);
116 if(e->selected) result.data.append(i);
117 }
118 return result;
108119 }
109120
110121 float QcGraph::currentX() const
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
129129 Q_PROPERTY( VariantList strings READ dummyVariantList WRITE setStrings );
130130 Q_PROPERTY( int index READ index WRITE setIndex );
131131 Q_PROPERTY( int lastIndex READ lastIndex );
132 Q_PROPERTY( VariantList selectionIndexes READ selectionIndexes);
132133 Q_PROPERTY( int thumbSize READ dummyInt WRITE setThumbSize );
133134 Q_PROPERTY( int thumbWidth READ dummyInt WRITE setThumbWidth );
134135 Q_PROPERTY( int thumbHeight READ dummyInt WRITE setThumbHeight );
194195 QcGraphElement *currentElement() const;
195196 int index() const;
196197 int lastIndex() const { return _lastIndex; }
198 VariantList selectionIndexes() const;
197199 float currentX() const;
198200 float currentY() const;
199201 QPointF grid() const { return _gridMetrics; }
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
2222 #include "../QcWidgetFactory.h"
2323
2424 #include <QKeyEvent>
25 #include <QModelIndex>
2526
2627 class QcListWidgetFactory : public QcWidgetFactory<QcListWidget>
2728 {
6768 _emitAction = b;
6869 }
6970
71 VariantList QcListWidget::selection() const
72 {
73 QModelIndexList modelIndexes = QListView::selectedIndexes();
74 VariantList indexes;
75 Q_FOREACH( const QModelIndex & index, modelIndexes )
76 indexes.data << index.row();
77 return indexes;
78 }
79
7080 void QcListWidget::onCurrentItemChanged()
7181 {
7282 if( _emitAction ) Q_EMIT( action() );
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
1919 ************************************************************************/
2020
2121 #include "../QcHelper.h"
22 #include "../Common.h"
2223 #include <QListWidget>
2324
2425 class QcListWidget : public QListWidget, QcHelper
2728 Q_PROPERTY( VariantList items READ dummyVariantList WRITE setItems );
2829 Q_PROPERTY( VariantList colors READ dummyVariantList WRITE setColors );
2930 Q_PROPERTY( int currentRow READ currentRow WRITE setCurrentRowWithoutAction )
31 Q_PROPERTY( VariantList selection READ selection );
3032
3133 public:
3234 QcListWidget();
3335 void setItems( const VariantList & );
3436 void setColors( const VariantList & ) const;
3537 void setCurrentRowWithoutAction( int );
38 VariantList selection() const;
39
3640 Q_SIGNALS:
3741 void action();
3842 void returnPressed();
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
66 *
77 * This program is free software: you can redistribute it and/or modify
88 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
9 * the Free Software Foundation, either version 2 of the License, or
1010 * (at your option) any later version.
1111 *
1212 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
1919 ************************************************************************/
2020
2121 #include "view.hpp"
22 #include <limits>
2223
2324 SoundFileStream::SoundFileStream() : _data(0), _dataSize(0), _dataOffset(0)
2425 {}
4344
4445 _data = new short [_dataSize * info.channels];
4546 sf_seek( sf, _dataOffset, SEEK_SET);
46 _dataSize = sf_readf_short( sf, _data, _dataSize );
47
48 if (info.format & SF_FORMAT_FLOAT || info.format & SF_FORMAT_DOUBLE)
49 {
50 // libsndfile reading float into short is broken for non-power-of-two channel counts
51 int sampleCount = _dataSize * info.channels;
52 float *tmp = new float [sampleCount];
53 _dataSize = sf_readf_float( sf, tmp, _dataSize );
54 for (int i = 0; i < sampleCount; ++i)
55 _data[i] = std::max( -1.f, std::min( 1.f, tmp[i] ) ) * std::numeric_limits<short>::max();
56 delete[] tmp;
57 }
58 else
59 {
60 _dataSize = sf_readf_short( sf, _data, _dataSize );
61 }
4762
4863 _ch = info.channels;
4964 _beg = _dataOffset;
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
55 *
66 * This program is free software: you can redistribute it and/or modify
77 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
8 * the Free Software Foundation, either version 2 of the License, or
99 * (at your option) any later version.
1010 *
1111 * This program is distributed in the hope that it will be useful,
134134 //************** inconsistent argnames, see SequenceableColllection unlace!
135135 unlace { arg clumpSize=2, numChan=1, clip=false;
136136 ^if(clip) {
137 super.unlace(clumpSize, numChan)
137 super.unlace(clumpSize, numChan, true)
138138 } {
139139 this.prUnlace(clumpSize, numChan) // clip not yet implemented in primitive
140140 }
481481 }
482482
483483 speak { arg channel = 0, force = false;
484 // FIXME: this should better be handled by Platform than GUI
484485 var speech = GUI.current.speech;
485486 if( speech.initialized.not, { speech.init });
486487 speech.channels[ channel ].speak( this, force );
354354 server.listSendMsg( this.freeMsg(completionMessage) );
355355 }
356356 freeMsg { arg completionMessage;
357 var msg;
357358 this.uncache;
358359 server.bufferAllocator.free(bufnum);
359 ^["/b_free", bufnum, completionMessage.value(this)];
360 msg = ["/b_free", bufnum, completionMessage.value(this)];
361 bufnum = numFrames = numChannels = sampleRate = path = nil;
362 ^msg
360363 }
361364 *freeAll { arg server;
362365 var b;
242242 free { |address|
243243 var block,
244244 prev, next, temp;
245 // this 'if' prevents an error if a Buffer object is freed twice
246 if(address.isNil) { ^this };
245247 ((block = array[address]).notNil and: { block.used }).if({
246248 block.used = false;
247249 this.addToFreed(block);
183183 var curThread, <mainThread;
184184 var schedulerQueue;
185185 var <>nowExecutingPath;
186
187 // SCVersion.sc overrides these for Main
188 *scVersionMajor { ^123 }
189 *scVersionMinor { ^0 }
190 *scVersionPostfix { ^"unknown" }
191186
192187 startup {
193188 var time;
0 // PlusFreqScope and PlusFreqScopeWindow
1 // by Lance Putnam
2 // cross-platform port by Tim Blechmann
3
40 PlusFreqScope {
51 classvar <server;
62
193189 rate = 4;
194190 freqMode = 0;
195191 bufSize = 2048;
192 ServerQuit.add(this, server);
196193 ^this;
197194 }
198195
204201 } {
205202 Buffer.alloc(server, bufSize/4, 1, { |sbuf|
206203 scope.bufnum = sbuf.bufnum;
207 ("FreqScope: Buffer allocated ("
208 ++ sbuf.bufnum.asString ++ ")").postln;
209204 scopebuf = sbuf;
210205 this.start;
211206 });
213208 }
214209
215210 freeBuffers {
216 if( scopebuf.notNil, {
217 ("FreqScope: Buffer freed (" ++ scopebuf.bufnum.asString ++ ")").postln;
211 if (scopebuf.notNil) {
218212 scopebuf.free; scopebuf = nil;
219 });
213 };
220214 }
221215
222216 start {
230224 kill {
231225 this.active_(false);
232226 this.freeBuffers;
233 }
234
235 active_ { arg bool;
236 if(server.serverRunning, { // don't do anything unless server is running
237
238 if(bool, {
239 if(active.not, {
240 CmdPeriod.add(this);
241 if(scopebuf.isNil) { // first activation
242 this.allocBuffersAndStart;
243 } {
244 this.start;
245 };
246 });
247 }, {
248 if(active, {
249 if (scope.class.name === \QScope2) { scope.stop };
250 synth.free;
251 CmdPeriod.remove(this);
252 });
253 });
254 active=bool;
255
256 });
227 ServerQuit.remove(this, server);
228 }
229
230 active_ { arg activate;
231 if (activate) {
232 ServerTree.add(this, server);
233 if (server.serverRunning) {
234 active=activate;
235 this.doOnServerTree;
236 ^this
237 }
238 } {
239 ServerTree.remove(this, server);
240 if (server.serverRunning and: active) {
241 if (scope.class.name === \QScope2) { scope.stop };
242 synth.free;
243 };
244 };
245 active=activate;
257246 ^this
247 }
248
249 doOnServerTree {
250 if (active) {
251 if (scopebuf.isNil) {
252 this.allocBuffersAndStart;
253 } {
254 this.start;
255 }
256 }
257 }
258
259 doOnServerQuit {
260 scope.stop;
261 scopebuf = synth = nil;
258262 }
259263
260264 inBus_ { arg num;
278282 if(active, {
279283 synth.free;
280284 this.start;
281 });
282 }
283
284 cmdPeriod {
285 this.changed(\cmdPeriod);
286 if(active == true, {
287 CmdPeriod.remove(this);
288 active = false;
289 // needs to be deferred to build up synth again properly
290 {
291 server.sync;
292 this.active_(true);
293 }.fork(AppClock)
294285 });
295286 }
296287
482473 .canFocus_(false)
483474 ;
484475
485 window.onClose_({ scope.kill;
476 window.onClose_({
477 scope.kill;
486478 scopeOpen = false;
487479 }).front;
488480 ^super.newCopyArgs(scope, window)
835835 {
836836 plotter.domainSpecs = ControlSpec(0, duration, units: "s");
837837 plotter.setValue(
838 array.unlace(buf.numChannels).collect(_.drop(-1)),
838 array.unlace(numChan).collect(_.drop(-1)),
839839 findSpecs: true,
840840 refresh: false
841841 );
141141 }
142142
143143 *version {^[this.scVersionMajor, ".", this.scVersionMinor, this.scVersionPostfix].join}
144
145 *scVersionMajor { _SC_VersionMajor }
146 *scVersionMinor { _SC_VersionMinor }
147 *scVersionPostfix { _SC_VersionPatch }
144148
145149 *versionAtLeast { |maj, min|
146150 ^if((maj==this.scVersionMajor) and:{min.notNil}){
7070 clearMetadata { |path| ^this.subclassResponsibility }
7171 *clearMetadata { |path| ^thisProcess.platform.clearMetadata(path) }
7272
73 getMouseCoords { ^this.subclassResponsibility }
74 *getMouseCoords { ^thisProcess.platform.getMouseCoords }
73 getMouseCoords { ^Platform.getMouseCoords }
74 *getMouseCoords { ^GUI.cursorPosition }
7575
7676 // startup/shutdown hooks
7777 startup { }
5858 }
5959
6060 lastIndex { ^this.getProperty( \lastIndex ); }
61
62 selection { ^this.getProperty( \selectionIndexes );}
6163
6264 selectIndex { arg index;
6365 if( index < 0 ){
4747
4848 centered_ { arg bool; this.setProperty( \centered, bool ); }
4949 centered { ^this.getProperty( \centered ); }
50
51 background { ^this.palette.button; }
52
53 background_ { arg color; this.palette = this.palette.button_(color); }
5054
5155 // FIXME: find better alternatives to set colors separately.
5256 color_ { arg colors;
33
44 *qtClass { ^'QcListWidget' }
55
6 *new { arg parent, bounds;
7 ^super.new(parent, bounds)
8 .setEventHandler( QObject.mouseMoveEvent, \mouseMoveEvent, true );
9 }
10
611 mouseDownEvent { arg x, y, modifiers, buttonNumber, clickCount;
7 // Override QView:mouseDownEvent:
8 // If Ctrl / Cmd is pressed, try to start the drag after this event
9 // is processed, so that current item can be changed before.
10 if( (modifiers & QKeyModifiers.control) > 0 ) {
11 AppClock.sched( 0, {this.beginDrag(x,y)} );
12 // Override QView:mouseDownEvent: postpone drag start to move event
13 modifiers = QKeyModifiers.toCocoa(modifiers);
14 ^this.mouseDown( x, y, modifiers, buttonNumber, clickCount );
15 }
16
17 mouseMoveEvent { arg x, y, modifiers, buttons;
18 // Override QView:mouseMoveEvent: start drag
19 if( buttons != 0 and: ((modifiers & QKeyModifiers.control) > 0) ) {
20 if( this.beginDrag( x, y ) ) { ^true };
1221 };
1322
14 modifiers = QKeyModifiers.toCocoa(modifiers);
15 ^this.mouseDown( x, y, modifiers, buttonNumber, clickCount );
23 ^super.mouseMoveEvent(x, y, modifiers, buttons);
1624 }
1725
1826 selectionMode_ { arg mode;
4654 value_ { arg val;
4755 this.setProperty( \currentRow, val ? -1 );
4856 }
57
58 selection { ^ this.getProperty(\selection) }
4959
5060 background { ^this.palette.base; }
5161 background_ { arg color; this.palette = this.palette.base_(color); }
99 idxNumBox, chNumBox, styleMenu, rateMenu;
1010
1111 // static (immutable runtime environment)
12 var <server;
13 var scopeBuffer, maxBufSize;
12 var <server, synth;
13 var maxBufSize;
1414 var aBusSpec, cBusSpec, cycleSpec, yZoomSpec;
1515 var <>smallSize, <>largeSize;
1616
1818 var <bus; // partly immutable; can't change numChannels at runtime
1919 var busSpec; // either aBusSpec or cBusSpec, depending on bus rate
2020 var <cycle, <yZoom;
21 var synth, synthWatcher, defName;
2221 var sizeToggle=false;
23 var running = false;
2422
2523 *implementsClass {^'Stethoscope'}
2624
6260 var singleBus;
6361
6462 server = server_;
63 synth = BusScopeSynth(server);
6564
6665 maxBufSize = max(bufsize_, 128);
6766
7473 busSpec = if(bus.rate===\audio){aBusSpec}{cBusSpec};
7574 };
7675
77 cycleSpec = ControlSpec( 64, maxBufSize, \exponential );
76 cycleSpec = ControlSpec( maxBufSize, 64, \exponential );
7877 yZoomSpec = ControlSpec( 0.125, 16, \exponential );
7978 cycle = cycleSpec.constrain(cycle_);
8079 yZoom = 1.0;
152151 chNumBox.action = { |me| setNumChannels.value(me.value) };
153152 rateMenu.action = { |me| setRate.value(me.value) };
154153 styleMenu.action = { |me| setStyle.value(me.value) };
155 view.asView.keyDownAction = { |v, char| this.keyDown(char) };
154 view.asView.keyDownAction = { |v, char, mod| this.keyDown(char, mod) };
156155 view.onClose = { view = nil; this.quit; };
157156
158157 // LAUNCH
163162
164163 setCycle = { arg val;
165164 cycle = val;
166 if( synth.notNil ) { synth.set(\frames, val) }
165 synth.setCycle(val);
167166 };
168167
169168 setYZoom = { arg val;
174173 // NOTE: assuming a single Bus
175174 setIndex = { arg i;
176175 bus = Bus(bus.rate, i, bus.numChannels, bus.server);
177 if(synth.notNil) { synth.set(\in, i) };
176 synth.setBusIndex(i);
178177 };
179178
180179 // NOTE: assuming a single Bus
181180 setNumChannels = { arg n;
182181 // we have to restart the whole thing:
183 this.stop;
184182 bus = Bus(bus.rate, bus.index, n, bus.server);
183 updateColors.value;
185184 this.run;
186185 };
187186
191190 0, {
192191 bus = Bus(\audio, bus.index, bus.numChannels, bus.server);
193192 busSpec = aBusSpec;
194 if(synth.notNil) { synth.set(\switch, 0) };
195193 },
196194 1, {
197195 bus = Bus(\control, bus.index, bus.numChannels, bus.server);
198196 busSpec = cBusSpec;
199 if(synth.notNil) { synth.set(\switch, 1) };
200197 }
201198 );
199 synth.setRate(val);
202200 idxNumBox.clipLo_(busSpec.minval).clipHi_(busSpec.maxval).value_(bus.index);
203201 this.index = bus.index; // ensure conformance with busSpec;
204202 updateColors.value;
220218 scopeView.waveColors = colors;
221219 };
222220
223 playSynthDef = { arg def, args;
224 if( synthWatcher.notNil ) {synthWatcher.stop};
225 synthWatcher = fork {
226 def.send(server);
227 server.sync;
228 synth = Synth.tail(RootNode(server), def.name, args);
229 CmdPeriod.add(this);
230 {if(view.notNil){updateColors.value; scopeView.start}}.defer;
231 };
232 };
233
234221 makeGui.value(parent);
235
236 ServerBoot.add(this, server);
222 updateColors.value;
223
224 ServerTree.add(this, server);
237225 ServerQuit.add(this, server);
238226 this.run;
239227 }
240228
241 doOnServerBoot {
242 this.run;
229 doOnServerTree {
230 this.run;
243231 }
244232
245233 doOnServerQuit {
246 this.stop;
247 scopeBuffer.free;
248 scopeBuffer = nil;
249 }
250
251 cmdPeriod {
252 synth = nil;
253234 this.stop;
254 CmdPeriod.remove(this);
255235 }
256236
257237 run {
258 var n_chan;
259
260 if(running || server.serverRunning.not) {^this};
261
262 if(scopeBuffer.isNil){
263 scopeBuffer = ScopeBuffer.alloc(server);
264 scopeView.bufnum = scopeBuffer.index;
265 defName = "stethoscope" ++ scopeBuffer.index.asString;
266 };
267
268 n_chan = this.numChannels.asInteger;
269
270 if( bus.class === Bus ) {
271 playSynthDef.value (
272 SynthDef(defName, { arg in, switch, frames;
273 var z;
274 z = Select.ar(switch, [
275 In.ar(in, n_chan),
276 K2A.ar(In.kr(in, n_chan))]
277 );
278 ScopeOut2.ar(z, scopeBuffer.index, maxBufSize, frames );
279 }),
280 [\in, bus.index, \switch, if('audio' === bus.rate){0}{1}, \frames, cycle]
281 )
282 }{
283 playSynthDef.value (
284 SynthDef(defName, { arg frames;
285 var z = Array(n_chan);
286 bus.do { |b| z = z ++ b.ar };
287 ScopeOut2.ar(z, scopeBuffer.index, maxBufSize, frames);
288 }),
289 [\frames, cycle]
290 );
291 };
292
293 running = true;
238 synth.play(maxBufSize, bus, cycle);
239 if( view.notNil && synth.bufferIndex.notNil) {
240 scopeView.bufnum = synth.bufferIndex;
241 scopeView.start;
242 };
294243 }
295244
296245 stop {
297246 if( view.notNil ) { {scopeView.stop}.defer };
298
299 if( synthWatcher.notNil ) { synthWatcher.stop };
300
301 if( synth.notNil ) {
302 synth.free;
303 synth = nil;
304 };
305
306 running = false;
247 synth.stop;
307248 }
308249
309250 quit {
310251 var win;
311252 this.stop;
312 ServerBoot.remove(this, server);
253 synth.free;
254 if(window.notNil) { win = window; window = nil; { win.close }.defer; };
255 ServerTree.remove(this, server);
313256 ServerQuit.remove(this, server);
314 CmdPeriod.remove(this);
315 if(scopeBuffer.notNil) {scopeBuffer.free; scopeBuffer=nil};
316 if(window.notNil) { win = window; window = nil; { win.close }.defer; };
317257 }
318258
319259 setProperties { arg numChannels, index, bufsize, zoom, rate;
320 var new_bus;
321 var isRunning = running;
322
323 if (isRunning) {this.stop};
324
325 // process args
326
327 if(index.notNil || numChannels.notNil || rate.notNil) {
328 bus = if(bus.class === Bus) {
329 Bus (
330 rate ? bus.rate,
331 index ? bus.index,
332 numChannels ? bus.numChannels,
333 server
334 )
335 }{
336 Bus (
337 rate ? \audio,
338 index ? 0,
339 numChannels ? 2,
340 server
341 )
342 };
260 var new_bus;
261
262 // process args
263
264 if(index.notNil || numChannels.notNil || rate.notNil) {
265 bus = if(bus.class === Bus) {
266 Bus (
267 rate ? bus.rate,
268 index ? bus.index,
269 numChannels ? bus.numChannels,
270 server
271 )
272 }{
273 Bus (
274 rate ? \audio,
275 index ? 0,
276 numChannels ? 2,
277 server
278 )
343279 };
344 if(bufsize.notNil) { maxBufSize = max(bufsize, 128) };
345
346 // set other vars related to args
347
348 busSpec = if(bus.rate === \audio) {aBusSpec} {cBusSpec};
349 cycleSpec = ControlSpec( 64, maxBufSize, \exponential );
350 if(zoom.notNil)
351 { cycle = cycleSpec.constrain( 1024 * zoom.asFloat.reciprocal ) };
352
353 // update GUI
354
355 cycleSlider.value = cycleSpec.unmap(cycle);
356 rateMenu.value_(if(bus.rate === \audio){0}{1}).enabled_(true);
357 idxNumBox.clipLo_(busSpec.minval).clipHi_(busSpec.maxval).value_(bus.index).enabled_(true);
358 chNumBox.value_(bus.numChannels).enabled_(true);
359
360 if (isRunning) {this.run};
280 };
281 if(bufsize.notNil) { maxBufSize = max(bufsize, 128) };
282
283 // set other vars related to args
284
285 busSpec = if(bus.rate === \audio) {aBusSpec} {cBusSpec};
286 cycleSpec = ControlSpec( maxBufSize, 64, \exponential );
287 if(zoom.notNil)
288 { cycle = cycleSpec.constrain( 1024 * zoom.asFloat.reciprocal ) };
289
290 // update GUI
291
292 cycleSlider.value = cycleSpec.unmap(cycle);
293 rateMenu.value_(if(bus.rate === \audio){0}{1}).enabled_(true);
294 idxNumBox.clipLo_(busSpec.minval).clipHi_(busSpec.maxval).value_(bus.index).enabled_(true);
295 chNumBox.value_(bus.numChannels).enabled_(true);
296 updateColors.value;
297
298 if (synth.isRunning) { synth.play(maxBufSize, bus, cycle) };
361299 }
362300
363301 bufsize { ^maxBufSize }
364302
365303 bus_ { arg b;
366304 var isSingle = b.class === Bus;
367 var isRunning = running;
368
369 if (isRunning) {this.stop};
370305
371306 bus = b;
372307
385320 idxNumBox.enabled = isSingle;
386321 chNumBox.enabled = isSingle;
387322
388 if (isRunning) {this.run};
323 updateColors.value;
324
325 if (synth.isRunning) { synth.play(maxBufSize, bus, cycle); };
389326 }
390327
391328 numChannels {
482419 this.bus = Bus(\audio, 0, c, server);
483420 }
484421
485 keyDown { arg char;
422 keyDown { arg char, mod;
423 if (mod != 0) { ^false };
486424 case (
487425 { char === $i }, { this.toInputBus },
488426 { char === $o }, { this.toOutputBus },
503441 ^true;
504442 }
505443 }
444
445 BusScopeSynth {
446 // Encapsulate management of server resources
447
448 var server, buffer, synthDefName, synth;
449 var playThread, playCond;
450
451 *new { arg server;
452 var instance;
453 server = server ? Server.default;
454 instance = super.newCopyArgs(server);
455 ServerQuit.add(instance);
456 ^instance;
457 }
458
459 play { arg bufSize, bus, cycle;
460 var synthDef;
461 var synthArgs;
462 var bufIndex;
463 var busChannels;
464
465 if(server.serverRunning.not) { ^this };
466
467 this.stop;
468
469 if (buffer.isNil) {
470 buffer = ScopeBuffer.alloc(server);
471 synthDefName = "stethoscope" ++ buffer.index.asString;
472 };
473
474 bufIndex = buffer.index.asInteger;
475
476 if( bus.class === Bus ) {
477 busChannels = bus.numChannels.asInteger;
478 synthDef = SynthDef(synthDefName, { arg busIndex, rate, cycle;
479 var z;
480 z = Select.ar(rate, [
481 In.ar(busIndex, busChannels),
482 K2A.ar(In.kr(busIndex, busChannels))]
483 );
484 ScopeOut2.ar(z, bufIndex, bufSize, cycle );
485 });
486 synthArgs = [\busIndex, bus.index.asInteger, \rate, if('audio' === bus.rate, 0, 1), \cycle, cycle];
487 }{
488 synthDef = SynthDef(synthDefName, { arg cycle;
489 var z = Array();
490 bus.do { |b| z = z ++ b.ar };
491 ScopeOut2.ar(z, bufIndex, bufSize, cycle);
492 });
493 synthArgs = [\cycle, cycle];
494 };
495
496 playThread = fork {
497 var cond;
498 //("BufScopeSynth: waiting on previous synth...").postln;
499 if (playCond.notNil) { playCond.wait };
500 //postln("BufScopeSynth: got way.");
501 synthDef.send(server);
502 server.sync;
503 //postln("BufScopeSynth: synthdef sent.");
504 synth = Synth.tail(RootNode(server), synthDef.name, synthArgs);
505 //postln("BufScopeSynth: made synth:" + synth.nodeID);
506 playCond = cond = Condition();
507 synth.onFree { |thisSynth|
508 //postln("BufScopeSynth: Synth freed:" + thisSynth.nodeID);
509 cond.test = true; cond.signal;
510 if (synth.notNil and: {synth.nodeID == thisSynth.nodeID}) { synth = nil; }
511 }
512 }
513 }
514
515 stop {
516 if (playThread.notNil) { playThread.stop; playThread = nil };
517 if (synth.notNil) {
518 synth.free; synth = nil
519 };
520 }
521
522 isRunning { ^playThread.notNil }
523
524 bufferIndex { ^ buffer !? { buffer.index } }
525
526 setBusIndex { arg index;
527 if( synth.notNil ) { synth.set(\busIndex, index) };
528 }
529
530 setRate { arg rate; // 0 = audio, 1 = control
531 if( synth.notNil ) { synth.set(\rate, rate) };
532
533 }
534
535 setCycle { arg frames;
536 if( synth.notNil ) { synth.set(\cycle, frames) };
537 }
538
539 free {
540 this.stop;
541 if (buffer.notNil) {
542 buffer.free;
543 buffer = nil;
544 };
545 ServerQuit.remove(this, server);
546 }
547
548 doOnServerQuit {
549 buffer = nil;
550 synth = nil;
551 playCond = nil;
552 }
553 }
631631 if( (modifiers & QKeyModifiers.control) > 0 ) { // if Ctrl / Cmd mod
632632 // Try to get drag obj and start a drag.
633633 // If successful, block further processing of this event.
634 if( this.beginDrag( x, y ) ) { ^false };
634 if( this.beginDrag( x, y ) ) { ^true };
635635 };
636636
637637 // else continue to handle mouse down event
645645 }
646646
647647 mouseMoveEvent { arg x, y, modifiers, buttons;
648 // WARNING: Overridden in QListView!
648649 if( buttons != 0 ) {
649650 modifiers = QKeyModifiers.toCocoa(modifiers);
650651 ^this.mouseMove( x, y, modifiers );
8484 *font { ^QFont }
8585 *image { ^this.notImplemented( "Image" ) }
8686
87 *speech { ^'Speech'.asClass }
88
8789 *notImplemented { arg class;
8890 //("QtGUI: " ++ class.asString ++ " is not implemented yet").postln;
8991 ^nil;
9092 }
9193
9294 //////////////////////////////////////////////////////////////////////
95
96 *cursorPosition { _Qt_CursorPosition }
9397
9498 *availableStyles {
9599 _Qt_AvailableStyles
1212 mouseDownEvent { arg x, y, modifiers, buttonNumber, clickCount;
1313 // Try to get drag obj and start a drag.
1414 // If successful, block further processing of this event.
15 if( this.beginDrag( x, y ) ) { ^false };
15 if( this.beginDrag( x, y ) ) { ^true };
1616
1717 // else continue to handle mouse down event
1818 modifiers = QKeyModifiers.toCocoa(modifiers);
33 *
44 * This program is free software: you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
6 * the Free Software Foundation, either version 2 of the License, or
77 * (at your option) any later version.
88 *
99 * This program is distributed in the hope that it will be useful,
44 *
55 * This program is free software: you can redistribute it and/or modify
66 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
7 * the Free Software Foundation, either version 2 of the License, or
88 * (at your option) any later version.
99 *
1010 * This program is distributed in the hope that it will be useful,
55
66 This program is free software: you can redistribute it and/or modify
77 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
8 the Free Software Foundation, either version 2 of the License, or
99 (at your option) any later version.
1010
1111 This program is distributed in the hope that it will be useful,
44 *
55 * This program is free software: you can redistribute it and/or modify
66 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
7 * the Free Software Foundation, either version 2 of the License, or
88 * (at your option) any later version.
99 *
1010 * This program is distributed in the hope that it will be useful,
33 *
44 * This program is free software: you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
6 * the Free Software Foundation, either version 2 of the License, or
77 * (at your option) any later version.
88 *
99 * This program is distributed in the hope that it will be useful,
22
33 set(PROJECT_VERSION_MAJOR 3)
44 set(PROJECT_VERSION_MINOR 6)
5 set(PROJECT_VERSION_PATCH .1)
5 set(PROJECT_VERSION_PATCH .3)
99
1010 FIND_LIBRARY(
1111 FFTW3F_LIBRARY
12 NAMES fftw3f libfftw3f
12 NAMES fftw3f libfftw3f fftw3f-3
1313 HINTS $ENV{FFTW3_DIR}/lib
1414 PATHS /usr/local/lib
1515 /usr/lib
66 #
77
88 if(PORTMIDI_INCLUDE_DIRS AND PORTMIDI_LIBRARIES)
9 set(PORTMIDI_FOUND TRUE)
9 set(PORTMIDI_FOUND TRUE)
1010 else()
11 # Right now we only use PortMidi on Windows.
12 # When needed, implement finding it on other platforms.
13 set(PORTMIDI_FOUND FALSE)
11 # Right now we only use PortMidi on Windows.
12 # When needed, implement finding it on other platforms.
13
14 find_path(PORTMIDI_COMON_INCLUDE_DIR NAMES portmidi.h )
15 find_path(PORTMIDI_TIME_INCLUDE_DIR NAMES porttime.h )
16 find_library(PORTMIDI_LIBRARY NAMES portmidi )
17
18 if( PORTMIDI_COMON_INCLUDE_DIR AND
19 PORTMIDI_TIME_INCLUDE_DIR AND
20 PORTMIDI_LIBRARY )
21 set(PORTMIDI_FOUND TRUE)
22 set(PORTMIDI_INCLUDE_DIRS ${PORTMIDI_COMON_INCLUDE_DIR} ${PORTMIDI_TIME_INCLUDE_DIR})
23 set(PORTMIDI_LIBRARIES ${PORTMIDI_LIBRARY})
24 message(STATUS "Found Portmidi: ${PORTMIDI_INCLUDE_DIRS} ${PORTMIDI_LIBRARIES}")
25 else()
26 set(PORTMIDI_FOUND FALSE)
27 endif()
28
1429 endif()
15
2828 else()
2929 find_path(SNDFILE_INCLUDE_DIR sndfile.h)
3030
31 find_library(SNDFILE_LIBRARY NAMES sndfile)
31 find_library(SNDFILE_LIBRARY NAMES sndfile sndfile-1)
3232
3333 # Handle the QUIETLY and REQUIRED arguments and set SNDFILE_FOUND to TRUE if
3434 # all listed variables are TRUE.
2626 #ifdef _WIN32
2727 # include <windows.h>
2828 # include <direct.h>
29 # include <shlobj.h>
3029 # include "SC_Win32Utils.h"
3130 #else
3231 # include <unistd.h>
338337 void sc_GetSystemAppSupportDirectory(char *str, int size)
339338 {
340339 #ifdef _WIN32
341 ITEMIDLIST * pidl;
342 char buf[MAX_PATH];
343 SHGetFolderLocation(NULL, CSIDL_COMMON_APPDATA, NULL, 0, &pidl);
344 SHGetPathFromIDList( pidl, buf );
345 ILFree(pidl);
346 strncpy(str, buf, size);
340 win32_GetKnownFolderPath(CSIDL_COMMON_APPDATA, str, size);
347341 sc_AppendToPath(str, size, "SuperCollider");
348342 #else
349343
381375 }
382376
383377 #if defined(_WIN32)
384 ITEMIDLIST * pidl;
385 char buf[MAX_PATH];
386 SHGetFolderLocation(NULL, CSIDL_LOCAL_APPDATA, NULL, 0, &pidl);
387 SHGetPathFromIDList( pidl, buf );
388 ILFree(pidl);
389 strncpy(str, buf, size);
378 win32_GetKnownFolderPath(CSIDL_LOCAL_APPDATA, str, size);
390379 sc_AppendToPath(str, size, "SuperCollider");
391380 #else
392381
0 /*
1 * SuperCollider real time audio synthesis system
2 * Copyright (c) 2002 James McCartney. All rights reserved.
3 * Copyright (c) 2013 Tim Blechmann
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 */
19
20 #include <string>
21 #include <sstream>
22
23 static const int SC_VersionMajor = @PROJECT_VERSION_MAJOR@;
24 static const int SC_VersionMinor = @PROJECT_VERSION_MINOR@;
25 static const char SC_VersionPatch[] = "@PROJECT_VERSION_PATCH@";
26
27 static inline std::string SC_VersionString()
28 {
29 std::stringstream out;
30 out << SC_VersionMajor << "."
31 << SC_VersionMinor
32 << SC_VersionPatch;
33 return out.str();
34 }
2424 #include <cstdlib>
2525 #include <sys/timeb.h>
2626 #include <time.h>
27 #include <windows.h>
2728
2829 #include "SC_Win32Utils.h"
2930
5354
5455 void win32_gettimeofday(timeval* tv, void*)
5556 {
56 long unsigned secBetween1601and1970 = 11644473600ULL;
57 unsigned __int64 secBetween1601and1970 = 11644473600ULL;
5758 FILETIME fileTime;
5859 GetSystemTimeAsFileTime(&fileTime);
5960 tv->tv_sec = (* (unsigned __int64 *) &fileTime / (unsigned __int64)10000000) - secBetween1601and1970;
6061 tv->tv_usec = (* (unsigned __int64 *) &fileTime % (unsigned __int64)10000000)/(unsigned __int64)10;
6162
63 }
64
65 void win32_GetKnownFolderPath(int folderId, char *dest, int size)
66 {
67 // Use a temporary buffer, as SHGetFolderLocation() requires it
68 // to be at least MAX_PATH size, but destination size may be less
69 char buf[MAX_PATH];
70 SHGetFolderPath(NULL, folderId, NULL, 0, buf);
71 strncpy(dest, buf, size);
6272 }
6373
6474 void win32_GetHomeFolder(char* homeFolder, int bufLen)
249249
250250 scfft * f = (scfft*)chunk;
251251 float *trbuf = (float*)(chunk + sizeof(scfft));
252 trbuf = (float*) ((intptr_t)((char*)trbuf + (alignment - 1)) & -alignment);
252 trbuf = (float*) ((size_t)((char*)trbuf + (alignment - 1)) & -alignment); // FIXME: should be intptr_t instead of size_t once we use c++11
253253
254254 #ifdef NOVA_SIMD
255255 assert(nova::vec<float>::is_aligned(trbuf));
1818 endif()
1919
2020 if(SC_ED)
21 add_subdirectory(sced)
21 if(NO_GPL3)
22 message(WARNING "SC_ED requested, but NO_GPL3 flag is on, so not activated.")
23 else()
24 add_subdirectory(sced)
25 endif()
2226 endif()
2327
2428 if(SC_VIM)
25 add_subdirectory(scvim)
29 if(NO_GPL3)
30 message(WARNING "SC_VIM requested, but NO_GPL3 flag is on, so not activated.")
31 else()
32 add_subdirectory(scvim)
33 endif()
2634 endif()
2735
00 cmake_minimum_required( VERSION 2.8 )
11
2 find_package(Qt4 4.7 REQUIRED QtCore QtGui QtWebKit)
2 find_package(Qt4 4.7 REQUIRED QtCore QtGui QtWebKit QtNetwork)
33
44 if(${CMAKE_COMPILER_IS_GNUCXX})
55 add_definitions(-Wreorder)
141141 ${CMAKE_CURRENT_SOURCE_DIR}/translations/scide_de.ts
142142 ${CMAKE_CURRENT_SOURCE_DIR}/translations/scide_es.ts
143143 ${CMAKE_CURRENT_SOURCE_DIR}/translations/scide_fr.ts
144 ${CMAKE_CURRENT_SOURCE_DIR}/translations/scide_it.ts
144145 ${CMAKE_CURRENT_SOURCE_DIR}/translations/scide_ja.ts
145146 ${CMAKE_CURRENT_SOURCE_DIR}/translations/scide_pt.ts
146147 ${CMAKE_CURRENT_SOURCE_DIR}/translations/scide_ru.ts
3535 using namespace ScIDE;
3636
3737 Document::Document( bool isPlainText ):
38 mId( QUuid::createUuid().toString().toAscii() ),
38 mId( QUuid::createUuid().toString().toLatin1() ),
3939 mDoc( new QTextDocument(this) ),
4040 mTitle( tr("Untitled") ),
4141 mIndentWidth(4),
181181 (info.suffix() == QString("scd")));
182182
183183 Document *doc = createDocument( fileIsPlainText );
184 doc->mDoc->setPlainText( QString::fromUtf8( bytes.data(), bytes.size() ) );
184 doc->mDoc->setPlainText( decodeDocument(bytes) );
185185 doc->mDoc->setModified(false);
186186 doc->mFilePath = filePath;
187187 doc->mTitle = info.fileName();
214214 QByteArray bytes( file.readAll() );
215215 file.close();
216216
217 doc->mDoc->setPlainText( QString::fromUtf8( bytes.data(), bytes.size() ) );
217 doc->mDoc->setPlainText( decodeDocument(bytes) );
218218 doc->mDoc->setModified(false);
219219
220220 QFileInfo info(doc->mFilePath);
224224 mFsWatcher.addPath(doc->mFilePath);
225225
226226 return true;
227 }
228
229 QString DocumentManager::decodeDocument(const QByteArray & bytes)
230 {
231 QTextStream stream(bytes);
232 stream.setCodec("UTF-8");
233 stream.setAutoDetectUnicode(true);
234 return stream.readAll();
227235 }
228236
229237 void DocumentManager::close( Document *doc )
301309 QString str = doc->textDocument()->toPlainText();
302310 file.write(str.toUtf8());
303311 file.close();
312
313 info.refresh();
304314
305315 doc->mFilePath = cpath;
306316 doc->mTitle = info.fileName();
123123 void addToRecent( Document * );
124124 void loadRecentDocuments( Settings::Manager * );
125125 void closeSingleUntitledIfUnmodified();
126 QString decodeDocument(QByteArray const &);
126127
127128
128129 typedef QHash<QByteArray, Document*>::iterator DocIterator;
6363
6464 const QString interpreterCategory(tr("Interpreter"));
6565
66 mActions[ToggleRunning] = action = new QAction(tr("Boot Interpreter"), this);
66 mActions[ToggleRunning] = action = new QAction(tr("Boot or Quit Interpreter"), this);
6767 connect(action, SIGNAL(triggered()), this, SLOT(toggleRunning()) );
68 settings->addAction( action, "interpreter-toggle-running", interpreterCategory);
69
70 mActions[Start] = action = new QAction(tr("Boot Interpreter"), this);
68 //settings->addAction( action, "interpreter-toggle-running", interpreterCategory);
69
70 mActions[Start] = action =
71 new QAction(QIcon::fromTheme("system-run"), tr("Boot Interpreter"), this);
7172 connect(action, SIGNAL(triggered()), this, SLOT(startLanguage()) );
7273 settings->addAction( action, "interpreter-start", interpreterCategory);
7374
74 mActions[Stop] = action = new QAction(tr("Quit Interpreter"), this);
75 mActions[Stop] = action =
76 new QAction(QIcon::fromTheme("system-shutdown"), tr("Quit Interpreter"), this);
7577 connect(action, SIGNAL(triggered()), this, SLOT(stopLanguage()) );
7678 settings->addAction( action, "interpreter-stop", interpreterCategory);
7779
8991 mActions[StopMain] = action = new QAction(
9092 QIcon::fromTheme("media-playback-stop"), tr("Stop"), this);
9193 action->setShortcut(tr("Ctrl+.", "Stop (a.k.a. cmd-period)"));
94 action->setShortcutContext(Qt::ApplicationShortcut);
9295 connect(action, SIGNAL(triggered()), this, SLOT(stopMain()));
9396 settings->addAction( action, "interpreter-main-stop", interpreterCategory);
9497
98 connect( mActions[Start], SIGNAL(changed()), this, SLOT(updateToggleRunningAction()) );
99 connect( mActions[Stop], SIGNAL(changed()), this, SLOT(updateToggleRunningAction()) );
100
95101 onProcessStateChanged(QProcess::NotRunning);
102 }
103
104 void ScProcess::updateToggleRunningAction()
105 {
106 QAction *targetAction = state() == QProcess::NotRunning ? mActions[Start] : mActions[Stop];
107
108 mActions[ToggleRunning]->setText( targetAction->text() );
109 mActions[ToggleRunning]->setIcon( targetAction->icon() );
110 mActions[ToggleRunning]->setShortcut( targetAction->shortcut() );
96111 }
97112
98113 void ScProcess::toggleRunning()
188203 startLanguage();
189204 }
190205
206 void ScProcess::stopMain(void)
207 {
208 evaluateCode("thisProcess.stop", true);
209 }
191210
192211
193212 void ScProcess::onReadyRead(void)
244263 {
245264 switch (state) {
246265 case QProcess::Starting:
247 mActions[ToggleRunning]->setText(tr("Quit Interpreter"));
248 mActions[ToggleRunning]->setIcon(QIcon::fromTheme("system-shutdown"));
249266 mActions[Start]->setEnabled(false);
250267 mActions[Stop]->setEnabled(true);
251268 mActions[Restart]->setEnabled(true);
269 updateToggleRunningAction();
252270
253271 break;
254272
261279 break;
262280
263281 case QProcess::NotRunning:
264 mActions[ToggleRunning]->setText(tr("Boot Interpreter"));
265 mActions[ToggleRunning]->setIcon(QIcon::fromTheme("system-run"));
266282 mActions[Start]->setEnabled(true);
267283 mActions[Stop]->setEnabled(false);
268284 mActions[Restart]->setEnabled(false);
269285 mActions[StopMain]->setEnabled(false);
270286 mActions[RecompileClassLibrary]->setEnabled(false);
287 updateToggleRunningAction();
271288
272289 break;
273290 }
8282 void stopLanguage (void);
8383 void restartLanguage (void);
8484 void recompileClassLibrary (void);
85 void stopMain(void) { evaluateCode("thisProcess.stop", false); }
85 void stopMain(void);
8686 void evaluateCode(QString const & commandString, bool silent = false);
8787
8888 signals:
105105 void finalizeConnection();
106106 void onProcessStateChanged( QProcess::ProcessState state);
107107 void onReadyRead(void);
108 void updateToggleRunningAction();
108109
109110 private:
110111 void onStart();
5757 const QString synthServerCategory(tr("Sound Synthesis Server"));
5858 QAction *action;
5959
60 mActions[ToggleRunning] = action = new QAction(tr("Boot or quit server"), this);
61 action->setShortcut(tr("Ctrl+B", "Boot or quit default server"));
60 mActions[ToggleRunning] = action = new QAction(tr("Boot or quit default server"), this);
6261 connect(action, SIGNAL(triggered()), this, SLOT(toggleRunning()));
63 settings->addAction( action, "synth-server-toggle-running", synthServerCategory);
64
65 mActions[Reboot] = action = new QAction(tr("Reboot server"), this);
66 action->setShortcut(tr("Ctrl+Shift+B", "Reboot default server"));
62 //settings->addAction( action, "synth-server-toggle-running", synthServerCategory);
63
64 mActions[Boot] = action =
65 new QAction(QIcon::fromTheme("system-run"), tr("&Boot Server"), this);
66 action->setShortcut(tr("Ctrl+B", "Boot default server"));
67 connect(action, SIGNAL(triggered()), this, SLOT(boot()));
68 settings->addAction( action, "synth-server-boot", synthServerCategory);
69
70 mActions[Quit] = action =
71 new QAction(QIcon::fromTheme("system-shutdown"), tr("&Quit Server"), this);
72 connect(action, SIGNAL(triggered()), this, SLOT(quit()));
73 settings->addAction( action, "synth-server-quit", synthServerCategory);
74
75 mActions[Reboot] = action =
76 new QAction( QIcon::fromTheme("system-reboot"), tr("&Reboot Server"), this);
6777 connect(action, SIGNAL(triggered()), this, SLOT(reboot()));
6878 settings->addAction( action, "synth-server-reboot", synthServerCategory);
6979
8191 action->setShortcut(tr("Ctrl+Shift+T", "Dump node tree with controls"));
8292 connect(action, SIGNAL(triggered()), this, SLOT(dumpNodeTreeWithControls()));
8393 settings->addAction( action, "synth-server-dump-nodes-with-controls", synthServerCategory);
94
95 connect( mActions[Boot], SIGNAL(changed()), this, SLOT(updateToggleRunningAction()) );
96 connect( mActions[Quit], SIGNAL(changed()), this, SLOT(updateToggleRunningAction()) );
97
98 updateToggleRunningAction();
99 }
100
101 void ScServer::updateToggleRunningAction()
102 {
103 QAction *targetAction = isRunning() ? mActions[Quit] : mActions[Boot];
104 mActions[ToggleRunning]->setText( targetAction->text() );
105 mActions[ToggleRunning]->setIcon( targetAction->icon() );
106 mActions[ToggleRunning]->setShortcut( targetAction->shortcut() );
84107 }
85108
86109 void ScServer::boot()
229252 if (running) {
230253 mServerAddress = QHostAddress(hostName);
231254 mPort = port;
232
233 mActions[ToggleRunning]->setText( tr("&Quit Server") );
234 mActions[ToggleRunning]->setStatusTip(tr("Quit sound synthesis server"));
235255 } else {
236256 mServerAddress.clear();
237257 mPort = 0;
238
239 mActions[ToggleRunning]->setText( tr("&Boot Server") );
240 mActions[ToggleRunning]->setStatusTip(tr("Boot sound synthesis server"));
241 }
242 }
243
244 }
258 }
259
260 updateToggleRunningAction();
261 }
262
263 }
3737 public:
3838 enum ActionRole {
3939 ToggleRunning,
40 Boot,
41 Quit,
4042 Reboot,
4143 ShowMeters,
4244 DumpNodeTree,
6870 private slots:
6971 void onScLangStateChanged( QProcess::ProcessState );
7072 void onScLangReponse( const QString & selector, const QString & data );
73 void updateToggleRunningAction();
7174
7275 protected:
7376 virtual void timerEvent(QTimerEvent * event);
1717 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
1818 */
1919
20 #include <QtNetwork/QLocalSocket>
20 #include <QLocalSocket>
21 #include <QDataStream>
2122
2223 #include <cstdlib>
2324
250250 <translation type="unfinished"></translation>
251251 </message>
252252 <message>
253 <location filename="../core/doc_manager.cpp" line="290"/>
254 <location filename="../core/doc_manager.cpp" line="297"/>
253 <location filename="../core/doc_manager.cpp" line="298"/>
254 <location filename="../core/doc_manager.cpp" line="305"/>
255255 <source>File Extension Changed</source>
256256 <translation type="unfinished"></translation>
257257 </message>
258258 <message>
259 <location filename="../core/doc_manager.cpp" line="291"/>
260 <location filename="../core/doc_manager.cpp" line="298"/>
259 <location filename="../core/doc_manager.cpp" line="299"/>
260 <location filename="../core/doc_manager.cpp" line="306"/>
261261 <source>The extension of the file has changed. Please reopen file to update editor mode</source>
262262 <translation type="unfinished"></translation>
263263 </message>
417417 <context>
418418 <name>ScIDE::HelpBrowserDocklet</name>
419419 <message>
420 <location filename="../widgets/help_browser.cpp" line="378"/>
420 <location filename="../widgets/help_browser.cpp" line="399"/>
421421 <source>Help browser</source>
422422 <translation type="unfinished"></translation>
423423 </message>
425425 <context>
426426 <name>ScIDE::HelpBrowserFindBox</name>
427427 <message>
428 <location filename="../widgets/help_browser.cpp" line="339"/>
428 <location filename="../widgets/help_browser.cpp" line="360"/>
429429 <source>Find...</source>
430430 <translation type="unfinished"></translation>
431431 </message>
441441 <context>
442442 <name>ScIDE::LookupDialog</name>
443443 <message>
444 <location filename="../widgets/lookup_dialog.cpp" line="186"/>
444 <location filename="../widgets/lookup_dialog.cpp" line="180"/>
445445 <source>Look Up Implementations</source>
446446 <translation type="unfinished"></translation>
447447 </message>
448448 <message>
449 <location filename="../widgets/lookup_dialog.cpp" line="188"/>
449 <location filename="../widgets/lookup_dialog.cpp" line="182"/>
450450 <source>Enter class or method name...</source>
451451 <translation type="unfinished"></translation>
452452 </message>
453453 <message>
454 <location filename="../widgets/lookup_dialog.cpp" line="203"/>
454 <location filename="../widgets/lookup_dialog.cpp" line="197"/>
455455 <source>Introspection data not yet available</source>
456456 <translation type="unfinished"></translation>
457457 </message>
458458 <message>
459 <location filename="../widgets/lookup_dialog.cpp" line="365"/>
459 <location filename="../widgets/lookup_dialog.cpp" line="359"/>
460460 <source>No result for query</source>
461461 <translation type="unfinished"></translation>
462462 </message>
464464 <context>
465465 <name>ScIDE::MainWindow</name>
466466 <message>
467 <location filename="../widgets/main_window.cpp" line="78"/>
468 <location filename="../widgets/main_window.cpp" line="822"/>
467 <location filename="../widgets/main_window.cpp" line="94"/>
468 <location filename="../widgets/main_window.cpp" line="855"/>
469469 <source>Inactive</source>
470470 <translation type="unfinished"></translation>
471471 </message>
472472 <message>
473 <location filename="../widgets/main_window.cpp" line="83"/>
473 <location filename="../widgets/main_window.cpp" line="99"/>
474474 <source>Interpreter:</source>
475475 <translation type="unfinished"></translation>
476476 </message>
477477 <message>
478 <location filename="../widgets/main_window.cpp" line="85"/>
478 <location filename="../widgets/main_window.cpp" line="101"/>
479479 <source>Server:</source>
480480 <translation type="unfinished"></translation>
481481 </message>
482482 <message>
483 <location filename="../widgets/main_window.cpp" line="93"/>
483 <location filename="../widgets/main_window.cpp" line="109"/>
484484 <source>Command Line:</source>
485485 <translation type="unfinished"></translation>
486486 </message>
487487 <message>
488 <location filename="../widgets/main_window.cpp" line="219"/>
488 <location filename="../widgets/main_window.cpp" line="235"/>
489489 <source>Text Editor</source>
490490 <translation type="unfinished"></translation>
491491 </message>
492492 <message>
493 <location filename="../widgets/main_window.cpp" line="220"/>
493 <location filename="../widgets/main_window.cpp" line="236"/>
494494 <source>Help</source>
495495 <translation type="unfinished"></translation>
496496 </message>
497497 <message>
498 <location filename="../widgets/main_window.cpp" line="224"/>
498 <location filename="../widgets/main_window.cpp" line="240"/>
499499 <source>&amp;Quit...</source>
500500 <translation type="unfinished"></translation>
501501 </message>
502502 <message>
503 <location filename="../widgets/main_window.cpp" line="225"/>
503 <location filename="../widgets/main_window.cpp" line="241"/>
504504 <source>Ctrl+Q</source>
505505 <comment>Quit application</comment>
506506 <translation type="unfinished"></translation>
507507 </message>
508508 <message>
509 <location filename="../widgets/main_window.cpp" line="226"/>
509 <location filename="../widgets/main_window.cpp" line="242"/>
510510 <source>Quit SuperCollider IDE</source>
511511 <translation type="unfinished"></translation>
512512 </message>
513513 <message>
514 <location filename="../widgets/main_window.cpp" line="231"/>
514 <location filename="../widgets/main_window.cpp" line="247"/>
515515 <source>&amp;New</source>
516516 <translation type="unfinished"></translation>
517517 </message>
518518 <message>
519 <location filename="../widgets/main_window.cpp" line="232"/>
519 <location filename="../widgets/main_window.cpp" line="248"/>
520520 <source>Ctrl+N</source>
521521 <comment>New document</comment>
522522 <translation type="unfinished"></translation>
523523 </message>
524524 <message>
525 <location filename="../widgets/main_window.cpp" line="233"/>
525 <location filename="../widgets/main_window.cpp" line="249"/>
526526 <source>Create a new document</source>
527527 <translation type="unfinished"></translation>
528528 </message>
529529 <message>
530 <location filename="../widgets/main_window.cpp" line="238"/>
530 <location filename="../widgets/main_window.cpp" line="254"/>
531531 <source>&amp;Open...</source>
532532 <translation type="unfinished"></translation>
533533 </message>
534534 <message>
535 <location filename="../widgets/main_window.cpp" line="239"/>
535 <location filename="../widgets/main_window.cpp" line="255"/>
536536 <source>Ctrl+O</source>
537537 <comment>Open document</comment>
538538 <translation type="unfinished"></translation>
539539 </message>
540540 <message>
541 <location filename="../widgets/main_window.cpp" line="240"/>
541 <location filename="../widgets/main_window.cpp" line="256"/>
542542 <source>Open an existing file</source>
543543 <translation type="unfinished"></translation>
544544 </message>
545545 <message>
546 <location filename="../widgets/main_window.cpp" line="245"/>
547 <location filename="../widgets/main_window.cpp" line="246"/>
546 <location filename="../widgets/main_window.cpp" line="261"/>
547 <location filename="../widgets/main_window.cpp" line="262"/>
548548 <source>Open startup file</source>
549549 <translation type="unfinished"></translation>
550550 </message>
551551 <message>
552 <location filename="../widgets/main_window.cpp" line="251"/>
552 <location filename="../widgets/main_window.cpp" line="267"/>
553553 <source>&amp;Save</source>
554554 <translation type="unfinished"></translation>
555555 </message>
556556 <message>
557 <location filename="../widgets/main_window.cpp" line="252"/>
557 <location filename="../widgets/main_window.cpp" line="268"/>
558558 <source>Ctrl+S</source>
559559 <comment>Save document</comment>
560560 <translation type="unfinished"></translation>
561561 </message>
562562 <message>
563 <location filename="../widgets/main_window.cpp" line="253"/>
563 <location filename="../widgets/main_window.cpp" line="269"/>
564564 <source>Save the current document</source>
565565 <translation type="unfinished"></translation>
566566 </message>
567567 <message>
568 <location filename="../widgets/main_window.cpp" line="258"/>
568 <location filename="../widgets/main_window.cpp" line="274"/>
569569 <source>Save &amp;As...</source>
570570 <translation type="unfinished"></translation>
571571 </message>
572572 <message>
573 <location filename="../widgets/main_window.cpp" line="259"/>
573 <location filename="../widgets/main_window.cpp" line="275"/>
574574 <source>Ctrl+Shift+S</source>
575575 <comment>Save &amp;As...</comment>
576576 <translation type="unfinished"></translation>
577577 </message>
578578 <message>
579 <location filename="../widgets/main_window.cpp" line="260"/>
579 <location filename="../widgets/main_window.cpp" line="276"/>
580580 <source>Save the current document into a different file</source>
581581 <translation type="unfinished"></translation>
582582 </message>
583583 <message>
584 <location filename="../widgets/main_window.cpp" line="265"/>
584 <location filename="../widgets/main_window.cpp" line="281"/>
585585 <source>Save All...</source>
586586 <translation type="unfinished"></translation>
587587 </message>
588588 <message>
589 <location filename="../widgets/main_window.cpp" line="266"/>
589 <location filename="../widgets/main_window.cpp" line="282"/>
590590 <source>Ctrl+Alt+S</source>
591591 <comment>Save all documents</comment>
592592 <translation type="unfinished"></translation>
593593 </message>
594594 <message>
595 <location filename="../widgets/main_window.cpp" line="267"/>
595 <location filename="../widgets/main_window.cpp" line="283"/>
596596 <source>Save all open documents</source>
597597 <translation type="unfinished"></translation>
598598 </message>
599599 <message>
600 <location filename="../widgets/main_window.cpp" line="272"/>
600 <location filename="../widgets/main_window.cpp" line="288"/>
601601 <source>&amp;Close</source>
602602 <translation type="unfinished"></translation>
603603 </message>
604604 <message>
605 <location filename="../widgets/main_window.cpp" line="273"/>
605 <location filename="../widgets/main_window.cpp" line="289"/>
606606 <source>Ctrl+W</source>
607607 <comment>Close document</comment>
608608 <translation type="unfinished"></translation>
609609 </message>
610610 <message>
611 <location filename="../widgets/main_window.cpp" line="274"/>
611 <location filename="../widgets/main_window.cpp" line="290"/>
612612 <source>Close the current document</source>
613613 <translation type="unfinished"></translation>
614614 </message>
615615 <message>
616 <location filename="../widgets/main_window.cpp" line="279"/>
616 <location filename="../widgets/main_window.cpp" line="295"/>
617617 <source>Close All...</source>
618618 <translation type="unfinished"></translation>
619619 </message>
620620 <message>
621 <location filename="../widgets/main_window.cpp" line="280"/>
621 <location filename="../widgets/main_window.cpp" line="296"/>
622622 <source>Ctrl+Shift+W</source>
623623 <comment>Close all documents</comment>
624624 <translation type="unfinished"></translation>
625625 </message>
626626 <message>
627 <location filename="../widgets/main_window.cpp" line="281"/>
627 <location filename="../widgets/main_window.cpp" line="297"/>
628628 <source>Close all documents</source>
629629 <translation type="unfinished"></translation>
630630 </message>
631631 <message>
632 <location filename="../widgets/main_window.cpp" line="286"/>
632 <location filename="../widgets/main_window.cpp" line="302"/>
633633 <source>&amp;Reload</source>
634634 <translation type="unfinished"></translation>
635635 </message>
636636 <message>
637 <location filename="../widgets/main_window.cpp" line="287"/>
637 <location filename="../widgets/main_window.cpp" line="303"/>
638638 <source>F5</source>
639639 <comment>Reload document</comment>
640640 <translation type="unfinished"></translation>
641641 </message>
642642 <message>
643 <location filename="../widgets/main_window.cpp" line="288"/>
643 <location filename="../widgets/main_window.cpp" line="304"/>
644644 <source>Reload the current document</source>
645645 <translation type="unfinished"></translation>
646646 </message>
647647 <message>
648 <location filename="../widgets/main_window.cpp" line="292"/>
648 <location filename="../widgets/main_window.cpp" line="308"/>
649649 <source>Clear</source>
650650 <comment>Clear recent documents</comment>
651651 <translation type="unfinished"></translation>
652652 </message>
653653 <message>
654 <location filename="../widgets/main_window.cpp" line="293"/>
654 <location filename="../widgets/main_window.cpp" line="309"/>
655655 <source>Clear list of recent documents</source>
656656 <translation type="unfinished"></translation>
657657 </message>
658658 <message>
659 <location filename="../widgets/main_window.cpp" line="300"/>
659 <location filename="../widgets/main_window.cpp" line="316"/>
660660 <source>&amp;New Session</source>
661661 <translation type="unfinished"></translation>
662662 </message>
663663 <message>
664 <location filename="../widgets/main_window.cpp" line="301"/>
664 <location filename="../widgets/main_window.cpp" line="317"/>
665665 <source>Open a new session</source>
666666 <translation type="unfinished"></translation>
667667 </message>
668668 <message>
669 <location filename="../widgets/main_window.cpp" line="306"/>
669 <location filename="../widgets/main_window.cpp" line="322"/>
670670 <source>Save Session &amp;As...</source>
671671 <translation type="unfinished"></translation>
672672 </message>
673673 <message>
674 <location filename="../widgets/main_window.cpp" line="307"/>
674 <location filename="../widgets/main_window.cpp" line="323"/>
675675 <source>Save the current session with a different name</source>
676676 <translation type="unfinished"></translation>
677677 </message>
678678 <message>
679 <location filename="../widgets/main_window.cpp" line="312"/>
679 <location filename="../widgets/main_window.cpp" line="328"/>
680680 <source>&amp;Manage Sessions...</source>
681681 <translation type="unfinished"></translation>
682682 </message>
683683 <message>
684 <location filename="../widgets/main_window.cpp" line="317"/>
684 <location filename="../widgets/main_window.cpp" line="333"/>
685685 <source>&amp;Switch Session...</source>
686686 <translation type="unfinished"></translation>
687687 </message>
688688 <message>
689 <location filename="../widgets/main_window.cpp" line="319"/>
689 <location filename="../widgets/main_window.cpp" line="335"/>
690690 <source>Ctrl+Shift+Q</source>
691691 <comment>Switch Session</comment>
692692 <translation type="unfinished"></translation>
693693 </message>
694694 <message>
695 <location filename="../widgets/main_window.cpp" line="324"/>
695 <location filename="../widgets/main_window.cpp" line="340"/>
696696 <source>&amp;Find...</source>
697697 <translation type="unfinished"></translation>
698698 </message>
699699 <message>
700 <location filename="../widgets/main_window.cpp" line="325"/>
700 <location filename="../widgets/main_window.cpp" line="341"/>
701701 <source>Ctrl+F</source>
702702 <comment>Find</comment>
703703 <translation type="unfinished"></translation>
704704 </message>
705705 <message>
706 <location filename="../widgets/main_window.cpp" line="326"/>
706 <location filename="../widgets/main_window.cpp" line="342"/>
707707 <source>Find text in document</source>
708708 <translation type="unfinished"></translation>
709709 </message>
710710 <message>
711 <location filename="../widgets/main_window.cpp" line="331"/>
711 <location filename="../widgets/main_window.cpp" line="347"/>
712712 <source>&amp;Replace...</source>
713713 <translation type="unfinished"></translation>
714714 </message>
715715 <message>
716 <location filename="../widgets/main_window.cpp" line="332"/>
716 <location filename="../widgets/main_window.cpp" line="348"/>
717717 <source>Ctrl+R</source>
718718 <comment>Replace</comment>
719719 <translation type="unfinished"></translation>
720720 </message>
721721 <message>
722 <location filename="../widgets/main_window.cpp" line="333"/>
722 <location filename="../widgets/main_window.cpp" line="349"/>
723723 <source>Find and replace text in document</source>
724724 <translation type="unfinished"></translation>
725725 </message>
726726 <message>
727 <location filename="../widgets/main_window.cpp" line="338"/>
727 <location filename="../widgets/main_window.cpp" line="354"/>
728728 <source>&amp;Command Line</source>
729729 <translation type="unfinished"></translation>
730730 </message>
731731 <message>
732 <location filename="../widgets/main_window.cpp" line="339"/>
732 <location filename="../widgets/main_window.cpp" line="355"/>
733733 <source>Command line for quick code evaluation</source>
734734 <translation type="unfinished"></translation>
735735 </message>
736736 <message>
737 <location filename="../widgets/main_window.cpp" line="340"/>
737 <location filename="../widgets/main_window.cpp" line="356"/>
738738 <source>Ctrl+E</source>
739739 <comment>Show command line</comment>
740740 <translation type="unfinished"></translation>
741741 </message>
742742 <message>
743 <location filename="../widgets/main_window.cpp" line="344"/>
743 <location filename="../widgets/main_window.cpp" line="360"/>
744744 <source>&amp;Go To Line</source>
745745 <translation type="unfinished"></translation>
746746 </message>
747747 <message>
748 <location filename="../widgets/main_window.cpp" line="345"/>
748 <location filename="../widgets/main_window.cpp" line="361"/>
749749 <source>Tool to jump to a line by number</source>
750750 <translation type="unfinished"></translation>
751751 </message>
752752 <message>
753 <location filename="../widgets/main_window.cpp" line="346"/>
753 <location filename="../widgets/main_window.cpp" line="362"/>
754754 <source>Ctrl+L</source>
755755 <comment>Show go-to-line tool</comment>
756756 <translation type="unfinished"></translation>
757757 </message>
758758 <message>
759 <location filename="../widgets/main_window.cpp" line="351"/>
759 <location filename="../widgets/main_window.cpp" line="367"/>
760760 <source>&amp;Close Tool Panel</source>
761761 <translation type="unfinished"></translation>
762762 </message>
763763 <message>
764 <location filename="../widgets/main_window.cpp" line="352"/>
764 <location filename="../widgets/main_window.cpp" line="368"/>
765765 <source>Close any open tool panel</source>
766766 <translation type="unfinished"></translation>
767767 </message>
768768 <message>
769 <location filename="../widgets/main_window.cpp" line="353"/>
769 <location filename="../widgets/main_window.cpp" line="369"/>
770770 <source>Esc</source>
771771 <comment>Close tool box</comment>
772772 <translation type="unfinished"></translation>
773773 </message>
774774 <message>
775 <location filename="../widgets/main_window.cpp" line="357"/>
775 <location filename="../widgets/main_window.cpp" line="373"/>
776776 <source>&amp;Full Screen</source>
777777 <translation type="unfinished"></translation>
778778 </message>
779779 <message>
780 <location filename="../widgets/main_window.cpp" line="359"/>
780 <location filename="../widgets/main_window.cpp" line="375"/>
781781 <source>Ctrl+Shift+F</source>
782782 <comment>Show ScIDE in Full Screen</comment>
783783 <translation type="unfinished"></translation>
784784 </message>
785785 <message>
786 <location filename="../widgets/main_window.cpp" line="363"/>
786 <location filename="../widgets/main_window.cpp" line="379"/>
787787 <source>Focus Post Window</source>
788788 <translation type="unfinished"></translation>
789789 </message>
790790 <message>
791 <location filename="../widgets/main_window.cpp" line="364"/>
791 <location filename="../widgets/main_window.cpp" line="380"/>
792792 <source>Focus post window</source>
793793 <translation type="unfinished"></translation>
794794 </message>
795795 <message>
796 <location filename="../widgets/main_window.cpp" line="365"/>
796 <location filename="../widgets/main_window.cpp" line="381"/>
797797 <source>Ctrl+P</source>
798798 <comment>Focus post window</comment>
799799 <translation type="unfinished"></translation>
800800 </message>
801801 <message>
802 <location filename="../widgets/main_window.cpp" line="371"/>
802 <location filename="../widgets/main_window.cpp" line="387"/>
803803 <source>Look Up Implementations...</source>
804804 <translation type="unfinished"></translation>
805805 </message>
806806 <message>
807 <location filename="../widgets/main_window.cpp" line="372"/>
807 <location filename="../widgets/main_window.cpp" line="388"/>
808808 <source>Ctrl+Shift+I</source>
809809 <comment>Look Up Implementations</comment>
810810 <translation type="unfinished"></translation>
811811 </message>
812812 <message>
813 <location filename="../widgets/main_window.cpp" line="373"/>
813 <location filename="../widgets/main_window.cpp" line="389"/>
814814 <source>Open dialog to look up implementations of a class or a method</source>
815815 <translation type="unfinished"></translation>
816816 </message>
817817 <message>
818 <location filename="../widgets/main_window.cpp" line="377"/>
818 <location filename="../widgets/main_window.cpp" line="393"/>
819819 <source>Look Up Implementations for Cursor</source>
820820 <translation type="unfinished"></translation>
821821 </message>
822822 <message>
823 <location filename="../widgets/main_window.cpp" line="378"/>
823 <location filename="../widgets/main_window.cpp" line="394"/>
824824 <source>Ctrl+I</source>
825825 <comment>Look Up Implementations for Cursor</comment>
826826 <translation type="unfinished"></translation>
827827 </message>
828828 <message>
829 <location filename="../widgets/main_window.cpp" line="379"/>
829 <location filename="../widgets/main_window.cpp" line="395"/>
830830 <source>Look up implementations of class or method under cursor</source>
831831 <translation type="unfinished"></translation>
832832 </message>
833833 <message>
834 <location filename="../widgets/main_window.cpp" line="384"/>
834 <location filename="../widgets/main_window.cpp" line="400"/>
835835 <source>Look Up References...</source>
836836 <translation type="unfinished"></translation>
837837 </message>
838838 <message>
839 <location filename="../widgets/main_window.cpp" line="385"/>
839 <location filename="../widgets/main_window.cpp" line="401"/>
840840 <source>Ctrl+Shift+U</source>
841841 <comment>Look Up References</comment>
842842 <translation type="unfinished"></translation>
843843 </message>
844844 <message>
845 <location filename="../widgets/main_window.cpp" line="386"/>
845 <location filename="../widgets/main_window.cpp" line="402"/>
846846 <source>Open dialog to look up references to a class or a method</source>
847847 <translation type="unfinished"></translation>
848848 </message>
849849 <message>
850 <location filename="../widgets/main_window.cpp" line="390"/>
850 <location filename="../widgets/main_window.cpp" line="406"/>
851851 <source>Look Up References for Cursor</source>
852852 <translation type="unfinished"></translation>
853853 </message>
854854 <message>
855 <location filename="../widgets/main_window.cpp" line="391"/>
855 <location filename="../widgets/main_window.cpp" line="407"/>
856856 <source>Ctrl+U</source>
857857 <comment>Look Up References For Selection</comment>
858858 <translation type="unfinished"></translation>
859859 </message>
860860 <message>
861 <location filename="../widgets/main_window.cpp" line="392"/>
861 <location filename="../widgets/main_window.cpp" line="408"/>
862862 <source>Look up references to class or method under cursor</source>
863863 <translation type="unfinished"></translation>
864864 </message>
865865 <message>
866 <location filename="../widgets/main_window.cpp" line="397"/>
866 <location filename="../widgets/main_window.cpp" line="413"/>
867867 <source>&amp;Preferences</source>
868868 <translation type="unfinished"></translation>
869869 </message>
870870 <message>
871 <location filename="../widgets/main_window.cpp" line="399"/>
871 <location filename="../widgets/main_window.cpp" line="415"/>
872872 <source>Ctrl+,</source>
873873 <comment>Show configuration dialog</comment>
874874 <translation type="unfinished"></translation>
875875 </message>
876876 <message>
877 <location filename="../widgets/main_window.cpp" line="401"/>
877 <location filename="../widgets/main_window.cpp" line="417"/>
878878 <source>Show configuration dialog</source>
879879 <translation type="unfinished"></translation>
880880 </message>
881881 <message>
882 <location filename="../widgets/main_window.cpp" line="407"/>
882 <location filename="../widgets/main_window.cpp" line="423"/>
883883 <source>Open &amp;Help Browser</source>
884884 <translation type="unfinished"></translation>
885885 </message>
886886 <message>
887 <location filename="../widgets/main_window.cpp" line="408"/>
887 <location filename="../widgets/main_window.cpp" line="424"/>
888888 <source>Open help</source>
889889 <translation type="unfinished"></translation>
890890 </message>
891891 <message>
892 <location filename="../widgets/main_window.cpp" line="413"/>
892 <location filename="../widgets/main_window.cpp" line="429"/>
893893 <source>Look Up Documentation for Cursor</source>
894894 <translation type="unfinished"></translation>
895895 </message>
896896 <message>
897 <location filename="../widgets/main_window.cpp" line="414"/>
897 <location filename="../widgets/main_window.cpp" line="430"/>
898898 <source>Ctrl+D</source>
899899 <comment>Look Up Documentation for Cursor</comment>
900900 <translation type="unfinished"></translation>
901901 </message>
902902 <message>
903 <location filename="../widgets/main_window.cpp" line="415"/>
903 <location filename="../widgets/main_window.cpp" line="431"/>
904904 <source>Look up documentation for text under cursor</source>
905905 <translation type="unfinished"></translation>
906906 </message>
907907 <message>
908 <location filename="../widgets/main_window.cpp" line="420"/>
908 <location filename="../widgets/main_window.cpp" line="436"/>
909909 <source>Look Up Documentation...</source>
910910 <translation type="unfinished"></translation>
911911 </message>
912912 <message>
913 <location filename="../widgets/main_window.cpp" line="421"/>
913 <location filename="../widgets/main_window.cpp" line="437"/>
914914 <source>Ctrl+Shift+D</source>
915915 <comment>Look Up Documentation</comment>
916916 <translation type="unfinished"></translation>
917917 </message>
918918 <message>
919 <location filename="../widgets/main_window.cpp" line="422"/>
919 <location filename="../widgets/main_window.cpp" line="438"/>
920920 <source>Enter text to look up in documentation</source>
921921 <translation type="unfinished"></translation>
922922 </message>
923923 <message>
924 <location filename="../widgets/main_window.cpp" line="427"/>
924 <location filename="../widgets/main_window.cpp" line="443"/>
925925 <source>&amp;About SuperCollider</source>
926926 <translation type="unfinished"></translation>
927927 </message>
928928 <message>
929 <location filename="../widgets/main_window.cpp" line="432"/>
929 <location filename="../widgets/main_window.cpp" line="448"/>
930930 <source>About &amp;Qt</source>
931931 <translation type="unfinished"></translation>
932932 </message>
933933 <message>
934 <location filename="../widgets/main_window.cpp" line="439"/>
934 <location filename="../widgets/main_window.cpp" line="455"/>
935935 <source>Show/hide Post docklet</source>
936936 <translation type="unfinished"></translation>
937937 </message>
938938 <message>
939 <location filename="../widgets/main_window.cpp" line="445"/>
939 <location filename="../widgets/main_window.cpp" line="461"/>
940940 <source>Show/hide Documents docklet</source>
941941 <translation type="unfinished"></translation>
942942 </message>
943943 <message>
944 <location filename="../widgets/main_window.cpp" line="451"/>
944 <location filename="../widgets/main_window.cpp" line="467"/>
945945 <source>Show/hide Help browser docklet</source>
946946 <translation type="unfinished"></translation>
947947 </message>
948948 <message>
949 <location filename="../widgets/main_window.cpp" line="461"/>
949 <location filename="../widgets/main_window.cpp" line="494"/>
950950 <source>&amp;File</source>
951951 <translation type="unfinished"></translation>
952952 </message>
953953 <message>
954 <location filename="../widgets/main_window.cpp" line="464"/>
954 <location filename="../widgets/main_window.cpp" line="497"/>
955955 <source>Open Recent</source>
956956 <comment>Open a recent document</comment>
957957 <translation type="unfinished"></translation>
958958 </message>
959959 <message>
960 <location filename="../widgets/main_window.cpp" line="481"/>
960 <location filename="../widgets/main_window.cpp" line="514"/>
961961 <source>&amp;Session</source>
962962 <translation type="unfinished"></translation>
963963 </message>
964964 <message>
965 <location filename="../widgets/main_window.cpp" line="484"/>
965 <location filename="../widgets/main_window.cpp" line="517"/>
966966 <source>&amp;Open Session</source>
967967 <translation type="unfinished"></translation>
968968 </message>
969969 <message>
970 <location filename="../widgets/main_window.cpp" line="495"/>
970 <location filename="../widgets/main_window.cpp" line="528"/>
971971 <source>&amp;Edit</source>
972972 <translation type="unfinished"></translation>
973973 </message>
974974 <message>
975 <location filename="../widgets/main_window.cpp" line="519"/>
975 <location filename="../widgets/main_window.cpp" line="552"/>
976976 <source>&amp;View</source>
977977 <translation type="unfinished"></translation>
978978 </message>
979979 <message>
980 <location filename="../widgets/main_window.cpp" line="520"/>
980 <location filename="../widgets/main_window.cpp" line="553"/>
981981 <source>&amp;Docklets</source>
982982 <translation type="unfinished"></translation>
983983 </message>
984984 <message>
985 <location filename="../widgets/main_window.cpp" line="526"/>
985 <location filename="../widgets/main_window.cpp" line="559"/>
986986 <source>&amp;Tool Panels</source>
987987 <translation type="unfinished"></translation>
988988 </message>
989989 <message>
990 <location filename="../widgets/main_window.cpp" line="554"/>
990 <location filename="../widgets/main_window.cpp" line="587"/>
991991 <source>&amp;Language</source>
992992 <translation type="unfinished"></translation>
993993 </message>
994994 <message>
995 <location filename="../widgets/main_window.cpp" line="577"/>
995 <location filename="../widgets/main_window.cpp" line="610"/>
996996 <source>&amp;Help</source>
997997 <translation type="unfinished"></translation>
998998 </message>
999999 <message>
1000 <location filename="../widgets/main_window.cpp" line="697"/>
1000 <location filename="../widgets/main_window.cpp" line="730"/>
10011001 <source>Save Current Session</source>
10021002 <translation type="unfinished"></translation>
10031003 </message>
10041004 <message>
1005 <location filename="../widgets/main_window.cpp" line="698"/>
1005 <location filename="../widgets/main_window.cpp" line="731"/>
10061006 <source>Enter a name for the session:</source>
10071007 <translation type="unfinished"></translation>
10081008 </message>
10091009 <message>
1010 <location filename="../widgets/main_window.cpp" line="827"/>
1010 <location filename="../widgets/main_window.cpp" line="860"/>
10111011 <source>Booting</source>
10121012 <translation type="unfinished"></translation>
10131013 </message>
10141014 <message>
1015 <location filename="../widgets/main_window.cpp" line="834"/>
1015 <location filename="../widgets/main_window.cpp" line="867"/>
10161016 <source>Active</source>
10171017 <translation type="unfinished"></translation>
10181018 </message>
10191019 <message>
1020 <location filename="../widgets/main_window.cpp" line="878"/>
1021 <location filename="../widgets/main_window.cpp" line="910"/>
1020 <location filename="../widgets/main_window.cpp" line="911"/>
1021 <location filename="../widgets/main_window.cpp" line="943"/>
10221022 <source>SuperCollider IDE</source>
10231023 <translation type="unfinished"></translation>
10241024 </message>
10251025 <message>
1026 <location filename="../widgets/main_window.cpp" line="879"/>
1026 <location filename="../widgets/main_window.cpp" line="912"/>
10271027 <source>There are unsaved changes in document &apos;%1&apos;.
10281028
10291029 Do you want to save it?</source>
10301030 <translation type="unfinished"></translation>
10311031 </message>
10321032 <message>
1033 <location filename="../widgets/main_window.cpp" line="911"/>
1033 <location filename="../widgets/main_window.cpp" line="944"/>
10341034 <source>There are unsaved changes in document &apos;%1&apos;.
10351035
10361036 Do you want to reload it?</source>
10371037 <translation type="unfinished"></translation>
10381038 </message>
10391039 <message>
1040 <location filename="../widgets/main_window.cpp" line="938"/>
1040 <location filename="../widgets/main_window.cpp" line="971"/>
10411041 <source>Saving read-only file</source>
10421042 <translation type="unfinished"></translation>
10431043 </message>
10441044 <message>
1045 <location filename="../widgets/main_window.cpp" line="939"/>
1045 <location filename="../widgets/main_window.cpp" line="972"/>
10461046 <source>File is read-only. Please select a new location to save to.</source>
10471047 <translation type="unfinished"></translation>
10481048 </message>
10491049 <message>
1050 <location filename="../widgets/main_window.cpp" line="950"/>
1050 <location filename="../widgets/main_window.cpp" line="983"/>
10511051 <source>SuperCollider Document (*.scd)</source>
10521052 <translation type="unfinished"></translation>
10531053 </message>
10541054 <message>
1055 <location filename="../widgets/main_window.cpp" line="951"/>
1055 <location filename="../widgets/main_window.cpp" line="984"/>
10561056 <source>SuperCollider Class file (*.sc)</source>
10571057 <translation type="unfinished"></translation>
10581058 </message>
10591059 <message>
1060 <location filename="../widgets/main_window.cpp" line="953"/>
1061 <location filename="../widgets/main_window.cpp" line="1002"/>
1060 <location filename="../widgets/main_window.cpp" line="986"/>
1061 <location filename="../widgets/main_window.cpp" line="1035"/>
10621062 <source>All files (*)</source>
10631063 <translation type="unfinished"></translation>
10641064 </message>
10651065 <message>
1066 <location filename="../widgets/main_window.cpp" line="1003"/>
1066 <location filename="../widgets/main_window.cpp" line="1036"/>
10671067 <source>SuperCollider (*.scd *.sc)</source>
10681068 <translation type="unfinished"></translation>
10691069 </message>
10701070 <message>
1071 <location filename="../widgets/main_window.cpp" line="1004"/>
1071 <location filename="../widgets/main_window.cpp" line="1037"/>
10721072 <source>SCDoc (*.schelp)</source>
10731073 <translation type="unfinished"></translation>
10741074 </message>
10751075 <message>
1076 <location filename="../widgets/main_window.cpp" line="1148"/>
1076 <location filename="../widgets/main_window.cpp" line="1181"/>
10771077 <source>Untitled</source>
10781078 <translation type="unfinished"></translation>
10791079 </message>
10801080 <message>
1081 <location filename="../widgets/main_window.cpp" line="1274"/>
1081 <location filename="../widgets/main_window.cpp" line="1311"/>
10821082 <source>About SuperCollider IDE</source>
10831083 <translation type="unfinished"></translation>
10841084 </message>
10851085 <message>
1086 <location filename="../widgets/main_window.cpp" line="1356"/>
1086 <location filename="../widgets/main_window.cpp" line="1393"/>
10871087 <source>Look up Documentation For</source>
10881088 <translation type="unfinished"></translation>
10891089 </message>
10901090 <message>
1091 <location filename="../widgets/main_window.cpp" line="1405"/>
1091 <location filename="../widgets/main_window.cpp" line="1448"/>
10921092 <source>Open binary file?</source>
10931093 <translation type="unfinished"></translation>
10941094 </message>
10951095 <message>
1096 <location filename="../widgets/main_window.cpp" line="1406"/>
1096 <location filename="../widgets/main_window.cpp" line="1449"/>
10971097 <source>
10981098
10991099 The file has an unrecognized extension. It may be a binary file. Would you still like to open it?</source>
15531553 <context>
15541554 <name>ScIDE::PostDocklet</name>
15551555 <message>
1556 <location filename="../widgets/post_window.cpp" line="294"/>
1556 <location filename="../widgets/post_window.cpp" line="304"/>
15571557 <source>Post window</source>
15581558 <translation type="unfinished"></translation>
15591559 </message>
15611561 <context>
15621562 <name>ScIDE::PostWindow</name>
15631563 <message>
1564 <location filename="../widgets/post_window.cpp" line="64"/>
1564 <location filename="../widgets/post_window.cpp" line="65"/>
15651565 <source>Post Window</source>
15661566 <translation type="unfinished"></translation>
15671567 </message>
15681568 <message>
1569 <location filename="../widgets/post_window.cpp" line="66"/>
1569 <location filename="../widgets/post_window.cpp" line="67"/>
15701570 <source>Copy</source>
15711571 <translation type="unfinished"></translation>
15721572 </message>
15731573 <message>
1574 <location filename="../widgets/post_window.cpp" line="74"/>
1574 <location filename="../widgets/post_window.cpp" line="75"/>
15751575 <source>Clear</source>
15761576 <translation type="unfinished"></translation>
15771577 </message>
15781578 <message>
1579 <location filename="../widgets/post_window.cpp" line="75"/>
1579 <location filename="../widgets/post_window.cpp" line="76"/>
15801580 <source>Clear post window</source>
15811581 <translation type="unfinished"></translation>
15821582 </message>
15831583 <message>
1584 <location filename="../widgets/post_window.cpp" line="77"/>
1584 <location filename="../widgets/post_window.cpp" line="78"/>
15851585 <source>Ctrl+Shift+P</source>
15861586 <comment>Clear post window</comment>
15871587 <translation type="unfinished"></translation>
15881588 </message>
15891589 <message>
1590 <location filename="../widgets/post_window.cpp" line="86"/>
1590 <location filename="../widgets/post_window.cpp" line="87"/>
15911591 <source>Enlarge Font</source>
15921592 <translation type="unfinished"></translation>
15931593 </message>
15941594 <message>
1595 <location filename="../widgets/post_window.cpp" line="88"/>
1595 <location filename="../widgets/post_window.cpp" line="89"/>
15961596 <source>Enlarge post window font</source>
15971597 <translation type="unfinished"></translation>
15981598 </message>
15991599 <message>
1600 <location filename="../widgets/post_window.cpp" line="92"/>
1600 <location filename="../widgets/post_window.cpp" line="93"/>
16011601 <source>Shrink Font</source>
16021602 <translation type="unfinished"></translation>
16031603 </message>
16041604 <message>
1605 <location filename="../widgets/post_window.cpp" line="94"/>
1605 <location filename="../widgets/post_window.cpp" line="95"/>
16061606 <source>Shrink post window font</source>
16071607 <translation type="unfinished"></translation>
16081608 </message>
16091609 <message>
1610 <location filename="../widgets/post_window.cpp" line="102"/>
1610 <location filename="../widgets/post_window.cpp" line="103"/>
16111611 <source>Wrap Text</source>
16121612 <translation type="unfinished"></translation>
16131613 </message>
16141614 <message>
1615 <location filename="../widgets/post_window.cpp" line="103"/>
1615 <location filename="../widgets/post_window.cpp" line="104"/>
16161616 <source>Wrap lines wider than the post window</source>
16171617 <translation type="unfinished"></translation>
16181618 </message>
16191619 <message>
1620 <location filename="../widgets/post_window.cpp" line="109"/>
1620 <location filename="../widgets/post_window.cpp" line="110"/>
16211621 <source>Auto Scroll</source>
16221622 <translation type="unfinished"></translation>
16231623 </message>
16241624 <message>
1625 <location filename="../widgets/post_window.cpp" line="110"/>
1625 <location filename="../widgets/post_window.cpp" line="111"/>
16261626 <source>Scroll to bottom on new posts</source>
16271627 <translation type="unfinished"></translation>
16281628 </message>
16301630 <context>
16311631 <name>ScIDE::ReferencesDialog</name>
16321632 <message>
1633 <location filename="../widgets/lookup_dialog.cpp" line="431"/>
1633 <location filename="../widgets/lookup_dialog.cpp" line="425"/>
16341634 <source>Look Up References</source>
16351635 <translation type="unfinished"></translation>
16361636 </message>
16371637 <message>
1638 <location filename="../widgets/lookup_dialog.cpp" line="433"/>
1638 <location filename="../widgets/lookup_dialog.cpp" line="427"/>
16391639 <source>Enter class or method name...</source>
16401640 <translation type="unfinished"></translation>
16411641 </message>
16421642 <message>
1643 <location filename="../widgets/lookup_dialog.cpp" line="469"/>
1643 <location filename="../widgets/lookup_dialog.cpp" line="463"/>
16441644 <source>Introspection data not yet available</source>
16451645 <translation type="unfinished"></translation>
16461646 </message>
16551655 <message>
16561656 <location filename="../core/sc_process.cpp" line="67"/>
16571657 <location filename="../core/sc_process.cpp" line="71"/>
1658 <location filename="../core/sc_process.cpp" line="265"/>
1658 <location filename="../core/sc_process.cpp" line="266"/>
16591659 <source>Boot Interpreter</source>
16601660 <translation type="unfinished"></translation>
16611661 </message>
16621662 <message>
16631663 <location filename="../core/sc_process.cpp" line="75"/>
1664 <location filename="../core/sc_process.cpp" line="248"/>
1664 <location filename="../core/sc_process.cpp" line="249"/>
16651665 <source>Quit Interpreter</source>
16661666 <translation type="unfinished"></translation>
16671667 </message>
16931693 <translation type="unfinished"></translation>
16941694 </message>
16951695 <message>
1696 <location filename="../core/sc_process.cpp" line="113"/>
1696 <location filename="../core/sc_process.cpp" line="114"/>
16971697 <source>Interpreter is already running.</source>
16981698 <translation type="unfinished"></translation>
16991699 </message>
17001700 <message>
1701 <location filename="../core/sc_process.cpp" line="146"/>
1701 <location filename="../core/sc_process.cpp" line="147"/>
17021702 <source>Failed to start interpreter!</source>
17031703 <translation type="unfinished"></translation>
17041704 </message>
17051705 <message>
1706 <location filename="../core/sc_process.cpp" line="152"/>
1707 <location filename="../core/sc_process.cpp" line="163"/>
1708 <location filename="../core/sc_process.cpp" line="210"/>
1706 <location filename="../core/sc_process.cpp" line="153"/>
1707 <location filename="../core/sc_process.cpp" line="164"/>
1708 <location filename="../core/sc_process.cpp" line="211"/>
17091709 <source>Interpreter is not running!</source>
17101710 <translation type="unfinished"></translation>
17111711 </message>
17121712 <message>
1713 <location filename="../core/sc_process.cpp" line="181"/>
1713 <location filename="../core/sc_process.cpp" line="182"/>
17141714 <source>Failed to stop interpreter!</source>
17151715 <translation type="unfinished"></translation>
17161716 </message>
17171717 <message>
1718 <location filename="../core/sc_process.cpp" line="217"/>
1718 <location filename="../core/sc_process.cpp" line="218"/>
17191719 <source>Error when passing data to interpreter!</source>
17201720 <translation type="unfinished"></translation>
17211721 </message>
250250 <translation type="unfinished"></translation>
251251 </message>
252252 <message>
253 <location filename="../core/doc_manager.cpp" line="290"/>
254 <location filename="../core/doc_manager.cpp" line="297"/>
253 <location filename="../core/doc_manager.cpp" line="298"/>
254 <location filename="../core/doc_manager.cpp" line="305"/>
255255 <source>File Extension Changed</source>
256256 <translation type="unfinished"></translation>
257257 </message>
258258 <message>
259 <location filename="../core/doc_manager.cpp" line="291"/>
260 <location filename="../core/doc_manager.cpp" line="298"/>
259 <location filename="../core/doc_manager.cpp" line="299"/>
260 <location filename="../core/doc_manager.cpp" line="306"/>
261261 <source>The extension of the file has changed. Please reopen file to update editor mode</source>
262262 <translation type="unfinished"></translation>
263263 </message>
417417 <context>
418418 <name>ScIDE::HelpBrowserDocklet</name>
419419 <message>
420 <location filename="../widgets/help_browser.cpp" line="378"/>
420 <location filename="../widgets/help_browser.cpp" line="399"/>
421421 <source>Help browser</source>
422422 <translation type="unfinished"></translation>
423423 </message>
425425 <context>
426426 <name>ScIDE::HelpBrowserFindBox</name>
427427 <message>
428 <location filename="../widgets/help_browser.cpp" line="339"/>
428 <location filename="../widgets/help_browser.cpp" line="360"/>
429429 <source>Find...</source>
430430 <translation type="unfinished"></translation>
431431 </message>
441441 <context>
442442 <name>ScIDE::LookupDialog</name>
443443 <message>
444 <location filename="../widgets/lookup_dialog.cpp" line="186"/>
444 <location filename="../widgets/lookup_dialog.cpp" line="180"/>
445445 <source>Look Up Implementations</source>
446446 <translation type="unfinished"></translation>
447447 </message>
448448 <message>
449 <location filename="../widgets/lookup_dialog.cpp" line="188"/>
449 <location filename="../widgets/lookup_dialog.cpp" line="182"/>
450450 <source>Enter class or method name...</source>
451451 <translation type="unfinished"></translation>
452452 </message>
453453 <message>
454 <location filename="../widgets/lookup_dialog.cpp" line="203"/>
454 <location filename="../widgets/lookup_dialog.cpp" line="197"/>
455455 <source>Introspection data not yet available</source>
456456 <translation type="unfinished"></translation>
457457 </message>
458458 <message>
459 <location filename="../widgets/lookup_dialog.cpp" line="365"/>
459 <location filename="../widgets/lookup_dialog.cpp" line="359"/>
460460 <source>No result for query</source>
461461 <translation type="unfinished"></translation>
462462 </message>
464464 <context>
465465 <name>ScIDE::MainWindow</name>
466466 <message>
467 <location filename="../widgets/main_window.cpp" line="78"/>
468 <location filename="../widgets/main_window.cpp" line="822"/>
467 <location filename="../widgets/main_window.cpp" line="94"/>
468 <location filename="../widgets/main_window.cpp" line="855"/>
469469 <source>Inactive</source>
470470 <translation type="unfinished"></translation>
471471 </message>
472472 <message>
473 <location filename="../widgets/main_window.cpp" line="83"/>
473 <location filename="../widgets/main_window.cpp" line="99"/>
474474 <source>Interpreter:</source>
475475 <translation type="unfinished"></translation>
476476 </message>
477477 <message>
478 <location filename="../widgets/main_window.cpp" line="85"/>
478 <location filename="../widgets/main_window.cpp" line="101"/>
479479 <source>Server:</source>
480480 <translation type="unfinished"></translation>
481481 </message>
482482 <message>
483 <location filename="../widgets/main_window.cpp" line="93"/>
483 <location filename="../widgets/main_window.cpp" line="109"/>
484484 <source>Command Line:</source>
485485 <translation type="unfinished"></translation>
486486 </message>
487487 <message>
488 <location filename="../widgets/main_window.cpp" line="219"/>
488 <location filename="../widgets/main_window.cpp" line="235"/>
489489 <source>Text Editor</source>
490490 <translation type="unfinished"></translation>
491491 </message>
492492 <message>
493 <location filename="../widgets/main_window.cpp" line="220"/>
493 <location filename="../widgets/main_window.cpp" line="236"/>
494494 <source>Help</source>
495495 <translation type="unfinished"></translation>
496496 </message>
497497 <message>
498 <location filename="../widgets/main_window.cpp" line="224"/>
498 <location filename="../widgets/main_window.cpp" line="240"/>
499499 <source>&amp;Quit...</source>
500500 <translation type="unfinished"></translation>
501501 </message>
502502 <message>
503 <location filename="../widgets/main_window.cpp" line="225"/>
503 <location filename="../widgets/main_window.cpp" line="241"/>
504504 <source>Ctrl+Q</source>
505505 <comment>Quit application</comment>
506506 <translation type="unfinished"></translation>
507507 </message>
508508 <message>
509 <location filename="../widgets/main_window.cpp" line="226"/>
509 <location filename="../widgets/main_window.cpp" line="242"/>
510510 <source>Quit SuperCollider IDE</source>
511511 <translation type="unfinished"></translation>
512512 </message>
513513 <message>
514 <location filename="../widgets/main_window.cpp" line="231"/>
514 <location filename="../widgets/main_window.cpp" line="247"/>
515515 <source>&amp;New</source>
516516 <translation type="unfinished"></translation>
517517 </message>
518518 <message>
519 <location filename="../widgets/main_window.cpp" line="232"/>
519 <location filename="../widgets/main_window.cpp" line="248"/>
520520 <source>Ctrl+N</source>
521521 <comment>New document</comment>
522522 <translation type="unfinished"></translation>
523523 </message>
524524 <message>
525 <location filename="../widgets/main_window.cpp" line="233"/>
525 <location filename="../widgets/main_window.cpp" line="249"/>
526526 <source>Create a new document</source>
527527 <translation type="unfinished"></translation>
528528 </message>
529529 <message>
530 <location filename="../widgets/main_window.cpp" line="238"/>
530 <location filename="../widgets/main_window.cpp" line="254"/>
531531 <source>&amp;Open...</source>
532532 <translation type="unfinished"></translation>
533533 </message>
534534 <message>
535 <location filename="../widgets/main_window.cpp" line="239"/>
535 <location filename="../widgets/main_window.cpp" line="255"/>
536536 <source>Ctrl+O</source>
537537 <comment>Open document</comment>
538538 <translation type="unfinished"></translation>
539539 </message>
540540 <message>
541 <location filename="../widgets/main_window.cpp" line="240"/>
541 <location filename="../widgets/main_window.cpp" line="256"/>
542542 <source>Open an existing file</source>
543543 <translation type="unfinished"></translation>
544544 </message>
545545 <message>
546 <location filename="../widgets/main_window.cpp" line="245"/>
547 <location filename="../widgets/main_window.cpp" line="246"/>
546 <location filename="../widgets/main_window.cpp" line="261"/>
547 <location filename="../widgets/main_window.cpp" line="262"/>
548548 <source>Open startup file</source>
549549 <translation type="unfinished"></translation>
550550 </message>
551551 <message>
552 <location filename="../widgets/main_window.cpp" line="251"/>
552 <location filename="../widgets/main_window.cpp" line="267"/>
553553 <source>&amp;Save</source>
554554 <translation type="unfinished"></translation>
555555 </message>
556556 <message>
557 <location filename="../widgets/main_window.cpp" line="252"/>
557 <location filename="../widgets/main_window.cpp" line="268"/>
558558 <source>Ctrl+S</source>
559559 <comment>Save document</comment>
560560 <translation type="unfinished"></translation>
561561 </message>
562562 <message>
563 <location filename="../widgets/main_window.cpp" line="253"/>
563 <location filename="../widgets/main_window.cpp" line="269"/>
564564 <source>Save the current document</source>
565565 <translation type="unfinished"></translation>
566566 </message>
567567 <message>
568 <location filename="../widgets/main_window.cpp" line="258"/>
568 <location filename="../widgets/main_window.cpp" line="274"/>
569569 <source>Save &amp;As...</source>
570570 <translation type="unfinished"></translation>
571571 </message>
572572 <message>
573 <location filename="../widgets/main_window.cpp" line="259"/>
573 <location filename="../widgets/main_window.cpp" line="275"/>
574574 <source>Ctrl+Shift+S</source>
575575 <comment>Save &amp;As...</comment>
576576 <translation type="unfinished"></translation>
577577 </message>
578578 <message>
579 <location filename="../widgets/main_window.cpp" line="260"/>
579 <location filename="../widgets/main_window.cpp" line="276"/>
580580 <source>Save the current document into a different file</source>
581581 <translation type="unfinished"></translation>
582582 </message>
583583 <message>
584 <location filename="../widgets/main_window.cpp" line="265"/>
584 <location filename="../widgets/main_window.cpp" line="281"/>
585585 <source>Save All...</source>
586586 <translation type="unfinished"></translation>
587587 </message>
588588 <message>
589 <location filename="../widgets/main_window.cpp" line="266"/>
589 <location filename="../widgets/main_window.cpp" line="282"/>
590590 <source>Ctrl+Alt+S</source>
591591 <comment>Save all documents</comment>
592592 <translation type="unfinished"></translation>
593593 </message>
594594 <message>
595 <location filename="../widgets/main_window.cpp" line="267"/>
595 <location filename="../widgets/main_window.cpp" line="283"/>
596596 <source>Save all open documents</source>
597597 <translation type="unfinished"></translation>
598598 </message>
599599 <message>
600 <location filename="../widgets/main_window.cpp" line="272"/>
600 <location filename="../widgets/main_window.cpp" line="288"/>
601601 <source>&amp;Close</source>
602602 <translation type="unfinished"></translation>
603603 </message>
604604 <message>
605 <location filename="../widgets/main_window.cpp" line="273"/>
605 <location filename="../widgets/main_window.cpp" line="289"/>
606606 <source>Ctrl+W</source>
607607 <comment>Close document</comment>
608608 <translation type="unfinished"></translation>
609609 </message>
610610 <message>
611 <location filename="../widgets/main_window.cpp" line="274"/>
611 <location filename="../widgets/main_window.cpp" line="290"/>
612612 <source>Close the current document</source>
613613 <translation type="unfinished"></translation>
614614 </message>
615615 <message>
616 <location filename="../widgets/main_window.cpp" line="279"/>
616 <location filename="../widgets/main_window.cpp" line="295"/>
617617 <source>Close All...</source>
618618 <translation type="unfinished"></translation>
619619 </message>
620620 <message>
621 <location filename="../widgets/main_window.cpp" line="280"/>
621 <location filename="../widgets/main_window.cpp" line="296"/>
622622 <source>Ctrl+Shift+W</source>
623623 <comment>Close all documents</comment>
624624 <translation type="unfinished"></translation>
625625 </message>
626626 <message>
627 <location filename="../widgets/main_window.cpp" line="281"/>
627 <location filename="../widgets/main_window.cpp" line="297"/>
628628 <source>Close all documents</source>
629629 <translation type="unfinished"></translation>
630630 </message>
631631 <message>
632 <location filename="../widgets/main_window.cpp" line="286"/>
632 <location filename="../widgets/main_window.cpp" line="302"/>
633633 <source>&amp;Reload</source>
634634 <translation type="unfinished"></translation>
635635 </message>
636636 <message>
637 <location filename="../widgets/main_window.cpp" line="287"/>
637 <location filename="../widgets/main_window.cpp" line="303"/>
638638 <source>F5</source>
639639 <comment>Reload document</comment>
640640 <translation type="unfinished"></translation>
641641 </message>
642642 <message>
643 <location filename="../widgets/main_window.cpp" line="288"/>
643 <location filename="../widgets/main_window.cpp" line="304"/>
644644 <source>Reload the current document</source>
645645 <translation type="unfinished"></translation>
646646 </message>
647647 <message>
648 <location filename="../widgets/main_window.cpp" line="292"/>
648 <location filename="../widgets/main_window.cpp" line="308"/>
649649 <source>Clear</source>
650650 <comment>Clear recent documents</comment>
651651 <translation type="unfinished"></translation>
652652 </message>
653653 <message>
654 <location filename="../widgets/main_window.cpp" line="293"/>
654 <location filename="../widgets/main_window.cpp" line="309"/>
655655 <source>Clear list of recent documents</source>
656656 <translation type="unfinished"></translation>
657657 </message>
658658 <message>
659 <location filename="../widgets/main_window.cpp" line="300"/>
659 <location filename="../widgets/main_window.cpp" line="316"/>
660660 <source>&amp;New Session</source>
661661 <translation type="unfinished"></translation>
662662 </message>
663663 <message>
664 <location filename="../widgets/main_window.cpp" line="301"/>
664 <location filename="../widgets/main_window.cpp" line="317"/>
665665 <source>Open a new session</source>
666666 <translation type="unfinished"></translation>
667667 </message>
668668 <message>
669 <location filename="../widgets/main_window.cpp" line="306"/>
669 <location filename="../widgets/main_window.cpp" line="322"/>
670670 <source>Save Session &amp;As...</source>
671671 <translation type="unfinished"></translation>
672672 </message>
673673 <message>
674 <location filename="../widgets/main_window.cpp" line="307"/>
674 <location filename="../widgets/main_window.cpp" line="323"/>
675675 <source>Save the current session with a different name</source>
676676 <translation type="unfinished"></translation>
677677 </message>
678678 <message>
679 <location filename="../widgets/main_window.cpp" line="312"/>
679 <location filename="../widgets/main_window.cpp" line="328"/>
680680 <source>&amp;Manage Sessions...</source>
681681 <translation type="unfinished"></translation>
682682 </message>
683683 <message>
684 <location filename="../widgets/main_window.cpp" line="317"/>
684 <location filename="../widgets/main_window.cpp" line="333"/>
685685 <source>&amp;Switch Session...</source>
686686 <translation type="unfinished"></translation>
687687 </message>
688688 <message>
689 <location filename="../widgets/main_window.cpp" line="319"/>
689 <location filename="../widgets/main_window.cpp" line="335"/>
690690 <source>Ctrl+Shift+Q</source>
691691 <comment>Switch Session</comment>
692692 <translation type="unfinished"></translation>
693693 </message>
694694 <message>
695 <location filename="../widgets/main_window.cpp" line="324"/>
695 <location filename="../widgets/main_window.cpp" line="340"/>
696696 <source>&amp;Find...</source>
697697 <translation type="unfinished"></translation>
698698 </message>
699699 <message>
700 <location filename="../widgets/main_window.cpp" line="325"/>
700 <location filename="../widgets/main_window.cpp" line="341"/>
701701 <source>Ctrl+F</source>
702702 <comment>Find</comment>
703703 <translation type="unfinished"></translation>
704704 </message>
705705 <message>
706 <location filename="../widgets/main_window.cpp" line="326"/>
706 <location filename="../widgets/main_window.cpp" line="342"/>
707707 <source>Find text in document</source>
708708 <translation type="unfinished"></translation>
709709 </message>
710710 <message>
711 <location filename="../widgets/main_window.cpp" line="331"/>
711 <location filename="../widgets/main_window.cpp" line="347"/>
712712 <source>&amp;Replace...</source>
713713 <translation type="unfinished"></translation>
714714 </message>
715715 <message>
716 <location filename="../widgets/main_window.cpp" line="332"/>
716 <location filename="../widgets/main_window.cpp" line="348"/>
717717 <source>Ctrl+R</source>
718718 <comment>Replace</comment>
719719 <translation type="unfinished"></translation>
720720 </message>
721721 <message>
722 <location filename="../widgets/main_window.cpp" line="333"/>
722 <location filename="../widgets/main_window.cpp" line="349"/>
723723 <source>Find and replace text in document</source>
724724 <translation type="unfinished"></translation>
725725 </message>
726726 <message>
727 <location filename="../widgets/main_window.cpp" line="338"/>
727 <location filename="../widgets/main_window.cpp" line="354"/>
728728 <source>&amp;Command Line</source>
729729 <translation type="unfinished"></translation>
730730 </message>
731731 <message>
732 <location filename="../widgets/main_window.cpp" line="339"/>
732 <location filename="../widgets/main_window.cpp" line="355"/>
733733 <source>Command line for quick code evaluation</source>
734734 <translation type="unfinished"></translation>
735735 </message>
736736 <message>
737 <location filename="../widgets/main_window.cpp" line="340"/>
737 <location filename="../widgets/main_window.cpp" line="356"/>
738738 <source>Ctrl+E</source>
739739 <comment>Show command line</comment>
740740 <translation type="unfinished"></translation>
741741 </message>
742742 <message>
743 <location filename="../widgets/main_window.cpp" line="344"/>
743 <location filename="../widgets/main_window.cpp" line="360"/>
744744 <source>&amp;Go To Line</source>
745745 <translation type="unfinished"></translation>
746746 </message>
747747 <message>
748 <location filename="../widgets/main_window.cpp" line="345"/>
748 <location filename="../widgets/main_window.cpp" line="361"/>
749749 <source>Tool to jump to a line by number</source>
750750 <translation type="unfinished"></translation>
751751 </message>
752752 <message>
753 <location filename="../widgets/main_window.cpp" line="346"/>
753 <location filename="../widgets/main_window.cpp" line="362"/>
754754 <source>Ctrl+L</source>
755755 <comment>Show go-to-line tool</comment>
756756 <translation type="unfinished"></translation>
757757 </message>
758758 <message>
759 <location filename="../widgets/main_window.cpp" line="351"/>
759 <location filename="../widgets/main_window.cpp" line="367"/>
760760 <source>&amp;Close Tool Panel</source>
761761 <translation type="unfinished"></translation>
762762 </message>
763763 <message>
764 <location filename="../widgets/main_window.cpp" line="352"/>
764 <location filename="../widgets/main_window.cpp" line="368"/>
765765 <source>Close any open tool panel</source>
766766 <translation type="unfinished"></translation>
767767 </message>
768768 <message>
769 <location filename="../widgets/main_window.cpp" line="353"/>
769 <location filename="../widgets/main_window.cpp" line="369"/>
770770 <source>Esc</source>
771771 <comment>Close tool box</comment>
772772 <translation type="unfinished"></translation>
773773 </message>
774774 <message>
775 <location filename="../widgets/main_window.cpp" line="357"/>
775 <location filename="../widgets/main_window.cpp" line="373"/>
776776 <source>&amp;Full Screen</source>
777777 <translation type="unfinished"></translation>
778778 </message>
779779 <message>
780 <location filename="../widgets/main_window.cpp" line="359"/>
780 <location filename="../widgets/main_window.cpp" line="375"/>
781781 <source>Ctrl+Shift+F</source>
782782 <comment>Show ScIDE in Full Screen</comment>
783783 <translation type="unfinished"></translation>
784784 </message>
785785 <message>
786 <location filename="../widgets/main_window.cpp" line="363"/>
786 <location filename="../widgets/main_window.cpp" line="379"/>
787787 <source>Focus Post Window</source>
788788 <translation type="unfinished"></translation>
789789 </message>
790790 <message>
791 <location filename="../widgets/main_window.cpp" line="364"/>
791 <location filename="../widgets/main_window.cpp" line="380"/>
792792 <source>Focus post window</source>
793793 <translation type="unfinished"></translation>
794794 </message>
795795 <message>
796 <location filename="../widgets/main_window.cpp" line="365"/>
796 <location filename="../widgets/main_window.cpp" line="381"/>
797797 <source>Ctrl+P</source>
798798 <comment>Focus post window</comment>
799799 <translation type="unfinished"></translation>
800800 </message>
801801 <message>
802 <location filename="../widgets/main_window.cpp" line="371"/>
802 <location filename="../widgets/main_window.cpp" line="387"/>
803803 <source>Look Up Implementations...</source>
804804 <translation type="unfinished"></translation>
805805 </message>
806806 <message>
807 <location filename="../widgets/main_window.cpp" line="372"/>
807 <location filename="../widgets/main_window.cpp" line="388"/>
808808 <source>Ctrl+Shift+I</source>
809809 <comment>Look Up Implementations</comment>
810810 <translation type="unfinished"></translation>
811811 </message>
812812 <message>
813 <location filename="../widgets/main_window.cpp" line="373"/>
813 <location filename="../widgets/main_window.cpp" line="389"/>
814814 <source>Open dialog to look up implementations of a class or a method</source>
815815 <translation type="unfinished"></translation>
816816 </message>
817817 <message>
818 <location filename="../widgets/main_window.cpp" line="377"/>
818 <location filename="../widgets/main_window.cpp" line="393"/>
819819 <source>Look Up Implementations for Cursor</source>
820820 <translation type="unfinished"></translation>
821821 </message>
822822 <message>
823 <location filename="../widgets/main_window.cpp" line="378"/>
823 <location filename="../widgets/main_window.cpp" line="394"/>
824824 <source>Ctrl+I</source>
825825 <comment>Look Up Implementations for Cursor</comment>
826826 <translation type="unfinished"></translation>
827827 </message>
828828 <message>
829 <location filename="../widgets/main_window.cpp" line="379"/>
829 <location filename="../widgets/main_window.cpp" line="395"/>
830830 <source>Look up implementations of class or method under cursor</source>
831831 <translation type="unfinished"></translation>
832832 </message>
833833 <message>
834 <location filename="../widgets/main_window.cpp" line="384"/>
834 <location filename="../widgets/main_window.cpp" line="400"/>
835835 <source>Look Up References...</source>
836836 <translation type="unfinished"></translation>
837837 </message>
838838 <message>
839 <location filename="../widgets/main_window.cpp" line="385"/>
839 <location filename="../widgets/main_window.cpp" line="401"/>
840840 <source>Ctrl+Shift+U</source>
841841 <comment>Look Up References</comment>
842842 <translation type="unfinished"></translation>
843843 </message>
844844 <message>
845 <location filename="../widgets/main_window.cpp" line="386"/>
845 <location filename="../widgets/main_window.cpp" line="402"/>
846846 <source>Open dialog to look up references to a class or a method</source>
847847 <translation type="unfinished"></translation>
848848 </message>
849849 <message>
850 <location filename="../widgets/main_window.cpp" line="390"/>
850 <location filename="../widgets/main_window.cpp" line="406"/>
851851 <source>Look Up References for Cursor</source>
852852 <translation type="unfinished"></translation>
853853 </message>
854854 <message>
855 <location filename="../widgets/main_window.cpp" line="391"/>
855 <location filename="../widgets/main_window.cpp" line="407"/>
856856 <source>Ctrl+U</source>
857857 <comment>Look Up References For Selection</comment>
858858 <translation type="unfinished"></translation>
859859 </message>
860860 <message>
861 <location filename="../widgets/main_window.cpp" line="392"/>
861 <location filename="../widgets/main_window.cpp" line="408"/>
862862 <source>Look up references to class or method under cursor</source>
863863 <translation type="unfinished"></translation>
864864 </message>
865865 <message>
866 <location filename="../widgets/main_window.cpp" line="397"/>
866 <location filename="../widgets/main_window.cpp" line="413"/>
867867 <source>&amp;Preferences</source>
868868 <translation type="unfinished"></translation>
869869 </message>
870870 <message>
871 <location filename="../widgets/main_window.cpp" line="399"/>
871 <location filename="../widgets/main_window.cpp" line="415"/>
872872 <source>Ctrl+,</source>
873873 <comment>Show configuration dialog</comment>
874874 <translation type="unfinished"></translation>
875875 </message>
876876 <message>
877 <location filename="../widgets/main_window.cpp" line="401"/>
877 <location filename="../widgets/main_window.cpp" line="417"/>
878878 <source>Show configuration dialog</source>
879879 <translation type="unfinished"></translation>
880880 </message>
881881 <message>
882 <location filename="../widgets/main_window.cpp" line="407"/>
882 <location filename="../widgets/main_window.cpp" line="423"/>
883883 <source>Open &amp;Help Browser</source>
884884 <translation type="unfinished"></translation>
885885 </message>
886886 <message>
887 <location filename="../widgets/main_window.cpp" line="408"/>
887 <location filename="../widgets/main_window.cpp" line="424"/>
888888 <source>Open help</source>
889889 <translation type="unfinished"></translation>
890890 </message>
891891 <message>
892 <location filename="../widgets/main_window.cpp" line="413"/>
892 <location filename="../widgets/main_window.cpp" line="429"/>
893893 <source>Look Up Documentation for Cursor</source>
894894 <translation type="unfinished"></translation>
895895 </message>
896896 <message>
897 <location filename="../widgets/main_window.cpp" line="414"/>
897 <location filename="../widgets/main_window.cpp" line="430"/>
898898 <source>Ctrl+D</source>
899899 <comment>Look Up Documentation for Cursor</comment>
900900 <translation type="unfinished"></translation>
901901 </message>
902902 <message>
903 <location filename="../widgets/main_window.cpp" line="415"/>
903 <location filename="../widgets/main_window.cpp" line="431"/>
904904 <source>Look up documentation for text under cursor</source>
905905 <translation type="unfinished"></translation>
906906 </message>
907907 <message>
908 <location filename="../widgets/main_window.cpp" line="420"/>
908 <location filename="../widgets/main_window.cpp" line="436"/>
909909 <source>Look Up Documentation...</source>
910910 <translation type="unfinished"></translation>
911911 </message>
912912 <message>
913 <location filename="../widgets/main_window.cpp" line="421"/>
913 <location filename="../widgets/main_window.cpp" line="437"/>
914914 <source>Ctrl+Shift+D</source>
915915 <comment>Look Up Documentation</comment>
916916 <translation type="unfinished"></translation>
917917 </message>
918918 <message>
919 <location filename="../widgets/main_window.cpp" line="422"/>
919 <location filename="../widgets/main_window.cpp" line="438"/>
920920 <source>Enter text to look up in documentation</source>
921921 <translation type="unfinished"></translation>
922922 </message>
923923 <message>
924 <location filename="../widgets/main_window.cpp" line="427"/>
924 <location filename="../widgets/main_window.cpp" line="443"/>
925925 <source>&amp;About SuperCollider</source>
926926 <translation type="unfinished"></translation>
927927 </message>
928928 <message>
929 <location filename="../widgets/main_window.cpp" line="432"/>
929 <location filename="../widgets/main_window.cpp" line="448"/>
930930 <source>About &amp;Qt</source>
931931 <translation type="unfinished"></translation>
932932 </message>
933933 <message>
934 <location filename="../widgets/main_window.cpp" line="439"/>
934 <location filename="../widgets/main_window.cpp" line="455"/>
935935 <source>Show/hide Post docklet</source>
936936 <translation type="unfinished"></translation>
937937 </message>
938938 <message>
939 <location filename="../widgets/main_window.cpp" line="445"/>
939 <location filename="../widgets/main_window.cpp" line="461"/>
940940 <source>Show/hide Documents docklet</source>
941941 <translation type="unfinished"></translation>
942942 </message>
943943 <message>
944 <location filename="../widgets/main_window.cpp" line="451"/>
944 <location filename="../widgets/main_window.cpp" line="467"/>
945945 <source>Show/hide Help browser docklet</source>
946946 <translation type="unfinished"></translation>
947947 </message>
948948 <message>
949 <location filename="../widgets/main_window.cpp" line="461"/>
949 <location filename="../widgets/main_window.cpp" line="494"/>
950950 <source>&amp;File</source>
951951 <translation type="unfinished"></translation>
952952 </message>
953953 <message>
954 <location filename="../widgets/main_window.cpp" line="464"/>
954 <location filename="../widgets/main_window.cpp" line="497"/>
955955 <source>Open Recent</source>
956956 <comment>Open a recent document</comment>
957957 <translation type="unfinished"></translation>
958958 </message>
959959 <message>
960 <location filename="../widgets/main_window.cpp" line="481"/>
960 <location filename="../widgets/main_window.cpp" line="514"/>
961961 <source>&amp;Session</source>
962962 <translation type="unfinished"></translation>
963963 </message>
964964 <message>
965 <location filename="../widgets/main_window.cpp" line="484"/>
965 <location filename="../widgets/main_window.cpp" line="517"/>
966966 <source>&amp;Open Session</source>
967967 <translation type="unfinished"></translation>
968968 </message>
969969 <message>
970 <location filename="../widgets/main_window.cpp" line="495"/>
970 <location filename="../widgets/main_window.cpp" line="528"/>
971971 <source>&amp;Edit</source>
972972 <translation type="unfinished"></translation>
973973 </message>
974974 <message>
975 <location filename="../widgets/main_window.cpp" line="519"/>
975 <location filename="../widgets/main_window.cpp" line="552"/>
976976 <source>&amp;View</source>
977977 <translation type="unfinished"></translation>
978978 </message>
979979 <message>
980 <location filename="../widgets/main_window.cpp" line="520"/>
980 <location filename="../widgets/main_window.cpp" line="553"/>
981981 <source>&amp;Docklets</source>
982982 <translation type="unfinished"></translation>
983983 </message>
984984 <message>
985 <location filename="../widgets/main_window.cpp" line="526"/>
985 <location filename="../widgets/main_window.cpp" line="559"/>
986986 <source>&amp;Tool Panels</source>
987987 <translation type="unfinished"></translation>
988988 </message>
989989 <message>
990 <location filename="../widgets/main_window.cpp" line="554"/>
990 <location filename="../widgets/main_window.cpp" line="587"/>
991991 <source>&amp;Language</source>
992992 <translation type="unfinished"></translation>
993993 </message>
994994 <message>
995 <location filename="../widgets/main_window.cpp" line="577"/>
995 <location filename="../widgets/main_window.cpp" line="610"/>
996996 <source>&amp;Help</source>
997997 <translation type="unfinished"></translation>
998998 </message>
999999 <message>
1000 <location filename="../widgets/main_window.cpp" line="697"/>
1000 <location filename="../widgets/main_window.cpp" line="730"/>
10011001 <source>Save Current Session</source>
10021002 <translation type="unfinished"></translation>
10031003 </message>
10041004 <message>
1005 <location filename="../widgets/main_window.cpp" line="698"/>
1005 <location filename="../widgets/main_window.cpp" line="731"/>
10061006 <source>Enter a name for the session:</source>
10071007 <translation type="unfinished"></translation>
10081008 </message>
10091009 <message>
1010 <location filename="../widgets/main_window.cpp" line="827"/>
1010 <location filename="../widgets/main_window.cpp" line="860"/>
10111011 <source>Booting</source>
10121012 <translation type="unfinished"></translation>
10131013 </message>
10141014 <message>
1015 <location filename="../widgets/main_window.cpp" line="834"/>
1015 <location filename="../widgets/main_window.cpp" line="867"/>
10161016 <source>Active</source>
10171017 <translation type="unfinished"></translation>
10181018 </message>
10191019 <message>
1020 <location filename="../widgets/main_window.cpp" line="878"/>
1021 <location filename="../widgets/main_window.cpp" line="910"/>
1020 <location filename="../widgets/main_window.cpp" line="911"/>
1021 <location filename="../widgets/main_window.cpp" line="943"/>
10221022 <source>SuperCollider IDE</source>
10231023 <translation type="unfinished"></translation>
10241024 </message>
10251025 <message>
1026 <location filename="../widgets/main_window.cpp" line="879"/>
1026 <location filename="../widgets/main_window.cpp" line="912"/>
10271027 <source>There are unsaved changes in document &apos;%1&apos;.
10281028
10291029 Do you want to save it?</source>
10301030 <translation type="unfinished"></translation>
10311031 </message>
10321032 <message>
1033 <location filename="../widgets/main_window.cpp" line="911"/>
1033 <location filename="../widgets/main_window.cpp" line="944"/>
10341034 <source>There are unsaved changes in document &apos;%1&apos;.
10351035
10361036 Do you want to reload it?</source>
10371037 <translation type="unfinished"></translation>
10381038 </message>
10391039 <message>
1040 <location filename="../widgets/main_window.cpp" line="938"/>
1040 <location filename="../widgets/main_window.cpp" line="971"/>
10411041 <source>Saving read-only file</source>
10421042 <translation type="unfinished"></translation>
10431043 </message>
10441044 <message>
1045 <location filename="../widgets/main_window.cpp" line="939"/>
1045 <location filename="../widgets/main_window.cpp" line="972"/>
10461046 <source>File is read-only. Please select a new location to save to.</source>
10471047 <translation type="unfinished"></translation>
10481048 </message>
10491049 <message>
1050 <location filename="../widgets/main_window.cpp" line="950"/>
1050 <location filename="../widgets/main_window.cpp" line="983"/>
10511051 <source>SuperCollider Document (*.scd)</source>
10521052 <translation type="unfinished"></translation>
10531053 </message>
10541054 <message>
1055 <location filename="../widgets/main_window.cpp" line="951"/>
1055 <location filename="../widgets/main_window.cpp" line="984"/>
10561056 <source>SuperCollider Class file (*.sc)</source>
10571057 <translation type="unfinished"></translation>
10581058 </message>
10591059 <message>
1060 <location filename="../widgets/main_window.cpp" line="953"/>
1061 <location filename="../widgets/main_window.cpp" line="1002"/>
1060 <location filename="../widgets/main_window.cpp" line="986"/>
1061 <location filename="../widgets/main_window.cpp" line="1035"/>
10621062 <source>All files (*)</source>
10631063 <translation type="unfinished"></translation>
10641064 </message>
10651065 <message>
1066 <location filename="../widgets/main_window.cpp" line="1003"/>
1066 <location filename="../widgets/main_window.cpp" line="1036"/>
10671067 <source>SuperCollider (*.scd *.sc)</source>
10681068 <translation type="unfinished"></translation>
10691069 </message>
10701070 <message>
1071 <location filename="../widgets/main_window.cpp" line="1004"/>
1071 <location filename="../widgets/main_window.cpp" line="1037"/>
10721072 <source>SCDoc (*.schelp)</source>
10731073 <translation type="unfinished"></translation>
10741074 </message>
10751075 <message>
1076 <location filename="../widgets/main_window.cpp" line="1148"/>
1076 <location filename="../widgets/main_window.cpp" line="1181"/>
10771077 <source>Untitled</source>
10781078 <translation type="unfinished"></translation>
10791079 </message>
10801080 <message>
1081 <location filename="../widgets/main_window.cpp" line="1274"/>
1081 <location filename="../widgets/main_window.cpp" line="1311"/>
10821082 <source>About SuperCollider IDE</source>
10831083 <translation type="unfinished"></translation>
10841084 </message>
10851085 <message>
1086 <location filename="../widgets/main_window.cpp" line="1356"/>
1086 <location filename="../widgets/main_window.cpp" line="1393"/>
10871087 <source>Look up Documentation For</source>
10881088 <translation type="unfinished"></translation>
10891089 </message>
10901090 <message>
1091 <location filename="../widgets/main_window.cpp" line="1405"/>
1091 <location filename="../widgets/main_window.cpp" line="1448"/>
10921092 <source>Open binary file?</source>
10931093 <translation type="unfinished"></translation>
10941094 </message>
10951095 <message>
1096 <location filename="../widgets/main_window.cpp" line="1406"/>
1096 <location filename="../widgets/main_window.cpp" line="1449"/>
10971097 <source>
10981098
10991099 The file has an unrecognized extension. It may be a binary file. Would you still like to open it?</source>
15531553 <context>
15541554 <name>ScIDE::PostDocklet</name>
15551555 <message>
1556 <location filename="../widgets/post_window.cpp" line="294"/>
1556 <location filename="../widgets/post_window.cpp" line="304"/>
15571557 <source>Post window</source>
15581558 <translation type="unfinished"></translation>
15591559 </message>
15611561 <context>
15621562 <name>ScIDE::PostWindow</name>
15631563 <message>
1564 <location filename="../widgets/post_window.cpp" line="64"/>
1564 <location filename="../widgets/post_window.cpp" line="65"/>
15651565 <source>Post Window</source>
15661566 <translation type="unfinished"></translation>
15671567 </message>
15681568 <message>
1569 <location filename="../widgets/post_window.cpp" line="66"/>
1569 <location filename="../widgets/post_window.cpp" line="67"/>
15701570 <source>Copy</source>
15711571 <translation type="unfinished"></translation>
15721572 </message>
15731573 <message>
1574 <location filename="../widgets/post_window.cpp" line="74"/>
1574 <location filename="../widgets/post_window.cpp" line="75"/>
15751575 <source>Clear</source>
15761576 <translation type="unfinished"></translation>
15771577 </message>
15781578 <message>
1579 <location filename="../widgets/post_window.cpp" line="75"/>
1579 <location filename="../widgets/post_window.cpp" line="76"/>
15801580 <source>Clear post window</source>
15811581 <translation type="unfinished"></translation>
15821582 </message>
15831583 <message>
1584 <location filename="../widgets/post_window.cpp" line="77"/>
1584 <location filename="../widgets/post_window.cpp" line="78"/>
15851585 <source>Ctrl+Shift+P</source>
15861586 <comment>Clear post window</comment>
15871587 <translation type="unfinished"></translation>
15881588 </message>
15891589 <message>
1590 <location filename="../widgets/post_window.cpp" line="86"/>
1590 <location filename="../widgets/post_window.cpp" line="87"/>
15911591 <source>Enlarge Font</source>
15921592 <translation type="unfinished"></translation>
15931593 </message>
15941594 <message>
1595 <location filename="../widgets/post_window.cpp" line="88"/>
1595 <location filename="../widgets/post_window.cpp" line="89"/>
15961596 <source>Enlarge post window font</source>
15971597 <translation type="unfinished"></translation>
15981598 </message>
15991599 <message>
1600 <location filename="../widgets/post_window.cpp" line="92"/>
1600 <location filename="../widgets/post_window.cpp" line="93"/>
16011601 <source>Shrink Font</source>
16021602 <translation type="unfinished"></translation>
16031603 </message>
16041604 <message>
1605 <location filename="../widgets/post_window.cpp" line="94"/>
1605 <location filename="../widgets/post_window.cpp" line="95"/>
16061606 <source>Shrink post window font</source>
16071607 <translation type="unfinished"></translation>
16081608 </message>
16091609 <message>
1610 <location filename="../widgets/post_window.cpp" line="102"/>
1610 <location filename="../widgets/post_window.cpp" line="103"/>
16111611 <source>Wrap Text</source>
16121612 <translation type="unfinished"></translation>
16131613 </message>
16141614 <message>
1615 <location filename="../widgets/post_window.cpp" line="103"/>
1615 <location filename="../widgets/post_window.cpp" line="104"/>
16161616 <source>Wrap lines wider than the post window</source>
16171617 <translation type="unfinished"></translation>
16181618 </message>
16191619 <message>
1620 <location filename="../widgets/post_window.cpp" line="109"/>
1620 <location filename="../widgets/post_window.cpp" line="110"/>
16211621 <source>Auto Scroll</source>
16221622 <translation type="unfinished"></translation>
16231623 </message>
16241624 <message>
1625 <location filename="../widgets/post_window.cpp" line="110"/>
1625 <location filename="../widgets/post_window.cpp" line="111"/>
16261626 <source>Scroll to bottom on new posts</source>
16271627 <translation type="unfinished"></translation>
16281628 </message>
16301630 <context>
16311631 <name>ScIDE::ReferencesDialog</name>
16321632 <message>
1633 <location filename="../widgets/lookup_dialog.cpp" line="431"/>
1633 <location filename="../widgets/lookup_dialog.cpp" line="425"/>
16341634 <source>Look Up References</source>
16351635 <translation type="unfinished"></translation>
16361636 </message>
16371637 <message>
1638 <location filename="../widgets/lookup_dialog.cpp" line="433"/>
1638 <location filename="../widgets/lookup_dialog.cpp" line="427"/>
16391639 <source>Enter class or method name...</source>
16401640 <translation type="unfinished"></translation>
16411641 </message>
16421642 <message>
1643 <location filename="../widgets/lookup_dialog.cpp" line="469"/>
1643 <location filename="../widgets/lookup_dialog.cpp" line="463"/>
16441644 <source>Introspection data not yet available</source>
16451645 <translation type="unfinished"></translation>
16461646 </message>
16551655 <message>
16561656 <location filename="../core/sc_process.cpp" line="67"/>
16571657 <location filename="../core/sc_process.cpp" line="71"/>
1658 <location filename="../core/sc_process.cpp" line="265"/>
1658 <location filename="../core/sc_process.cpp" line="266"/>
16591659 <source>Boot Interpreter</source>
16601660 <translation type="unfinished"></translation>
16611661 </message>
16621662 <message>
16631663 <location filename="../core/sc_process.cpp" line="75"/>
1664 <location filename="../core/sc_process.cpp" line="248"/>
1664 <location filename="../core/sc_process.cpp" line="249"/>
16651665 <source>Quit Interpreter</source>
16661666 <translation type="unfinished"></translation>
16671667 </message>
16931693 <translation type="unfinished"></translation>
16941694 </message>
16951695 <message>
1696 <location filename="../core/sc_process.cpp" line="113"/>
1696 <location filename="../core/sc_process.cpp" line="114"/>
16971697 <source>Interpreter is already running.</source>
16981698 <translation type="unfinished"></translation>
16991699 </message>
17001700 <message>
1701 <location filename="../core/sc_process.cpp" line="146"/>
1701 <location filename="../core/sc_process.cpp" line="147"/>
17021702 <source>Failed to start interpreter!</source>
17031703 <translation type="unfinished"></translation>
17041704 </message>
17051705 <message>
1706 <location filename="../core/sc_process.cpp" line="152"/>
1707 <location filename="../core/sc_process.cpp" line="163"/>
1708 <location filename="../core/sc_process.cpp" line="210"/>
1706 <location filename="../core/sc_process.cpp" line="153"/>
1707 <location filename="../core/sc_process.cpp" line="164"/>
1708 <location filename="../core/sc_process.cpp" line="211"/>
17091709 <source>Interpreter is not running!</source>
17101710 <translation type="unfinished"></translation>
17111711 </message>
17121712 <message>
1713 <location filename="../core/sc_process.cpp" line="181"/>
1713 <location filename="../core/sc_process.cpp" line="182"/>
17141714 <source>Failed to stop interpreter!</source>
17151715 <translation type="unfinished"></translation>
17161716 </message>
17171717 <message>
1718 <location filename="../core/sc_process.cpp" line="217"/>
1718 <location filename="../core/sc_process.cpp" line="218"/>
17191719 <source>Error when passing data to interpreter!</source>
17201720 <translation type="unfinished"></translation>
17211721 </message>
250250 <translation type="unfinished"></translation>
251251 </message>
252252 <message>
253 <location filename="../core/doc_manager.cpp" line="290"/>
254 <location filename="../core/doc_manager.cpp" line="297"/>
253 <location filename="../core/doc_manager.cpp" line="298"/>
254 <location filename="../core/doc_manager.cpp" line="305"/>
255255 <source>File Extension Changed</source>
256256 <translation type="unfinished"></translation>
257257 </message>
258258 <message>
259 <location filename="../core/doc_manager.cpp" line="291"/>
260 <location filename="../core/doc_manager.cpp" line="298"/>
259 <location filename="../core/doc_manager.cpp" line="299"/>
260 <location filename="../core/doc_manager.cpp" line="306"/>
261261 <source>The extension of the file has changed. Please reopen file to update editor mode</source>
262262 <translation type="unfinished"></translation>
263263 </message>
417417 <context>
418418 <name>ScIDE::HelpBrowserDocklet</name>
419419 <message>
420 <location filename="../widgets/help_browser.cpp" line="378"/>
420 <location filename="../widgets/help_browser.cpp" line="399"/>
421421 <source>Help browser</source>
422422 <translation type="unfinished"></translation>
423423 </message>
425425 <context>
426426 <name>ScIDE::HelpBrowserFindBox</name>
427427 <message>
428 <location filename="../widgets/help_browser.cpp" line="339"/>
428 <location filename="../widgets/help_browser.cpp" line="360"/>
429429 <source>Find...</source>
430430 <translation type="unfinished"></translation>
431431 </message>
441441 <context>
442442 <name>ScIDE::LookupDialog</name>
443443 <message>
444 <location filename="../widgets/lookup_dialog.cpp" line="186"/>
444 <location filename="../widgets/lookup_dialog.cpp" line="180"/>
445445 <source>Look Up Implementations</source>
446446 <translation type="unfinished"></translation>
447447 </message>
448448 <message>
449 <location filename="../widgets/lookup_dialog.cpp" line="188"/>
449 <location filename="../widgets/lookup_dialog.cpp" line="182"/>
450450 <source>Enter class or method name...</source>
451451 <translation type="unfinished"></translation>
452452 </message>
453453 <message>
454 <location filename="../widgets/lookup_dialog.cpp" line="203"/>
454 <location filename="../widgets/lookup_dialog.cpp" line="197"/>
455455 <source>Introspection data not yet available</source>
456456 <translation type="unfinished"></translation>
457457 </message>
458458 <message>
459 <location filename="../widgets/lookup_dialog.cpp" line="365"/>
459 <location filename="../widgets/lookup_dialog.cpp" line="359"/>
460460 <source>No result for query</source>
461461 <translation type="unfinished"></translation>
462462 </message>
464464 <context>
465465 <name>ScIDE::MainWindow</name>
466466 <message>
467 <location filename="../widgets/main_window.cpp" line="78"/>
468 <location filename="../widgets/main_window.cpp" line="822"/>
467 <location filename="../widgets/main_window.cpp" line="94"/>
468 <location filename="../widgets/main_window.cpp" line="855"/>
469469 <source>Inactive</source>
470470 <translation type="unfinished"></translation>
471471 </message>
472472 <message>
473 <location filename="../widgets/main_window.cpp" line="83"/>
473 <location filename="../widgets/main_window.cpp" line="99"/>
474474 <source>Interpreter:</source>
475475 <translation type="unfinished"></translation>
476476 </message>
477477 <message>
478 <location filename="../widgets/main_window.cpp" line="85"/>
478 <location filename="../widgets/main_window.cpp" line="101"/>
479479 <source>Server:</source>
480480 <translation type="unfinished"></translation>
481481 </message>
482482 <message>
483 <location filename="../widgets/main_window.cpp" line="93"/>
483 <location filename="../widgets/main_window.cpp" line="109"/>
484484 <source>Command Line:</source>
485485 <translation type="unfinished"></translation>
486486 </message>
487487 <message>
488 <location filename="../widgets/main_window.cpp" line="219"/>
488 <location filename="../widgets/main_window.cpp" line="235"/>
489489 <source>Text Editor</source>
490490 <translation type="unfinished"></translation>
491491 </message>
492492 <message>
493 <location filename="../widgets/main_window.cpp" line="220"/>
493 <location filename="../widgets/main_window.cpp" line="236"/>
494494 <source>Help</source>
495495 <translation type="unfinished"></translation>
496496 </message>
497497 <message>
498 <location filename="../widgets/main_window.cpp" line="224"/>
498 <location filename="../widgets/main_window.cpp" line="240"/>
499499 <source>&amp;Quit...</source>
500500 <translation type="unfinished"></translation>
501501 </message>
502502 <message>
503 <location filename="../widgets/main_window.cpp" line="225"/>
503 <location filename="../widgets/main_window.cpp" line="241"/>
504504 <source>Ctrl+Q</source>
505505 <comment>Quit application</comment>
506506 <translation type="unfinished"></translation>
507507 </message>
508508 <message>
509 <location filename="../widgets/main_window.cpp" line="226"/>
509 <location filename="../widgets/main_window.cpp" line="242"/>
510510 <source>Quit SuperCollider IDE</source>
511511 <translation type="unfinished"></translation>
512512 </message>
513513 <message>
514 <location filename="../widgets/main_window.cpp" line="231"/>
514 <location filename="../widgets/main_window.cpp" line="247"/>
515515 <source>&amp;New</source>
516516 <translation type="unfinished"></translation>
517517 </message>
518518 <message>
519 <location filename="../widgets/main_window.cpp" line="232"/>
519 <location filename="../widgets/main_window.cpp" line="248"/>
520520 <source>Ctrl+N</source>
521521 <comment>New document</comment>
522522 <translation type="unfinished"></translation>
523523 </message>
524524 <message>
525 <location filename="../widgets/main_window.cpp" line="233"/>
525 <location filename="../widgets/main_window.cpp" line="249"/>
526526 <source>Create a new document</source>
527527 <translation type="unfinished"></translation>
528528 </message>
529529 <message>
530 <location filename="../widgets/main_window.cpp" line="238"/>
530 <location filename="../widgets/main_window.cpp" line="254"/>
531531 <source>&amp;Open...</source>
532532 <translation type="unfinished"></translation>
533533 </message>
534534 <message>
535 <location filename="../widgets/main_window.cpp" line="239"/>
535 <location filename="../widgets/main_window.cpp" line="255"/>
536536 <source>Ctrl+O</source>
537537 <comment>Open document</comment>
538538 <translation type="unfinished"></translation>
539539 </message>
540540 <message>
541 <location filename="../widgets/main_window.cpp" line="240"/>
541 <location filename="../widgets/main_window.cpp" line="256"/>
542542 <source>Open an existing file</source>
543543 <translation type="unfinished"></translation>
544544 </message>
545545 <message>
546 <location filename="../widgets/main_window.cpp" line="245"/>
547 <location filename="../widgets/main_window.cpp" line="246"/>
546 <location filename="../widgets/main_window.cpp" line="261"/>
547 <location filename="../widgets/main_window.cpp" line="262"/>
548548 <source>Open startup file</source>
549549 <translation type="unfinished"></translation>
550550 </message>
551551 <message>
552 <location filename="../widgets/main_window.cpp" line="251"/>
552 <location filename="../widgets/main_window.cpp" line="267"/>
553553 <source>&amp;Save</source>
554554 <translation type="unfinished"></translation>
555555 </message>
556556 <message>
557 <location filename="../widgets/main_window.cpp" line="252"/>
557 <location filename="../widgets/main_window.cpp" line="268"/>
558558 <source>Ctrl+S</source>
559559 <comment>Save document</comment>
560560 <translation type="unfinished"></translation>
561561 </message>
562562 <message>
563 <location filename="../widgets/main_window.cpp" line="253"/>
563 <location filename="../widgets/main_window.cpp" line="269"/>
564564 <source>Save the current document</source>
565565 <translation type="unfinished"></translation>
566566 </message>
567567 <message>
568 <location filename="../widgets/main_window.cpp" line="258"/>
568 <location filename="../widgets/main_window.cpp" line="274"/>
569569 <source>Save &amp;As...</source>
570570 <translation type="unfinished"></translation>
571571 </message>
572572 <message>
573 <location filename="../widgets/main_window.cpp" line="259"/>
573 <location filename="../widgets/main_window.cpp" line="275"/>
574574 <source>Ctrl+Shift+S</source>
575575 <comment>Save &amp;As...</comment>
576576 <translation type="unfinished"></translation>
577577 </message>
578578 <message>
579 <location filename="../widgets/main_window.cpp" line="260"/>
579 <location filename="../widgets/main_window.cpp" line="276"/>
580580 <source>Save the current document into a different file</source>
581581 <translation type="unfinished"></translation>
582582 </message>
583583 <message>
584 <location filename="../widgets/main_window.cpp" line="265"/>
584 <location filename="../widgets/main_window.cpp" line="281"/>
585585 <source>Save All...</source>
586586 <translation type="unfinished"></translation>
587587 </message>
588588 <message>
589 <location filename="../widgets/main_window.cpp" line="266"/>
589 <location filename="../widgets/main_window.cpp" line="282"/>
590590 <source>Ctrl+Alt+S</source>
591591 <comment>Save all documents</comment>
592592 <translation type="unfinished"></translation>
593593 </message>
594594 <message>
595 <location filename="../widgets/main_window.cpp" line="267"/>
595 <location filename="../widgets/main_window.cpp" line="283"/>
596596 <source>Save all open documents</source>
597597 <translation type="unfinished"></translation>
598598 </message>
599599 <message>
600 <location filename="../widgets/main_window.cpp" line="272"/>
600 <location filename="../widgets/main_window.cpp" line="288"/>
601601 <source>&amp;Close</source>
602602 <translation type="unfinished"></translation>
603603 </message>
604604 <message>
605 <location filename="../widgets/main_window.cpp" line="273"/>
605 <location filename="../widgets/main_window.cpp" line="289"/>
606606 <source>Ctrl+W</source>
607607 <comment>Close document</comment>
608608 <translation type="unfinished"></translation>
609609 </message>
610610 <message>
611 <location filename="../widgets/main_window.cpp" line="274"/>
611 <location filename="../widgets/main_window.cpp" line="290"/>
612612 <source>Close the current document</source>
613613 <translation type="unfinished"></translation>
614614 </message>
615615 <message>
616 <location filename="../widgets/main_window.cpp" line="279"/>
616 <location filename="../widgets/main_window.cpp" line="295"/>
617617 <source>Close All...</source>
618618 <translation type="unfinished"></translation>
619619 </message>
620620 <message>
621 <location filename="../widgets/main_window.cpp" line="280"/>
621 <location filename="../widgets/main_window.cpp" line="296"/>
622622 <source>Ctrl+Shift+W</source>
623623 <comment>Close all documents</comment>
624624 <translation type="unfinished"></translation>
625625 </message>
626626 <message>
627 <location filename="../widgets/main_window.cpp" line="281"/>
627 <location filename="../widgets/main_window.cpp" line="297"/>
628628 <source>Close all documents</source>
629629 <translation type="unfinished"></translation>
630630 </message>
631631 <message>
632 <location filename="../widgets/main_window.cpp" line="286"/>
632 <location filename="../widgets/main_window.cpp" line="302"/>
633633 <source>&amp;Reload</source>
634634 <translation type="unfinished"></translation>
635635 </message>
636636 <message>
637 <location filename="../widgets/main_window.cpp" line="287"/>
637 <location filename="../widgets/main_window.cpp" line="303"/>
638638 <source>F5</source>
639639 <comment>Reload document</comment>
640640 <translation type="unfinished"></translation>
641641 </message>
642642 <message>
643 <location filename="../widgets/main_window.cpp" line="288"/>
643 <location filename="../widgets/main_window.cpp" line="304"/>
644644 <source>Reload the current document</source>
645645 <translation type="unfinished"></translation>
646646 </message>
647647 <message>
648 <location filename="../widgets/main_window.cpp" line="292"/>
648 <location filename="../widgets/main_window.cpp" line="308"/>
649649 <source>Clear</source>
650650 <comment>Clear recent documents</comment>
651651 <translation type="unfinished"></translation>
652652 </message>
653653 <message>
654 <location filename="../widgets/main_window.cpp" line="293"/>
654 <location filename="../widgets/main_window.cpp" line="309"/>
655655 <source>Clear list of recent documents</source>
656656 <translation type="unfinished"></translation>
657657 </message>
658658 <message>
659 <location filename="../widgets/main_window.cpp" line="300"/>
659 <location filename="../widgets/main_window.cpp" line="316"/>
660660 <source>&amp;New Session</source>
661661 <translation type="unfinished"></translation>
662662 </message>
663663 <message>
664 <location filename="../widgets/main_window.cpp" line="301"/>
664 <location filename="../widgets/main_window.cpp" line="317"/>
665665 <source>Open a new session</source>
666666 <translation type="unfinished"></translation>
667667 </message>
668668 <message>
669 <location filename="../widgets/main_window.cpp" line="306"/>
669 <location filename="../widgets/main_window.cpp" line="322"/>
670670 <source>Save Session &amp;As...</source>
671671 <translation type="unfinished"></translation>
672672 </message>
673673 <message>
674 <location filename="../widgets/main_window.cpp" line="307"/>
674 <location filename="../widgets/main_window.cpp" line="323"/>
675675 <source>Save the current session with a different name</source>
676676 <translation type="unfinished"></translation>
677677 </message>
678678 <message>
679 <location filename="../widgets/main_window.cpp" line="312"/>
679 <location filename="../widgets/main_window.cpp" line="328"/>
680680 <source>&amp;Manage Sessions...</source>
681681 <translation type="unfinished"></translation>
682682 </message>
683683 <message>
684 <location filename="../widgets/main_window.cpp" line="317"/>
684 <location filename="../widgets/main_window.cpp" line="333"/>
685685 <source>&amp;Switch Session...</source>
686686 <translation type="unfinished"></translation>
687687 </message>
688688 <message>
689 <location filename="../widgets/main_window.cpp" line="319"/>
689 <location filename="../widgets/main_window.cpp" line="335"/>
690690 <source>Ctrl+Shift+Q</source>
691691 <comment>Switch Session</comment>
692692 <translation type="unfinished"></translation>
693693 </message>
694694 <message>
695 <location filename="../widgets/main_window.cpp" line="324"/>
695 <location filename="../widgets/main_window.cpp" line="340"/>
696696 <source>&amp;Find...</source>
697697 <translation type="unfinished"></translation>
698698 </message>
699699 <message>
700 <location filename="../widgets/main_window.cpp" line="325"/>
700 <location filename="../widgets/main_window.cpp" line="341"/>
701701 <source>Ctrl+F</source>
702702 <comment>Find</comment>
703703 <translation type="unfinished"></translation>
704704 </message>
705705 <message>
706 <location filename="../widgets/main_window.cpp" line="326"/>
706 <location filename="../widgets/main_window.cpp" line="342"/>
707707 <source>Find text in document</source>
708708 <translation type="unfinished"></translation>
709709 </message>
710710 <message>
711 <location filename="../widgets/main_window.cpp" line="331"/>
711 <location filename="../widgets/main_window.cpp" line="347"/>
712712 <source>&amp;Replace...</source>
713713 <translation type="unfinished"></translation>
714714 </message>
715715 <message>
716 <location filename="../widgets/main_window.cpp" line="332"/>
716 <location filename="../widgets/main_window.cpp" line="348"/>
717717 <source>Ctrl+R</source>
718718 <comment>Replace</comment>
719719 <translation type="unfinished"></translation>
720720 </message>
721721 <message>
722 <location filename="../widgets/main_window.cpp" line="333"/>
722 <location filename="../widgets/main_window.cpp" line="349"/>
723723 <source>Find and replace text in document</source>
724724 <translation type="unfinished"></translation>
725725 </message>
726726 <message>
727 <location filename="../widgets/main_window.cpp" line="338"/>
727 <location filename="../widgets/main_window.cpp" line="354"/>
728728 <source>&amp;Command Line</source>
729729 <translation type="unfinished"></translation>
730730 </message>
731731 <message>
732 <location filename="../widgets/main_window.cpp" line="339"/>
732 <location filename="../widgets/main_window.cpp" line="355"/>
733733 <source>Command line for quick code evaluation</source>
734734 <translation type="unfinished"></translation>
735735 </message>
736736 <message>
737 <location filename="../widgets/main_window.cpp" line="340"/>
737 <location filename="../widgets/main_window.cpp" line="356"/>
738738 <source>Ctrl+E</source>
739739 <comment>Show command line</comment>
740740 <translation type="unfinished"></translation>
741741 </message>
742742 <message>
743 <location filename="../widgets/main_window.cpp" line="344"/>
743 <location filename="../widgets/main_window.cpp" line="360"/>
744744 <source>&amp;Go To Line</source>
745745 <translation type="unfinished"></translation>
746746 </message>
747747 <message>
748 <location filename="../widgets/main_window.cpp" line="345"/>
748 <location filename="../widgets/main_window.cpp" line="361"/>
749749 <source>Tool to jump to a line by number</source>
750750 <translation type="unfinished"></translation>
751751 </message>
752752 <message>
753 <location filename="../widgets/main_window.cpp" line="346"/>
753 <location filename="../widgets/main_window.cpp" line="362"/>
754754 <source>Ctrl+L</source>
755755 <comment>Show go-to-line tool</comment>
756756 <translation type="unfinished"></translation>
757757 </message>
758758 <message>
759 <location filename="../widgets/main_window.cpp" line="351"/>
759 <location filename="../widgets/main_window.cpp" line="367"/>
760760 <source>&amp;Close Tool Panel</source>
761761 <translation type="unfinished"></translation>
762762 </message>
763763 <message>
764 <location filename="../widgets/main_window.cpp" line="352"/>
764 <location filename="../widgets/main_window.cpp" line="368"/>
765765 <source>Close any open tool panel</source>
766766 <translation type="unfinished"></translation>
767767 </message>
768768 <message>
769 <location filename="../widgets/main_window.cpp" line="353"/>
769 <location filename="../widgets/main_window.cpp" line="369"/>
770770 <source>Esc</source>
771771 <comment>Close tool box</comment>
772772 <translation type="unfinished"></translation>
773773 </message>
774774 <message>
775 <location filename="../widgets/main_window.cpp" line="357"/>
775 <location filename="../widgets/main_window.cpp" line="373"/>
776776 <source>&amp;Full Screen</source>
777777 <translation type="unfinished"></translation>
778778 </message>
779779 <message>
780 <location filename="../widgets/main_window.cpp" line="359"/>
780 <location filename="../widgets/main_window.cpp" line="375"/>
781781 <source>Ctrl+Shift+F</source>
782782 <comment>Show ScIDE in Full Screen</comment>
783783 <translation type="unfinished"></translation>
784784 </message>
785785 <message>
786 <location filename="../widgets/main_window.cpp" line="363"/>
786 <location filename="../widgets/main_window.cpp" line="379"/>
787787 <source>Focus Post Window</source>
788788 <translation type="unfinished"></translation>
789789 </message>
790790 <message>
791 <location filename="../widgets/main_window.cpp" line="364"/>
791 <location filename="../widgets/main_window.cpp" line="380"/>
792792 <source>Focus post window</source>
793793 <translation type="unfinished"></translation>
794794 </message>
795795 <message>
796 <location filename="../widgets/main_window.cpp" line="365"/>
796 <location filename="../widgets/main_window.cpp" line="381"/>
797797 <source>Ctrl+P</source>
798798 <comment>Focus post window</comment>
799799 <translation type="unfinished"></translation>
800800 </message>
801801 <message>
802 <location filename="../widgets/main_window.cpp" line="371"/>
802 <location filename="../widgets/main_window.cpp" line="387"/>
803803 <source>Look Up Implementations...</source>
804804 <translation type="unfinished"></translation>
805805 </message>
806806 <message>
807 <location filename="../widgets/main_window.cpp" line="372"/>
807 <location filename="../widgets/main_window.cpp" line="388"/>
808808 <source>Ctrl+Shift+I</source>
809809 <comment>Look Up Implementations</comment>
810810 <translation type="unfinished"></translation>
811811 </message>
812812 <message>
813 <location filename="../widgets/main_window.cpp" line="373"/>
813 <location filename="../widgets/main_window.cpp" line="389"/>
814814 <source>Open dialog to look up implementations of a class or a method</source>
815815 <translation type="unfinished"></translation>
816816 </message>
817817 <message>
818 <location filename="../widgets/main_window.cpp" line="377"/>
818 <location filename="../widgets/main_window.cpp" line="393"/>
819819 <source>Look Up Implementations for Cursor</source>
820820 <translation type="unfinished"></translation>
821821 </message>
822822 <message>
823 <location filename="../widgets/main_window.cpp" line="378"/>
823 <location filename="../widgets/main_window.cpp" line="394"/>
824824 <source>Ctrl+I</source>
825825 <comment>Look Up Implementations for Cursor</comment>
826826 <translation type="unfinished"></translation>
827827 </message>
828828 <message>
829 <location filename="../widgets/main_window.cpp" line="379"/>
829 <location filename="../widgets/main_window.cpp" line="395"/>
830830 <source>Look up implementations of class or method under cursor</source>
831831 <translation type="unfinished"></translation>
832832 </message>
833833 <message>
834 <location filename="../widgets/main_window.cpp" line="384"/>
834 <location filename="../widgets/main_window.cpp" line="400"/>
835835 <source>Look Up References...</source>
836836 <translation type="unfinished"></translation>
837837 </message>
838838 <message>
839 <location filename="../widgets/main_window.cpp" line="385"/>
839 <location filename="../widgets/main_window.cpp" line="401"/>
840840 <source>Ctrl+Shift+U</source>
841841 <comment>Look Up References</comment>
842842 <translation type="unfinished"></translation>
843843 </message>
844844 <message>
845 <location filename="../widgets/main_window.cpp" line="386"/>
845 <location filename="../widgets/main_window.cpp" line="402"/>
846846 <source>Open dialog to look up references to a class or a method</source>
847847 <translation type="unfinished"></translation>
848848 </message>
849849 <message>
850 <location filename="../widgets/main_window.cpp" line="390"/>
850 <location filename="../widgets/main_window.cpp" line="406"/>
851851 <source>Look Up References for Cursor</source>
852852 <translation type="unfinished"></translation>
853853 </message>
854854 <message>
855 <location filename="../widgets/main_window.cpp" line="391"/>
855 <location filename="../widgets/main_window.cpp" line="407"/>
856856 <source>Ctrl+U</source>
857857 <comment>Look Up References For Selection</comment>
858858 <translation type="unfinished"></translation>
859859 </message>
860860 <message>
861 <location filename="../widgets/main_window.cpp" line="392"/>
861 <location filename="../widgets/main_window.cpp" line="408"/>
862862 <source>Look up references to class or method under cursor</source>
863863 <translation type="unfinished"></translation>
864864 </message>
865865 <message>
866 <location filename="../widgets/main_window.cpp" line="397"/>
866 <location filename="../widgets/main_window.cpp" line="413"/>
867867 <source>&amp;Preferences</source>
868868 <translation type="unfinished"></translation>
869869 </message>
870870 <message>
871 <location filename="../widgets/main_window.cpp" line="399"/>
871 <location filename="../widgets/main_window.cpp" line="415"/>
872872 <source>Ctrl+,</source>
873873 <comment>Show configuration dialog</comment>
874874 <translation type="unfinished"></translation>
875875 </message>
876876 <message>
877 <location filename="../widgets/main_window.cpp" line="401"/>
877 <location filename="../widgets/main_window.cpp" line="417"/>
878878 <source>Show configuration dialog</source>
879879 <translation type="unfinished"></translation>
880880 </message>
881881 <message>
882 <location filename="../widgets/main_window.cpp" line="407"/>
882 <location filename="../widgets/main_window.cpp" line="423"/>
883883 <source>Open &amp;Help Browser</source>
884884 <translation type="unfinished"></translation>
885885 </message>
886886 <message>
887 <location filename="../widgets/main_window.cpp" line="408"/>
887 <location filename="../widgets/main_window.cpp" line="424"/>
888888 <source>Open help</source>
889889 <translation type="unfinished"></translation>
890890 </message>
891891 <message>
892 <location filename="../widgets/main_window.cpp" line="413"/>
892 <location filename="../widgets/main_window.cpp" line="429"/>
893893 <source>Look Up Documentation for Cursor</source>
894894 <translation type="unfinished"></translation>
895895 </message>
896896 <message>
897 <location filename="../widgets/main_window.cpp" line="414"/>
897 <location filename="../widgets/main_window.cpp" line="430"/>
898898 <source>Ctrl+D</source>
899899 <comment>Look Up Documentation for Cursor</comment>
900900 <translation type="unfinished"></translation>
901901 </message>
902902 <message>
903 <location filename="../widgets/main_window.cpp" line="415"/>
903 <location filename="../widgets/main_window.cpp" line="431"/>
904904 <source>Look up documentation for text under cursor</source>
905905 <translation type="unfinished"></translation>
906906 </message>
907907 <message>
908 <location filename="../widgets/main_window.cpp" line="420"/>
908 <location filename="../widgets/main_window.cpp" line="436"/>
909909 <source>Look Up Documentation...</source>
910910 <translation type="unfinished"></translation>
911911 </message>
912912 <message>
913 <location filename="../widgets/main_window.cpp" line="421"/>
913 <location filename="../widgets/main_window.cpp" line="437"/>
914914 <source>Ctrl+Shift+D</source>
915915 <comment>Look Up Documentation</comment>
916916 <translation type="unfinished"></translation>
917917 </message>
918918 <message>
919 <location filename="../widgets/main_window.cpp" line="422"/>
919 <location filename="../widgets/main_window.cpp" line="438"/>
920920 <source>Enter text to look up in documentation</source>
921921 <translation type="unfinished"></translation>
922922 </message>
923923 <message>
924 <location filename="../widgets/main_window.cpp" line="427"/>
924 <location filename="../widgets/main_window.cpp" line="443"/>
925925 <source>&amp;About SuperCollider</source>
926926 <translation type="unfinished"></translation>
927927 </message>
928928 <message>
929 <location filename="../widgets/main_window.cpp" line="432"/>
929 <location filename="../widgets/main_window.cpp" line="448"/>
930930 <source>About &amp;Qt</source>
931931 <translation type="unfinished"></translation>
932932 </message>
933933 <message>
934 <location filename="../widgets/main_window.cpp" line="439"/>
934 <location filename="../widgets/main_window.cpp" line="455"/>
935935 <source>Show/hide Post docklet</source>
936936 <translation type="unfinished"></translation>
937937 </message>
938938 <message>
939 <location filename="../widgets/main_window.cpp" line="445"/>
939 <location filename="../widgets/main_window.cpp" line="461"/>
940940 <source>Show/hide Documents docklet</source>
941941 <translation type="unfinished"></translation>
942942 </message>
943943 <message>
944 <location filename="../widgets/main_window.cpp" line="451"/>
944 <location filename="../widgets/main_window.cpp" line="467"/>
945945 <source>Show/hide Help browser docklet</source>
946946 <translation type="unfinished"></translation>
947947 </message>
948948 <message>
949 <location filename="../widgets/main_window.cpp" line="461"/>
949 <location filename="../widgets/main_window.cpp" line="494"/>
950950 <source>&amp;File</source>
951951 <translation type="unfinished"></translation>
952952 </message>
953953 <message>
954 <location filename="../widgets/main_window.cpp" line="464"/>
954 <location filename="../widgets/main_window.cpp" line="497"/>
955955 <source>Open Recent</source>
956956 <comment>Open a recent document</comment>
957957 <translation type="unfinished"></translation>
958958 </message>
959959 <message>
960 <location filename="../widgets/main_window.cpp" line="481"/>
960 <location filename="../widgets/main_window.cpp" line="514"/>
961961 <source>&amp;Session</source>
962962 <translation type="unfinished"></translation>
963963 </message>
964964 <message>
965 <location filename="../widgets/main_window.cpp" line="484"/>
965 <location filename="../widgets/main_window.cpp" line="517"/>
966966 <source>&amp;Open Session</source>
967967 <translation type="unfinished"></translation>
968968 </message>
969969 <message>
970 <location filename="../widgets/main_window.cpp" line="495"/>
970 <location filename="../widgets/main_window.cpp" line="528"/>
971971 <source>&amp;Edit</source>
972972 <translation type="unfinished"></translation>
973973 </message>
974974 <message>
975 <location filename="../widgets/main_window.cpp" line="519"/>
975 <location filename="../widgets/main_window.cpp" line="552"/>
976976 <source>&amp;View</source>
977977 <translation type="unfinished"></translation>
978978 </message>
979979 <message>
980 <location filename="../widgets/main_window.cpp" line="520"/>
980 <location filename="../widgets/main_window.cpp" line="553"/>
981981 <source>&amp;Docklets</source>
982982 <translation type="unfinished"></translation>
983983 </message>
984984 <message>
985 <location filename="../widgets/main_window.cpp" line="526"/>
985 <location filename="../widgets/main_window.cpp" line="559"/>
986986 <source>&amp;Tool Panels</source>
987987 <translation type="unfinished"></translation>
988988 </message>
989989 <message>
990 <location filename="../widgets/main_window.cpp" line="554"/>
990 <location filename="../widgets/main_window.cpp" line="587"/>
991991 <source>&amp;Language</source>
992992 <translation type="unfinished"></translation>
993993 </message>
994994 <message>
995 <location filename="../widgets/main_window.cpp" line="577"/>
995 <location filename="../widgets/main_window.cpp" line="610"/>
996996 <source>&amp;Help</source>
997997 <translation type="unfinished"></translation>
998998 </message>
999999 <message>
1000 <location filename="../widgets/main_window.cpp" line="697"/>
1000 <location filename="../widgets/main_window.cpp" line="730"/>
10011001 <source>Save Current Session</source>
10021002 <translation type="unfinished"></translation>
10031003 </message>
10041004 <message>
1005 <location filename="../widgets/main_window.cpp" line="698"/>
1005 <location filename="../widgets/main_window.cpp" line="731"/>
10061006 <source>Enter a name for the session:</source>
10071007 <translation type="unfinished"></translation>
10081008 </message>
10091009 <message>
1010 <location filename="../widgets/main_window.cpp" line="827"/>
1010 <location filename="../widgets/main_window.cpp" line="860"/>
10111011 <source>Booting</source>
10121012 <translation type="unfinished"></translation>
10131013 </message>
10141014 <message>
1015 <location filename="../widgets/main_window.cpp" line="834"/>
1015 <location filename="../widgets/main_window.cpp" line="867"/>
10161016 <source>Active</source>
10171017 <translation type="unfinished"></translation>
10181018 </message>
10191019 <message>
1020 <location filename="../widgets/main_window.cpp" line="878"/>
1021 <location filename="../widgets/main_window.cpp" line="910"/>
1020 <location filename="../widgets/main_window.cpp" line="911"/>
1021 <location filename="../widgets/main_window.cpp" line="943"/>
10221022 <source>SuperCollider IDE</source>
10231023 <translation type="unfinished"></translation>
10241024 </message>
10251025 <message>
1026 <location filename="../widgets/main_window.cpp" line="879"/>
1026 <location filename="../widgets/main_window.cpp" line="912"/>
10271027 <source>There are unsaved changes in document &apos;%1&apos;.
10281028
10291029 Do you want to save it?</source>
10301030 <translation type="unfinished"></translation>
10311031 </message>
10321032 <message>
1033 <location filename="../widgets/main_window.cpp" line="911"/>
1033 <location filename="../widgets/main_window.cpp" line="944"/>
10341034 <source>There are unsaved changes in document &apos;%1&apos;.
10351035
10361036 Do you want to reload it?</source>
10371037 <translation type="unfinished"></translation>
10381038 </message>
10391039 <message>
1040 <location filename="../widgets/main_window.cpp" line="938"/>
1040 <location filename="../widgets/main_window.cpp" line="971"/>
10411041 <source>Saving read-only file</source>
10421042 <translation type="unfinished"></translation>
10431043 </message>
10441044 <message>
1045 <location filename="../widgets/main_window.cpp" line="939"/>
1045 <location filename="../widgets/main_window.cpp" line="972"/>
10461046 <source>File is read-only. Please select a new location to save to.</source>
10471047 <translation type="unfinished"></translation>
10481048 </message>
10491049 <message>
1050 <location filename="../widgets/main_window.cpp" line="950"/>
1050 <location filename="../widgets/main_window.cpp" line="983"/>
10511051 <source>SuperCollider Document (*.scd)</source>
10521052 <translation type="unfinished"></translation>
10531053 </message>
10541054 <message>
1055 <location filename="../widgets/main_window.cpp" line="951"/>
1055 <location filename="../widgets/main_window.cpp" line="984"/>
10561056 <source>SuperCollider Class file (*.sc)</source>
10571057 <translation type="unfinished"></translation>
10581058 </message>
10591059 <message>
1060 <location filename="../widgets/main_window.cpp" line="953"/>
1061 <location filename="../widgets/main_window.cpp" line="1002"/>
1060 <location filename="../widgets/main_window.cpp" line="986"/>
1061 <location filename="../widgets/main_window.cpp" line="1035"/>
10621062 <source>All files (*)</source>
10631063 <translation type="unfinished"></translation>
10641064 </message>
10651065 <message>
1066 <location filename="../widgets/main_window.cpp" line="1003"/>
1066 <location filename="../widgets/main_window.cpp" line="1036"/>
10671067 <source>SuperCollider (*.scd *.sc)</source>
10681068 <translation type="unfinished"></translation>
10691069 </message>
10701070 <message>
1071 <location filename="../widgets/main_window.cpp" line="1004"/>
1071 <location filename="../widgets/main_window.cpp" line="1037"/>
10721072 <source>SCDoc (*.schelp)</source>
10731073 <translation type="unfinished"></translation>
10741074 </message>
10751075 <message>
1076 <location filename="../widgets/main_window.cpp" line="1148"/>
1076 <location filename="../widgets/main_window.cpp" line="1181"/>
10771077 <source>Untitled</source>
10781078 <translation type="unfinished"></translation>
10791079 </message>
10801080 <message>
1081 <location filename="../widgets/main_window.cpp" line="1274"/>
1081 <location filename="../widgets/main_window.cpp" line="1311"/>
10821082 <source>About SuperCollider IDE</source>
10831083 <translation type="unfinished"></translation>
10841084 </message>
10851085 <message>
1086 <location filename="../widgets/main_window.cpp" line="1356"/>
1086 <location filename="../widgets/main_window.cpp" line="1393"/>
10871087 <source>Look up Documentation For</source>
10881088 <translation type="unfinished"></translation>
10891089 </message>
10901090 <message>
1091 <location filename="../widgets/main_window.cpp" line="1405"/>
1091 <location filename="../widgets/main_window.cpp" line="1448"/>
10921092 <source>Open binary file?</source>
10931093 <translation type="unfinished"></translation>
10941094 </message>
10951095 <message>
1096 <location filename="../widgets/main_window.cpp" line="1406"/>
1096 <location filename="../widgets/main_window.cpp" line="1449"/>
10971097 <source>
10981098
10991099 The file has an unrecognized extension. It may be a binary file. Would you still like to open it?</source>
15531553 <context>
15541554 <name>ScIDE::PostDocklet</name>
15551555 <message>
1556 <location filename="../widgets/post_window.cpp" line="294"/>
1556 <location filename="../widgets/post_window.cpp" line="304"/>
15571557 <source>Post window</source>
15581558 <translation type="unfinished"></translation>
15591559 </message>
15611561 <context>
15621562 <name>ScIDE::PostWindow</name>
15631563 <message>
1564 <location filename="../widgets/post_window.cpp" line="64"/>
1564 <location filename="../widgets/post_window.cpp" line="65"/>
15651565 <source>Post Window</source>
15661566 <translation type="unfinished"></translation>
15671567 </message>
15681568 <message>
1569 <location filename="../widgets/post_window.cpp" line="66"/>
1569 <location filename="../widgets/post_window.cpp" line="67"/>
15701570 <source>Copy</source>
15711571 <translation type="unfinished"></translation>
15721572 </message>
15731573 <message>
1574 <location filename="../widgets/post_window.cpp" line="74"/>
1574 <location filename="../widgets/post_window.cpp" line="75"/>
15751575 <source>Clear</source>
15761576 <translation type="unfinished"></translation>
15771577 </message>
15781578 <message>
1579 <location filename="../widgets/post_window.cpp" line="75"/>
1579 <location filename="../widgets/post_window.cpp" line="76"/>
15801580 <source>Clear post window</source>
15811581 <translation type="unfinished"></translation>
15821582 </message>
15831583 <message>
1584 <location filename="../widgets/post_window.cpp" line="77"/>
1584 <location filename="../widgets/post_window.cpp" line="78"/>
15851585 <source>Ctrl+Shift+P</source>
15861586 <comment>Clear post window</comment>
15871587 <translation type="unfinished"></translation>
15881588 </message>
15891589 <message>
1590 <location filename="../widgets/post_window.cpp" line="86"/>
1590 <location filename="../widgets/post_window.cpp" line="87"/>
15911591 <source>Enlarge Font</source>
15921592 <translation type="unfinished"></translation>
15931593 </message>
15941594 <message>
1595 <location filename="../widgets/post_window.cpp" line="88"/>
1595 <location filename="../widgets/post_window.cpp" line="89"/>
15961596 <source>Enlarge post window font</source>
15971597 <translation type="unfinished"></translation>
15981598 </message>
15991599 <message>
1600 <location filename="../widgets/post_window.cpp" line="92"/>
1600 <location filename="../widgets/post_window.cpp" line="93"/>
16011601 <source>Shrink Font</source>
16021602 <translation type="unfinished"></translation>
16031603 </message>
16041604 <message>
1605 <location filename="../widgets/post_window.cpp" line="94"/>
1605 <location filename="../widgets/post_window.cpp" line="95"/>
16061606 <source>Shrink post window font</source>
16071607 <translation type="unfinished"></translation>
16081608 </message>
16091609 <message>
1610 <location filename="../widgets/post_window.cpp" line="102"/>
1610 <location filename="../widgets/post_window.cpp" line="103"/>
16111611 <source>Wrap Text</source>
16121612 <translation type="unfinished"></translation>
16131613 </message>
16141614 <message>
1615 <location filename="../widgets/post_window.cpp" line="103"/>
1615 <location filename="../widgets/post_window.cpp" line="104"/>
16161616 <source>Wrap lines wider than the post window</source>
16171617 <translation type="unfinished"></translation>
16181618 </message>
16191619 <message>
1620 <location filename="../widgets/post_window.cpp" line="109"/>
1620 <location filename="../widgets/post_window.cpp" line="110"/>
16211621 <source>Auto Scroll</source>
16221622 <translation type="unfinished"></translation>
16231623 </message>
16241624 <message>
1625 <location filename="../widgets/post_window.cpp" line="110"/>
1625 <location filename="../widgets/post_window.cpp" line="111"/>
16261626 <source>Scroll to bottom on new posts</source>
16271627 <translation type="unfinished"></translation>
16281628 </message>
16301630 <context>
16311631 <name>ScIDE::ReferencesDialog</name>
16321632 <message>
1633 <location filename="../widgets/lookup_dialog.cpp" line="431"/>
1633 <location filename="../widgets/lookup_dialog.cpp" line="425"/>
16341634 <source>Look Up References</source>
16351635 <translation type="unfinished"></translation>
16361636 </message>
16371637 <message>
1638 <location filename="../widgets/lookup_dialog.cpp" line="433"/>
1638 <location filename="../widgets/lookup_dialog.cpp" line="427"/>
16391639 <source>Enter class or method name...</source>
16401640 <translation type="unfinished"></translation>
16411641 </message>
16421642 <message>
1643 <location filename="../widgets/lookup_dialog.cpp" line="469"/>
1643 <location filename="../widgets/lookup_dialog.cpp" line="463"/>
16441644 <source>Introspection data not yet available</source>
16451645 <translation type="unfinished"></translation>
16461646 </message>
16551655 <message>
16561656 <location filename="../core/sc_process.cpp" line="67"/>
16571657 <location filename="../core/sc_process.cpp" line="71"/>
1658 <location filename="../core/sc_process.cpp" line="265"/>
1658 <location filename="../core/sc_process.cpp" line="266"/>
16591659 <source>Boot Interpreter</source>
16601660 <translation type="unfinished"></translation>
16611661 </message>
16621662 <message>
16631663 <location filename="../core/sc_process.cpp" line="75"/>
1664 <location filename="../core/sc_process.cpp" line="248"/>
1664 <location filename="../core/sc_process.cpp" line="249"/>
16651665 <source>Quit Interpreter</source>
16661666 <translation type="unfinished"></translation>
16671667 </message>
16931693 <translation type="unfinished"></translation>
16941694 </message>
16951695 <message>
1696 <location filename="../core/sc_process.cpp" line="113"/>
1696 <location filename="../core/sc_process.cpp" line="114"/>
16971697 <source>Interpreter is already running.</source>
16981698 <translation type="unfinished"></translation>
16991699 </message>
17001700 <message>
1701 <location filename="../core/sc_process.cpp" line="146"/>
1701 <location filename="../core/sc_process.cpp" line="147"/>
17021702 <source>Failed to start interpreter!</source>
17031703 <translation type="unfinished"></translation>
17041704 </message>
17051705 <message>
1706 <location filename="../core/sc_process.cpp" line="152"/>
1707 <location filename="../core/sc_process.cpp" line="163"/>
1708 <location filename="../core/sc_process.cpp" line="210"/>
1706 <location filename="../core/sc_process.cpp" line="153"/>
1707 <location filename="../core/sc_process.cpp" line="164"/>
1708 <location filename="../core/sc_process.cpp" line="211"/>
17091709 <source>Interpreter is not running!</source>
17101710 <translation type="unfinished"></translation>
17111711 </message>
17121712 <message>
1713 <location filename="../core/sc_process.cpp" line="181"/>
1713 <location filename="../core/sc_process.cpp" line="182"/>
17141714 <source>Failed to stop interpreter!</source>
17151715 <translation type="unfinished"></translation>
17161716 </message>
17171717 <message>
1718 <location filename="../core/sc_process.cpp" line="217"/>
1718 <location filename="../core/sc_process.cpp" line="218"/>
17191719 <source>Error when passing data to interpreter!</source>
17201720 <translation type="unfinished"></translation>
17211721 </message>
0 <?xml version="1.0" encoding="utf-8"?>
1 <!DOCTYPE TS>
2 <TS version="2.0" language="it_IT">
3 <context>
4 <name>ConfigDialog</name>
5 <message>
6 <location filename="../forms/settings_dialog.ui" line="14"/>
7 <source>SuperCollider IDE Configuration</source>
8 <translation type="unfinished"></translation>
9 </message>
10 </context>
11 <context>
12 <name>EditorConfigPage</name>
13 <message>
14 <location filename="../forms/settings_editor.ui" line="14"/>
15 <source>Form</source>
16 <translation type="unfinished"></translation>
17 </message>
18 <message>
19 <location filename="../forms/settings_editor.ui" line="31"/>
20 <source>Behavior</source>
21 <translation type="unfinished"></translation>
22 </message>
23 <message>
24 <location filename="../forms/settings_editor.ui" line="37"/>
25 <source>Indentation</source>
26 <translation type="unfinished"></translation>
27 </message>
28 <message>
29 <location filename="../forms/settings_editor.ui" line="45"/>
30 <source>Indentation width:</source>
31 <translation type="unfinished"></translation>
32 </message>
33 <message>
34 <location filename="../forms/settings_editor.ui" line="61"/>
35 <source> spaces</source>
36 <translation type="unfinished"></translation>
37 </message>
38 <message>
39 <location filename="../forms/settings_editor.ui" line="92"/>
40 <source>Use spaces instead of tabs</source>
41 <translation type="unfinished"></translation>
42 </message>
43 <message>
44 <location filename="../forms/settings_editor.ui" line="102"/>
45 <source>Code Evaluation</source>
46 <translation type="unfinished"></translation>
47 </message>
48 <message>
49 <location filename="../forms/settings_editor.ui" line="110"/>
50 <source>Blink duration:</source>
51 <translation type="unfinished"></translation>
52 </message>
53 <message>
54 <location filename="../forms/settings_editor.ui" line="123"/>
55 <source>ms</source>
56 <translation type="unfinished"></translation>
57 </message>
58 <message>
59 <location filename="../forms/settings_editor.ui" line="154"/>
60 <source>Step forward after evaluating a line</source>
61 <translation type="unfinished"></translation>
62 </message>
63 <message>
64 <location filename="../forms/settings_editor.ui" line="178"/>
65 <source>Display</source>
66 <translation type="unfinished"></translation>
67 </message>
68 <message>
69 <location filename="../forms/settings_editor.ui" line="184"/>
70 <source>Wrap text in code editor</source>
71 <translation type="unfinished"></translation>
72 </message>
73 <message>
74 <location filename="../forms/settings_editor.ui" line="191"/>
75 <source>Wrap text in post window</source>
76 <translation type="unfinished"></translation>
77 </message>
78 <message>
79 <location filename="../forms/settings_editor.ui" line="200"/>
80 <source>Post window scrollback:</source>
81 <translation type="unfinished"></translation>
82 </message>
83 <message>
84 <location filename="../forms/settings_editor.ui" line="213"/>
85 <source> lines</source>
86 <translation type="unfinished"></translation>
87 </message>
88 <message>
89 <location filename="../forms/settings_editor.ui" line="261"/>
90 <source>Font &amp;&amp; Colors</source>
91 <translation type="unfinished"></translation>
92 </message>
93 <message>
94 <location filename="../forms/settings_editor.ui" line="267"/>
95 <source>Font</source>
96 <translation type="unfinished"></translation>
97 </message>
98 <message>
99 <location filename="../forms/settings_editor.ui" line="287"/>
100 <source>Show only monospaced</source>
101 <translation type="unfinished"></translation>
102 </message>
103 <message>
104 <location filename="../forms/settings_editor.ui" line="310"/>
105 <source>Family:</source>
106 <translation type="unfinished"></translation>
107 </message>
108 <message>
109 <location filename="../forms/settings_editor.ui" line="317"/>
110 <source>Size:</source>
111 <translation type="unfinished"></translation>
112 </message>
113 <message>
114 <location filename="../forms/settings_editor.ui" line="340"/>
115 <source>Antialias</source>
116 <translation type="unfinished"></translation>
117 </message>
118 <message>
119 <location filename="../forms/settings_editor.ui" line="369"/>
120 <source>Colors</source>
121 <translation type="unfinished"></translation>
122 </message>
123 <message>
124 <location filename="../forms/settings_editor.ui" line="398"/>
125 <source>Background:</source>
126 <translation type="unfinished"></translation>
127 </message>
128 <message>
129 <location filename="../forms/settings_editor.ui" line="427"/>
130 <location filename="../forms/settings_editor.ui" line="463"/>
131 <source>X</source>
132 <translation type="unfinished"></translation>
133 </message>
134 <message>
135 <location filename="../forms/settings_editor.ui" line="434"/>
136 <source>Foreground:</source>
137 <translation type="unfinished"></translation>
138 </message>
139 <message>
140 <location filename="../forms/settings_editor.ui" line="474"/>
141 <source>Italic</source>
142 <translation type="unfinished"></translation>
143 </message>
144 <message>
145 <location filename="../forms/settings_editor.ui" line="481"/>
146 <source>Bold</source>
147 <translation type="unfinished"></translation>
148 </message>
149 </context>
150 <context>
151 <name>GeneralConfigPage</name>
152 <message>
153 <location filename="../forms/settings_general.ui" line="14"/>
154 <source>Form</source>
155 <translation type="unfinished"></translation>
156 </message>
157 <message>
158 <location filename="../forms/settings_general.ui" line="20"/>
159 <source>On application start:</source>
160 <translation type="unfinished"></translation>
161 </message>
162 <message>
163 <location filename="../forms/settings_general.ui" line="27"/>
164 <source>Start a new session</source>
165 <translation type="unfinished"></translation>
166 </message>
167 <message>
168 <location filename="../forms/settings_general.ui" line="37"/>
169 <source>Load last session</source>
170 <translation type="unfinished"></translation>
171 </message>
172 <message>
173 <location filename="../forms/settings_general.ui" line="49"/>
174 <source>Load session:</source>
175 <translation type="unfinished"></translation>
176 </message>
177 </context>
178 <context>
179 <name>QObject</name>
180 <message>
181 <location filename="../core/sc_introspection.cpp" line="229"/>
182 <source>Sclang Introspection not available, yet!</source>
183 <translation type="unfinished"></translation>
184 </message>
185 <message>
186 <location filename="../core/sc_introspection.cpp" line="243"/>
187 <source>Class not defined!</source>
188 <translation type="unfinished"></translation>
189 </message>
190 </context>
191 <context>
192 <name>ScIDE::Docklet</name>
193 <message>
194 <location filename="../widgets/util/docklet.cpp" line="128"/>
195 <location filename="../widgets/util/docklet.cpp" line="277"/>
196 <source>Undock</source>
197 <translation type="unfinished"></translation>
198 </message>
199 <message>
200 <location filename="../widgets/util/docklet.cpp" line="132"/>
201 <location filename="../widgets/util/docklet.cpp" line="247"/>
202 <source>Detach</source>
203 <translation type="unfinished"></translation>
204 </message>
205 <message>
206 <location filename="../widgets/util/docklet.cpp" line="136"/>
207 <source>Close</source>
208 <translation type="unfinished"></translation>
209 </message>
210 <message>
211 <location filename="../widgets/util/docklet.cpp" line="247"/>
212 <source>Attach</source>
213 <translation type="unfinished"></translation>
214 </message>
215 <message>
216 <location filename="../widgets/util/docklet.cpp" line="277"/>
217 <source>Dock</source>
218 <translation type="unfinished"></translation>
219 </message>
220 </context>
221 <context>
222 <name>ScIDE::Document</name>
223 <message>
224 <location filename="../core/doc_manager.cpp" line="41"/>
225 <source>Untitled</source>
226 <translation type="unfinished"></translation>
227 </message>
228 </context>
229 <context>
230 <name>ScIDE::DocumentManager</name>
231 <message>
232 <location filename="../core/doc_manager.cpp" line="142"/>
233 <source>Cannot open file: %1 (file does not exist)</source>
234 <translation type="unfinished"></translation>
235 </message>
236 <message>
237 <location filename="../core/doc_manager.cpp" line="160"/>
238 <location filename="../core/doc_manager.cpp" line="211"/>
239 <source>Cannot open file for reading: %1</source>
240 <translation type="unfinished"></translation>
241 </message>
242 <message>
243 <location filename="../core/doc_manager.cpp" line="175"/>
244 <source>Opening RTF File</source>
245 <translation type="unfinished"></translation>
246 </message>
247 <message>
248 <location filename="../core/doc_manager.cpp" line="176"/>
249 <source>Warning: RTF file will be converted to plain-text scd file.</source>
250 <translation type="unfinished"></translation>
251 </message>
252 <message>
253 <location filename="../core/doc_manager.cpp" line="298"/>
254 <location filename="../core/doc_manager.cpp" line="305"/>
255 <source>File Extension Changed</source>
256 <translation type="unfinished"></translation>
257 </message>
258 <message>
259 <location filename="../core/doc_manager.cpp" line="299"/>
260 <location filename="../core/doc_manager.cpp" line="306"/>
261 <source>The extension of the file has changed. Please reopen file to update editor mode</source>
262 <translation type="unfinished"></translation>
263 </message>
264 </context>
265 <context>
266 <name>ScIDE::DocumentsDialog</name>
267 <message>
268 <location filename="../widgets/documents_dialog.cpp" line="61"/>
269 <source>Document</source>
270 <translation type="unfinished"></translation>
271 </message>
272 <message>
273 <location filename="../widgets/documents_dialog.cpp" line="61"/>
274 <source>Path</source>
275 <comment>File path.</comment>
276 <translation type="unfinished"></translation>
277 </message>
278 <message>
279 <location filename="../widgets/documents_dialog.cpp" line="63"/>
280 <source>Status</source>
281 <translation type="unfinished"></translation>
282 </message>
283 <message>
284 <location filename="../widgets/documents_dialog.cpp" line="74"/>
285 <source>Externally Changed Documents</source>
286 <translation type="unfinished"></translation>
287 </message>
288 <message>
289 <location filename="../widgets/documents_dialog.cpp" line="75"/>
290 <source>The following documents have changed externally.
291
292 Apply the desired actions to selected documents, until the list is empty.</source>
293 <translation type="unfinished"></translation>
294 </message>
295 <message>
296 <location filename="../widgets/documents_dialog.cpp" line="79"/>
297 <source>Unsaved Documents</source>
298 <translation type="unfinished"></translation>
299 </message>
300 <message>
301 <location filename="../widgets/documents_dialog.cpp" line="80"/>
302 <source>The following documents have unsaved changes.
303
304 Apply desired actions to selected documents, until the list is empty.</source>
305 <translation type="unfinished"></translation>
306 </message>
307 <message>
308 <location filename="../widgets/documents_dialog.cpp" line="92"/>
309 <source>&amp;Reload</source>
310 <translation type="unfinished"></translation>
311 </message>
312 <message>
313 <location filename="../widgets/documents_dialog.cpp" line="96"/>
314 <source>Over&amp;write</source>
315 <translation type="unfinished"></translation>
316 </message>
317 <message>
318 <location filename="../widgets/documents_dialog.cpp" line="100"/>
319 <source>&amp;Ignore</source>
320 <translation type="unfinished"></translation>
321 </message>
322 <message>
323 <location filename="../widgets/documents_dialog.cpp" line="104"/>
324 <source>&amp;Close</source>
325 <translation type="unfinished"></translation>
326 </message>
327 <message>
328 <location filename="../widgets/documents_dialog.cpp" line="109"/>
329 <source>&amp;Save</source>
330 <translation type="unfinished"></translation>
331 </message>
332 <message>
333 <location filename="../widgets/documents_dialog.cpp" line="113"/>
334 <source>&amp;Discard</source>
335 <translation type="unfinished"></translation>
336 </message>
337 <message>
338 <location filename="../widgets/documents_dialog.cpp" line="117"/>
339 <source>&amp;Cancel</source>
340 <translation type="unfinished"></translation>
341 </message>
342 <message>
343 <location filename="../widgets/documents_dialog.cpp" line="122"/>
344 <source>Select &amp;All</source>
345 <translation type="unfinished"></translation>
346 </message>
347 <message>
348 <location filename="../widgets/documents_dialog.cpp" line="125"/>
349 <source>Select N&amp;one</source>
350 <translation type="unfinished"></translation>
351 </message>
352 <message>
353 <location filename="../widgets/documents_dialog.cpp" line="275"/>
354 <source>Removed</source>
355 <translation type="unfinished"></translation>
356 </message>
357 <message>
358 <location filename="../widgets/documents_dialog.cpp" line="279"/>
359 <source>Modified</source>
360 <translation type="unfinished"></translation>
361 </message>
362 </context>
363 <context>
364 <name>ScIDE::DocumentsDocklet</name>
365 <message>
366 <location filename="../widgets/doc_list.cpp" line="126"/>
367 <source>Documents</source>
368 <translation type="unfinished"></translation>
369 </message>
370 </context>
371 <context>
372 <name>ScIDE::GoToLineTool</name>
373 <message>
374 <location filename="../widgets/goto_line_tool.hpp" line="52"/>
375 <source>Go</source>
376 <translation type="unfinished"></translation>
377 </message>
378 <message>
379 <location filename="../widgets/goto_line_tool.hpp" line="55"/>
380 <source>Line:</source>
381 <translation type="unfinished"></translation>
382 </message>
383 </context>
384 <context>
385 <name>ScIDE::HelpBrowser</name>
386 <message>
387 <location filename="../widgets/help_browser.cpp" line="103"/>
388 <source>Home</source>
389 <translation type="unfinished"></translation>
390 </message>
391 <message>
392 <location filename="../widgets/help_browser.cpp" line="106"/>
393 <source>Zoom In</source>
394 <translation type="unfinished"></translation>
395 </message>
396 <message>
397 <location filename="../widgets/help_browser.cpp" line="110"/>
398 <source>Zoom Out</source>
399 <translation type="unfinished"></translation>
400 </message>
401 <message>
402 <location filename="../widgets/help_browser.cpp" line="114"/>
403 <source>Evaluate as Code</source>
404 <translation type="unfinished"></translation>
405 </message>
406 <message>
407 <location filename="../widgets/help_browser.cpp" line="256"/>
408 <source>Can not use help - interpreter not running!</source>
409 <translation type="unfinished"></translation>
410 </message>
411 <message>
412 <location filename="../widgets/help_browser.cpp" line="261"/>
413 <source>Sending request</source>
414 <translation type="unfinished"></translation>
415 </message>
416 </context>
417 <context>
418 <name>ScIDE::HelpBrowserDocklet</name>
419 <message>
420 <location filename="../widgets/help_browser.cpp" line="399"/>
421 <source>Help browser</source>
422 <translation type="unfinished"></translation>
423 </message>
424 </context>
425 <context>
426 <name>ScIDE::HelpBrowserFindBox</name>
427 <message>
428 <location filename="../widgets/help_browser.cpp" line="360"/>
429 <source>Find...</source>
430 <translation type="unfinished"></translation>
431 </message>
432 </context>
433 <context>
434 <name>ScIDE::LoadProgressIndicator</name>
435 <message>
436 <location filename="../widgets/help_browser.hpp" line="45"/>
437 <source>Loading</source>
438 <translation type="unfinished"></translation>
439 </message>
440 </context>
441 <context>
442 <name>ScIDE::LookupDialog</name>
443 <message>
444 <location filename="../widgets/lookup_dialog.cpp" line="180"/>
445 <source>Look Up Implementations</source>
446 <translation type="unfinished"></translation>
447 </message>
448 <message>
449 <location filename="../widgets/lookup_dialog.cpp" line="182"/>
450 <source>Enter class or method name...</source>
451 <translation type="unfinished"></translation>
452 </message>
453 <message>
454 <location filename="../widgets/lookup_dialog.cpp" line="197"/>
455 <source>Introspection data not yet available</source>
456 <translation type="unfinished"></translation>
457 </message>
458 <message>
459 <location filename="../widgets/lookup_dialog.cpp" line="359"/>
460 <source>No result for query</source>
461 <translation type="unfinished"></translation>
462 </message>
463 </context>
464 <context>
465 <name>ScIDE::MainWindow</name>
466 <message>
467 <location filename="../widgets/main_window.cpp" line="94"/>
468 <location filename="../widgets/main_window.cpp" line="855"/>
469 <source>Inactive</source>
470 <translation type="unfinished"></translation>
471 </message>
472 <message>
473 <location filename="../widgets/main_window.cpp" line="99"/>
474 <source>Interpreter:</source>
475 <translation type="unfinished"></translation>
476 </message>
477 <message>
478 <location filename="../widgets/main_window.cpp" line="101"/>
479 <source>Server:</source>
480 <translation type="unfinished"></translation>
481 </message>
482 <message>
483 <location filename="../widgets/main_window.cpp" line="109"/>
484 <source>Command Line:</source>
485 <translation type="unfinished"></translation>
486 </message>
487 <message>
488 <location filename="../widgets/main_window.cpp" line="235"/>
489 <source>Text Editor</source>
490 <translation type="unfinished"></translation>
491 </message>
492 <message>
493 <location filename="../widgets/main_window.cpp" line="236"/>
494 <source>Help</source>
495 <translation type="unfinished"></translation>
496 </message>
497 <message>
498 <location filename="../widgets/main_window.cpp" line="240"/>
499 <source>&amp;Quit...</source>
500 <translation type="unfinished"></translation>
501 </message>
502 <message>
503 <location filename="../widgets/main_window.cpp" line="241"/>
504 <source>Ctrl+Q</source>
505 <comment>Quit application</comment>
506 <translation type="unfinished"></translation>
507 </message>
508 <message>
509 <location filename="../widgets/main_window.cpp" line="242"/>
510 <source>Quit SuperCollider IDE</source>
511 <translation type="unfinished"></translation>
512 </message>
513 <message>
514 <location filename="../widgets/main_window.cpp" line="247"/>
515 <source>&amp;New</source>
516 <translation type="unfinished"></translation>
517 </message>
518 <message>
519 <location filename="../widgets/main_window.cpp" line="248"/>
520 <source>Ctrl+N</source>
521 <comment>New document</comment>
522 <translation type="unfinished"></translation>
523 </message>
524 <message>
525 <location filename="../widgets/main_window.cpp" line="249"/>
526 <source>Create a new document</source>
527 <translation type="unfinished"></translation>
528 </message>
529 <message>
530 <location filename="../widgets/main_window.cpp" line="254"/>
531 <source>&amp;Open...</source>
532 <translation type="unfinished"></translation>
533 </message>
534 <message>
535 <location filename="../widgets/main_window.cpp" line="255"/>
536 <source>Ctrl+O</source>
537 <comment>Open document</comment>
538 <translation type="unfinished"></translation>
539 </message>
540 <message>
541 <location filename="../widgets/main_window.cpp" line="256"/>
542 <source>Open an existing file</source>
543 <translation type="unfinished"></translation>
544 </message>
545 <message>
546 <location filename="../widgets/main_window.cpp" line="261"/>
547 <location filename="../widgets/main_window.cpp" line="262"/>
548 <source>Open startup file</source>
549 <translation type="unfinished"></translation>
550 </message>
551 <message>
552 <location filename="../widgets/main_window.cpp" line="267"/>
553 <source>&amp;Save</source>
554 <translation type="unfinished"></translation>
555 </message>
556 <message>
557 <location filename="../widgets/main_window.cpp" line="268"/>
558 <source>Ctrl+S</source>
559 <comment>Save document</comment>
560 <translation type="unfinished"></translation>
561 </message>
562 <message>
563 <location filename="../widgets/main_window.cpp" line="269"/>
564 <source>Save the current document</source>
565 <translation type="unfinished"></translation>
566 </message>
567 <message>
568 <location filename="../widgets/main_window.cpp" line="274"/>
569 <source>Save &amp;As...</source>
570 <translation type="unfinished"></translation>
571 </message>
572 <message>
573 <location filename="../widgets/main_window.cpp" line="275"/>
574 <source>Ctrl+Shift+S</source>
575 <comment>Save &amp;As...</comment>
576 <translation type="unfinished"></translation>
577 </message>
578 <message>
579 <location filename="../widgets/main_window.cpp" line="276"/>
580 <source>Save the current document into a different file</source>
581 <translation type="unfinished"></translation>
582 </message>
583 <message>
584 <location filename="../widgets/main_window.cpp" line="281"/>
585 <source>Save All...</source>
586 <translation type="unfinished"></translation>
587 </message>
588 <message>
589 <location filename="../widgets/main_window.cpp" line="282"/>
590 <source>Ctrl+Alt+S</source>
591 <comment>Save all documents</comment>
592 <translation type="unfinished"></translation>
593 </message>
594 <message>
595 <location filename="../widgets/main_window.cpp" line="283"/>
596 <source>Save all open documents</source>
597 <translation type="unfinished"></translation>
598 </message>
599 <message>
600 <location filename="../widgets/main_window.cpp" line="288"/>
601 <source>&amp;Close</source>
602 <translation type="unfinished"></translation>
603 </message>
604 <message>
605 <location filename="../widgets/main_window.cpp" line="289"/>
606 <source>Ctrl+W</source>
607 <comment>Close document</comment>
608 <translation type="unfinished"></translation>
609 </message>
610 <message>
611 <location filename="../widgets/main_window.cpp" line="290"/>
612 <source>Close the current document</source>
613 <translation type="unfinished"></translation>
614 </message>
615 <message>
616 <location filename="../widgets/main_window.cpp" line="295"/>
617 <source>Close All...</source>
618 <translation type="unfinished"></translation>
619 </message>
620 <message>
621 <location filename="../widgets/main_window.cpp" line="296"/>
622 <source>Ctrl+Shift+W</source>
623 <comment>Close all documents</comment>
624 <translation type="unfinished"></translation>
625 </message>
626 <message>
627 <location filename="../widgets/main_window.cpp" line="297"/>
628 <source>Close all documents</source>
629 <translation type="unfinished"></translation>
630 </message>
631 <message>
632 <location filename="../widgets/main_window.cpp" line="302"/>
633 <source>&amp;Reload</source>
634 <translation type="unfinished"></translation>
635 </message>
636 <message>
637 <location filename="../widgets/main_window.cpp" line="303"/>
638 <source>F5</source>
639 <comment>Reload document</comment>
640 <translation type="unfinished"></translation>
641 </message>
642 <message>
643 <location filename="../widgets/main_window.cpp" line="304"/>
644 <source>Reload the current document</source>
645 <translation type="unfinished"></translation>
646 </message>
647 <message>
648 <location filename="../widgets/main_window.cpp" line="308"/>
649 <source>Clear</source>
650 <comment>Clear recent documents</comment>
651 <translation type="unfinished"></translation>
652 </message>
653 <message>
654 <location filename="../widgets/main_window.cpp" line="309"/>
655 <source>Clear list of recent documents</source>
656 <translation type="unfinished"></translation>
657 </message>
658 <message>
659 <location filename="../widgets/main_window.cpp" line="316"/>
660 <source>&amp;New Session</source>
661 <translation type="unfinished"></translation>
662 </message>
663 <message>
664 <location filename="../widgets/main_window.cpp" line="317"/>
665 <source>Open a new session</source>
666 <translation type="unfinished"></translation>
667 </message>
668 <message>
669 <location filename="../widgets/main_window.cpp" line="322"/>
670 <source>Save Session &amp;As...</source>
671 <translation type="unfinished"></translation>
672 </message>
673 <message>
674 <location filename="../widgets/main_window.cpp" line="323"/>
675 <source>Save the current session with a different name</source>
676 <translation type="unfinished"></translation>
677 </message>
678 <message>
679 <location filename="../widgets/main_window.cpp" line="328"/>
680 <source>&amp;Manage Sessions...</source>
681 <translation type="unfinished"></translation>
682 </message>
683 <message>
684 <location filename="../widgets/main_window.cpp" line="333"/>
685 <source>&amp;Switch Session...</source>
686 <translation type="unfinished"></translation>
687 </message>
688 <message>
689 <location filename="../widgets/main_window.cpp" line="335"/>
690 <source>Ctrl+Shift+Q</source>
691 <comment>Switch Session</comment>
692 <translation type="unfinished"></translation>
693 </message>
694 <message>
695 <location filename="../widgets/main_window.cpp" line="340"/>
696 <source>&amp;Find...</source>
697 <translation type="unfinished"></translation>
698 </message>
699 <message>
700 <location filename="../widgets/main_window.cpp" line="341"/>
701 <source>Ctrl+F</source>
702 <comment>Find</comment>
703 <translation type="unfinished"></translation>
704 </message>
705 <message>
706 <location filename="../widgets/main_window.cpp" line="342"/>
707 <source>Find text in document</source>
708 <translation type="unfinished"></translation>
709 </message>
710 <message>
711 <location filename="../widgets/main_window.cpp" line="347"/>
712 <source>&amp;Replace...</source>
713 <translation type="unfinished"></translation>
714 </message>
715 <message>
716 <location filename="../widgets/main_window.cpp" line="348"/>
717 <source>Ctrl+R</source>
718 <comment>Replace</comment>
719 <translation type="unfinished"></translation>
720 </message>
721 <message>
722 <location filename="../widgets/main_window.cpp" line="349"/>
723 <source>Find and replace text in document</source>
724 <translation type="unfinished"></translation>
725 </message>
726 <message>
727 <location filename="../widgets/main_window.cpp" line="354"/>
728 <source>&amp;Command Line</source>
729 <translation type="unfinished"></translation>
730 </message>
731 <message>
732 <location filename="../widgets/main_window.cpp" line="355"/>
733 <source>Command line for quick code evaluation</source>
734 <translation type="unfinished"></translation>
735 </message>
736 <message>
737 <location filename="../widgets/main_window.cpp" line="356"/>
738 <source>Ctrl+E</source>
739 <comment>Show command line</comment>
740 <translation type="unfinished"></translation>
741 </message>
742 <message>
743 <location filename="../widgets/main_window.cpp" line="360"/>
744 <source>&amp;Go To Line</source>
745 <translation type="unfinished"></translation>
746 </message>
747 <message>
748 <location filename="../widgets/main_window.cpp" line="361"/>
749 <source>Tool to jump to a line by number</source>
750 <translation type="unfinished"></translation>
751 </message>
752 <message>
753 <location filename="../widgets/main_window.cpp" line="362"/>
754 <source>Ctrl+L</source>
755 <comment>Show go-to-line tool</comment>
756 <translation type="unfinished"></translation>
757 </message>
758 <message>
759 <location filename="../widgets/main_window.cpp" line="367"/>
760 <source>&amp;Close Tool Panel</source>
761 <translation type="unfinished"></translation>
762 </message>
763 <message>
764 <location filename="../widgets/main_window.cpp" line="368"/>
765 <source>Close any open tool panel</source>
766 <translation type="unfinished"></translation>
767 </message>
768 <message>
769 <location filename="../widgets/main_window.cpp" line="369"/>
770 <source>Esc</source>
771 <comment>Close tool box</comment>
772 <translation type="unfinished"></translation>
773 </message>
774 <message>
775 <location filename="../widgets/main_window.cpp" line="373"/>
776 <source>&amp;Full Screen</source>
777 <translation type="unfinished"></translation>
778 </message>
779 <message>
780 <location filename="../widgets/main_window.cpp" line="375"/>
781 <source>Ctrl+Shift+F</source>
782 <comment>Show ScIDE in Full Screen</comment>
783 <translation type="unfinished"></translation>
784 </message>
785 <message>
786 <location filename="../widgets/main_window.cpp" line="379"/>
787 <source>Focus Post Window</source>
788 <translation type="unfinished"></translation>
789 </message>
790 <message>
791 <location filename="../widgets/main_window.cpp" line="380"/>
792 <source>Focus post window</source>
793 <translation type="unfinished"></translation>
794 </message>
795 <message>
796 <location filename="../widgets/main_window.cpp" line="381"/>
797 <source>Ctrl+P</source>
798 <comment>Focus post window</comment>
799 <translation type="unfinished"></translation>
800 </message>
801 <message>
802 <location filename="../widgets/main_window.cpp" line="387"/>
803 <source>Look Up Implementations...</source>
804 <translation type="unfinished"></translation>
805 </message>
806 <message>
807 <location filename="../widgets/main_window.cpp" line="388"/>
808 <source>Ctrl+Shift+I</source>
809 <comment>Look Up Implementations</comment>
810 <translation type="unfinished"></translation>
811 </message>
812 <message>
813 <location filename="../widgets/main_window.cpp" line="389"/>
814 <source>Open dialog to look up implementations of a class or a method</source>
815 <translation type="unfinished"></translation>
816 </message>
817 <message>
818 <location filename="../widgets/main_window.cpp" line="393"/>
819 <source>Look Up Implementations for Cursor</source>
820 <translation type="unfinished"></translation>
821 </message>
822 <message>
823 <location filename="../widgets/main_window.cpp" line="394"/>
824 <source>Ctrl+I</source>
825 <comment>Look Up Implementations for Cursor</comment>
826 <translation type="unfinished"></translation>
827 </message>
828 <message>
829 <location filename="../widgets/main_window.cpp" line="395"/>
830 <source>Look up implementations of class or method under cursor</source>
831 <translation type="unfinished"></translation>
832 </message>
833 <message>
834 <location filename="../widgets/main_window.cpp" line="400"/>
835 <source>Look Up References...</source>
836 <translation type="unfinished"></translation>
837 </message>
838 <message>
839 <location filename="../widgets/main_window.cpp" line="401"/>
840 <source>Ctrl+Shift+U</source>
841 <comment>Look Up References</comment>
842 <translation type="unfinished"></translation>
843 </message>
844 <message>
845 <location filename="../widgets/main_window.cpp" line="402"/>
846 <source>Open dialog to look up references to a class or a method</source>
847 <translation type="unfinished"></translation>
848 </message>
849 <message>
850 <location filename="../widgets/main_window.cpp" line="406"/>
851 <source>Look Up References for Cursor</source>
852 <translation type="unfinished"></translation>
853 </message>
854 <message>
855 <location filename="../widgets/main_window.cpp" line="407"/>
856 <source>Ctrl+U</source>
857 <comment>Look Up References For Selection</comment>
858 <translation type="unfinished"></translation>
859 </message>
860 <message>
861 <location filename="../widgets/main_window.cpp" line="408"/>
862 <source>Look up references to class or method under cursor</source>
863 <translation type="unfinished"></translation>
864 </message>
865 <message>
866 <location filename="../widgets/main_window.cpp" line="413"/>
867 <source>&amp;Preferences</source>
868 <translation type="unfinished"></translation>
869 </message>
870 <message>
871 <location filename="../widgets/main_window.cpp" line="415"/>
872 <source>Ctrl+,</source>
873 <comment>Show configuration dialog</comment>
874 <translation type="unfinished"></translation>
875 </message>
876 <message>
877 <location filename="../widgets/main_window.cpp" line="417"/>
878 <source>Show configuration dialog</source>
879 <translation type="unfinished"></translation>
880 </message>
881 <message>
882 <location filename="../widgets/main_window.cpp" line="423"/>
883 <source>Open &amp;Help Browser</source>
884 <translation type="unfinished"></translation>
885 </message>
886 <message>
887 <location filename="../widgets/main_window.cpp" line="424"/>
888 <source>Open help</source>
889 <translation type="unfinished"></translation>
890 </message>
891 <message>
892 <location filename="../widgets/main_window.cpp" line="429"/>
893 <source>Look Up Documentation for Cursor</source>
894 <translation type="unfinished"></translation>
895 </message>
896 <message>
897 <location filename="../widgets/main_window.cpp" line="430"/>
898 <source>Ctrl+D</source>
899 <comment>Look Up Documentation for Cursor</comment>
900 <translation type="unfinished"></translation>
901 </message>
902 <message>
903 <location filename="../widgets/main_window.cpp" line="431"/>
904 <source>Look up documentation for text under cursor</source>
905 <translation type="unfinished"></translation>
906 </message>
907 <message>
908 <location filename="../widgets/main_window.cpp" line="436"/>
909 <source>Look Up Documentation...</source>
910 <translation type="unfinished"></translation>
911 </message>
912 <message>
913 <location filename="../widgets/main_window.cpp" line="437"/>
914 <source>Ctrl+Shift+D</source>
915 <comment>Look Up Documentation</comment>
916 <translation type="unfinished"></translation>
917 </message>
918 <message>
919 <location filename="../widgets/main_window.cpp" line="438"/>
920 <source>Enter text to look up in documentation</source>
921 <translation type="unfinished"></translation>
922 </message>
923 <message>
924 <location filename="../widgets/main_window.cpp" line="443"/>
925 <source>&amp;About SuperCollider</source>
926 <translation type="unfinished"></translation>
927 </message>
928 <message>
929 <location filename="../widgets/main_window.cpp" line="448"/>
930 <source>About &amp;Qt</source>
931 <translation type="unfinished"></translation>
932 </message>
933 <message>
934 <location filename="../widgets/main_window.cpp" line="455"/>
935 <source>Show/hide Post docklet</source>
936 <translation type="unfinished"></translation>
937 </message>
938 <message>
939 <location filename="../widgets/main_window.cpp" line="461"/>
940 <source>Show/hide Documents docklet</source>
941 <translation type="unfinished"></translation>
942 </message>
943 <message>
944 <location filename="../widgets/main_window.cpp" line="467"/>
945 <source>Show/hide Help browser docklet</source>
946 <translation type="unfinished"></translation>
947 </message>
948 <message>
949 <location filename="../widgets/main_window.cpp" line="494"/>
950 <source>&amp;File</source>
951 <translation type="unfinished"></translation>
952 </message>
953 <message>
954 <location filename="../widgets/main_window.cpp" line="497"/>
955 <source>Open Recent</source>
956 <comment>Open a recent document</comment>
957 <translation type="unfinished"></translation>
958 </message>
959 <message>
960 <location filename="../widgets/main_window.cpp" line="514"/>
961 <source>&amp;Session</source>
962 <translation type="unfinished"></translation>
963 </message>
964 <message>
965 <location filename="../widgets/main_window.cpp" line="517"/>
966 <source>&amp;Open Session</source>
967 <translation type="unfinished"></translation>
968 </message>
969 <message>
970 <location filename="../widgets/main_window.cpp" line="528"/>
971 <source>&amp;Edit</source>
972 <translation type="unfinished"></translation>
973 </message>
974 <message>
975 <location filename="../widgets/main_window.cpp" line="552"/>
976 <source>&amp;View</source>
977 <translation type="unfinished"></translation>
978 </message>
979 <message>
980 <location filename="../widgets/main_window.cpp" line="553"/>
981 <source>&amp;Docklets</source>
982 <translation type="unfinished"></translation>
983 </message>
984 <message>
985 <location filename="../widgets/main_window.cpp" line="559"/>
986 <source>&amp;Tool Panels</source>
987 <translation type="unfinished"></translation>
988 </message>
989 <message>
990 <location filename="../widgets/main_window.cpp" line="587"/>
991 <source>&amp;Language</source>
992 <translation type="unfinished"></translation>
993 </message>
994 <message>
995 <location filename="../widgets/main_window.cpp" line="610"/>
996 <source>&amp;Help</source>
997 <translation type="unfinished"></translation>
998 </message>
999 <message>
1000 <location filename="../widgets/main_window.cpp" line="730"/>
1001 <source>Save Current Session</source>
1002 <translation type="unfinished"></translation>
1003 </message>
1004 <message>
1005 <location filename="../widgets/main_window.cpp" line="731"/>
1006 <source>Enter a name for the session:</source>
1007 <translation type="unfinished"></translation>
1008 </message>
1009 <message>
1010 <location filename="../widgets/main_window.cpp" line="860"/>
1011 <source>Booting</source>
1012 <translation type="unfinished"></translation>
1013 </message>
1014 <message>
1015 <location filename="../widgets/main_window.cpp" line="867"/>
1016 <source>Active</source>
1017 <translation type="unfinished"></translation>
1018 </message>
1019 <message>
1020 <location filename="../widgets/main_window.cpp" line="911"/>
1021 <location filename="../widgets/main_window.cpp" line="943"/>
1022 <source>SuperCollider IDE</source>
1023 <translation type="unfinished"></translation>
1024 </message>
1025 <message>
1026 <location filename="../widgets/main_window.cpp" line="912"/>
1027 <source>There are unsaved changes in document &apos;%1&apos;.
1028
1029 Do you want to save it?</source>
1030 <translation type="unfinished"></translation>
1031 </message>
1032 <message>
1033 <location filename="../widgets/main_window.cpp" line="944"/>
1034 <source>There are unsaved changes in document &apos;%1&apos;.
1035
1036 Do you want to reload it?</source>
1037 <translation type="unfinished"></translation>
1038 </message>
1039 <message>
1040 <location filename="../widgets/main_window.cpp" line="971"/>
1041 <source>Saving read-only file</source>
1042 <translation type="unfinished"></translation>
1043 </message>
1044 <message>
1045 <location filename="../widgets/main_window.cpp" line="972"/>
1046 <source>File is read-only. Please select a new location to save to.</source>
1047 <translation type="unfinished"></translation>
1048 </message>
1049 <message>
1050 <location filename="../widgets/main_window.cpp" line="983"/>
1051 <source>SuperCollider Document (*.scd)</source>
1052 <translation type="unfinished"></translation>
1053 </message>
1054 <message>
1055 <location filename="../widgets/main_window.cpp" line="984"/>
1056 <source>SuperCollider Class file (*.sc)</source>
1057 <translation type="unfinished"></translation>
1058 </message>
1059 <message>
1060 <location filename="../widgets/main_window.cpp" line="986"/>
1061 <location filename="../widgets/main_window.cpp" line="1035"/>
1062 <source>All files (*)</source>
1063 <translation type="unfinished"></translation>
1064 </message>
1065 <message>
1066 <location filename="../widgets/main_window.cpp" line="1036"/>
1067 <source>SuperCollider (*.scd *.sc)</source>
1068 <translation type="unfinished"></translation>
1069 </message>
1070 <message>
1071 <location filename="../widgets/main_window.cpp" line="1037"/>
1072 <source>SCDoc (*.schelp)</source>
1073 <translation type="unfinished"></translation>
1074 </message>
1075 <message>
1076 <location filename="../widgets/main_window.cpp" line="1181"/>
1077 <source>Untitled</source>
1078 <translation type="unfinished"></translation>
1079 </message>
1080 <message>
1081 <location filename="../widgets/main_window.cpp" line="1311"/>
1082 <source>About SuperCollider IDE</source>
1083 <translation type="unfinished"></translation>
1084 </message>
1085 <message>
1086 <location filename="../widgets/main_window.cpp" line="1393"/>
1087 <source>Look up Documentation For</source>
1088 <translation type="unfinished"></translation>
1089 </message>
1090 <message>
1091 <location filename="../widgets/main_window.cpp" line="1448"/>
1092 <source>Open binary file?</source>
1093 <translation type="unfinished"></translation>
1094 </message>
1095 <message>
1096 <location filename="../widgets/main_window.cpp" line="1449"/>
1097 <source>
1098
1099 The file has an unrecognized extension. It may be a binary file. Would you still like to open it?</source>
1100 <translation type="unfinished"></translation>
1101 </message>
1102 </context>
1103 <context>
1104 <name>ScIDE::MultiEditor</name>
1105 <message>
1106 <location filename="../widgets/multi_editor.cpp" line="265"/>
1107 <source>Text Editor</source>
1108 <translation type="unfinished"></translation>
1109 </message>
1110 <message>
1111 <location filename="../widgets/multi_editor.cpp" line="270"/>
1112 <source>&amp;Undo</source>
1113 <translation type="unfinished"></translation>
1114 </message>
1115 <message>
1116 <location filename="../widgets/multi_editor.cpp" line="271"/>
1117 <source>Ctrl+Z</source>
1118 <comment>Undo</comment>
1119 <translation type="unfinished"></translation>
1120 </message>
1121 <message>
1122 <location filename="../widgets/multi_editor.cpp" line="272"/>
1123 <source>Undo last editing action</source>
1124 <translation type="unfinished"></translation>
1125 </message>
1126 <message>
1127 <location filename="../widgets/multi_editor.cpp" line="278"/>
1128 <source>Re&amp;do</source>
1129 <translation type="unfinished"></translation>
1130 </message>
1131 <message>
1132 <location filename="../widgets/multi_editor.cpp" line="279"/>
1133 <source>Ctrl+Shift+Z</source>
1134 <comment>Redo</comment>
1135 <translation type="unfinished"></translation>
1136 </message>
1137 <message>
1138 <location filename="../widgets/multi_editor.cpp" line="280"/>
1139 <source>Redo next editing action</source>
1140 <translation type="unfinished"></translation>
1141 </message>
1142 <message>
1143 <location filename="../widgets/multi_editor.cpp" line="286"/>
1144 <source>Cu&amp;t</source>
1145 <translation type="unfinished"></translation>
1146 </message>
1147 <message>
1148 <location filename="../widgets/multi_editor.cpp" line="287"/>
1149 <source>Ctrl+X</source>
1150 <comment>Cut</comment>
1151 <translation type="unfinished"></translation>
1152 </message>
1153 <message>
1154 <location filename="../widgets/multi_editor.cpp" line="289"/>
1155 <source>Cut text to clipboard</source>
1156 <translation type="unfinished"></translation>
1157 </message>
1158 <message>
1159 <location filename="../widgets/multi_editor.cpp" line="295"/>
1160 <source>&amp;Copy</source>
1161 <translation type="unfinished"></translation>
1162 </message>
1163 <message>
1164 <location filename="../widgets/multi_editor.cpp" line="296"/>
1165 <source>Ctrl+C</source>
1166 <comment>Copy</comment>
1167 <translation type="unfinished"></translation>
1168 </message>
1169 <message>
1170 <location filename="../widgets/multi_editor.cpp" line="298"/>
1171 <source>Copy text to clipboard</source>
1172 <translation type="unfinished"></translation>
1173 </message>
1174 <message>
1175 <location filename="../widgets/multi_editor.cpp" line="304"/>
1176 <source>&amp;Paste</source>
1177 <translation type="unfinished"></translation>
1178 </message>
1179 <message>
1180 <location filename="../widgets/multi_editor.cpp" line="305"/>
1181 <source>Ctrl+V</source>
1182 <comment>Paste</comment>
1183 <translation type="unfinished"></translation>
1184 </message>
1185 <message>
1186 <location filename="../widgets/multi_editor.cpp" line="307"/>
1187 <source>Paste text from clipboard</source>
1188 <translation type="unfinished"></translation>
1189 </message>
1190 <message>
1191 <location filename="../widgets/multi_editor.cpp" line="312"/>
1192 <location filename="../widgets/multi_editor.cpp" line="313"/>
1193 <source>Autoindent Line or Region</source>
1194 <translation type="unfinished"></translation>
1195 </message>
1196 <message>
1197 <location filename="../widgets/multi_editor.cpp" line="318"/>
1198 <source>Trigger Autocompletion</source>
1199 <translation type="unfinished"></translation>
1200 </message>
1201 <message>
1202 <location filename="../widgets/multi_editor.cpp" line="319"/>
1203 <source>Suggest possible completions of text at cursor</source>
1204 <translation type="unfinished"></translation>
1205 </message>
1206 <message>
1207 <location filename="../widgets/multi_editor.cpp" line="320"/>
1208 <source>Ctrl+Space</source>
1209 <comment>Trigger Autocompletion</comment>
1210 <translation type="unfinished"></translation>
1211 </message>
1212 <message>
1213 <location filename="../widgets/multi_editor.cpp" line="326"/>
1214 <source>Trigger Method Call Aid</source>
1215 <translation type="unfinished"></translation>
1216 </message>
1217 <message>
1218 <location filename="../widgets/multi_editor.cpp" line="327"/>
1219 <source>Show arguments for currently typed method call</source>
1220 <translation type="unfinished"></translation>
1221 </message>
1222 <message>
1223 <location filename="../widgets/multi_editor.cpp" line="328"/>
1224 <source>Ctrl+Shift+Space</source>
1225 <comment>Trigger Method Call Aid</comment>
1226 <translation type="unfinished"></translation>
1227 </message>
1228 <message>
1229 <location filename="../widgets/multi_editor.cpp" line="335"/>
1230 <source>Toggle &amp;Comment</source>
1231 <translation type="unfinished"></translation>
1232 </message>
1233 <message>
1234 <location filename="../widgets/multi_editor.cpp" line="336"/>
1235 <source>Ctrl+/</source>
1236 <comment>Toggle Comment</comment>
1237 <translation type="unfinished"></translation>
1238 </message>
1239 <message>
1240 <location filename="../widgets/multi_editor.cpp" line="338"/>
1241 <source>Toggle Comment</source>
1242 <translation type="unfinished"></translation>
1243 </message>
1244 <message>
1245 <location filename="../widgets/multi_editor.cpp" line="344"/>
1246 <source>Toggle &amp;Overwrite Mode</source>
1247 <translation type="unfinished"></translation>
1248 </message>
1249 <message>
1250 <location filename="../widgets/multi_editor.cpp" line="345"/>
1251 <source>Insert</source>
1252 <comment>Toggle Overwrite Mode</comment>
1253 <translation type="unfinished"></translation>
1254 </message>
1255 <message>
1256 <location filename="../widgets/multi_editor.cpp" line="351"/>
1257 <source>Copy Line Up</source>
1258 <translation type="unfinished"></translation>
1259 </message>
1260 <message>
1261 <location filename="../widgets/multi_editor.cpp" line="352"/>
1262 <source>Ctrl+Alt+Up</source>
1263 <comment>Copy Line Up</comment>
1264 <translation type="unfinished"></translation>
1265 </message>
1266 <message>
1267 <location filename="../widgets/multi_editor.cpp" line="358"/>
1268 <source>Copy Line Down</source>
1269 <translation type="unfinished"></translation>
1270 </message>
1271 <message>
1272 <location filename="../widgets/multi_editor.cpp" line="359"/>
1273 <source>Ctrl+Alt+Down</source>
1274 <comment>Copy Line Up</comment>
1275 <translation type="unfinished"></translation>
1276 </message>
1277 <message>
1278 <location filename="../widgets/multi_editor.cpp" line="365"/>
1279 <source>Move Line Up</source>
1280 <translation type="unfinished"></translation>
1281 </message>
1282 <message>
1283 <location filename="../widgets/multi_editor.cpp" line="366"/>
1284 <source>Ctrl+Shift+Up</source>
1285 <comment>Move Line Up</comment>
1286 <translation type="unfinished"></translation>
1287 </message>
1288 <message>
1289 <location filename="../widgets/multi_editor.cpp" line="372"/>
1290 <source>Move Line Down</source>
1291 <translation type="unfinished"></translation>
1292 </message>
1293 <message>
1294 <location filename="../widgets/multi_editor.cpp" line="373"/>
1295 <source>Ctrl+Shift+Down</source>
1296 <comment>Move Line Up</comment>
1297 <translation type="unfinished"></translation>
1298 </message>
1299 <message>
1300 <location filename="../widgets/multi_editor.cpp" line="379"/>
1301 <source>Go to Previous Block</source>
1302 <translation type="unfinished"></translation>
1303 </message>
1304 <message>
1305 <location filename="../widgets/multi_editor.cpp" line="380"/>
1306 <source>Ctrl+[</source>
1307 <comment>Go to Previous Block</comment>
1308 <translation type="unfinished"></translation>
1309 </message>
1310 <message>
1311 <location filename="../widgets/multi_editor.cpp" line="387"/>
1312 <source>Go to Next Block</source>
1313 <translation type="unfinished"></translation>
1314 </message>
1315 <message>
1316 <location filename="../widgets/multi_editor.cpp" line="388"/>
1317 <source>Ctrl+]</source>
1318 <comment>Go to Next Block</comment>
1319 <translation type="unfinished"></translation>
1320 </message>
1321 <message>
1322 <location filename="../widgets/multi_editor.cpp" line="395"/>
1323 <source>Go to Previous Region</source>
1324 <translation type="unfinished"></translation>
1325 </message>
1326 <message>
1327 <location filename="../widgets/multi_editor.cpp" line="396"/>
1328 <source>Alt+[</source>
1329 <comment>Go to Previous Region</comment>
1330 <translation type="unfinished"></translation>
1331 </message>
1332 <message>
1333 <location filename="../widgets/multi_editor.cpp" line="403"/>
1334 <source>Go to Next Region</source>
1335 <translation type="unfinished"></translation>
1336 </message>
1337 <message>
1338 <location filename="../widgets/multi_editor.cpp" line="404"/>
1339 <source>Alt+]</source>
1340 <comment>Go to Next Region</comment>
1341 <translation type="unfinished"></translation>
1342 </message>
1343 <message>
1344 <location filename="../widgets/multi_editor.cpp" line="410"/>
1345 <source>Go to Previous Empty Line</source>
1346 <translation type="unfinished"></translation>
1347 </message>
1348 <message>
1349 <location filename="../widgets/multi_editor.cpp" line="411"/>
1350 <source>Ctrl+Up</source>
1351 <comment>Go to Previous Empty Line</comment>
1352 <translation type="unfinished"></translation>
1353 </message>
1354 <message>
1355 <location filename="../widgets/multi_editor.cpp" line="416"/>
1356 <source>Go to Next Empty Line</source>
1357 <translation type="unfinished"></translation>
1358 </message>
1359 <message>
1360 <location filename="../widgets/multi_editor.cpp" line="417"/>
1361 <source>Ctrl+Down</source>
1362 <comment>Go to Next Empty Line</comment>
1363 <translation type="unfinished"></translation>
1364 </message>
1365 <message>
1366 <location filename="../widgets/multi_editor.cpp" line="422"/>
1367 <source>Select Region</source>
1368 <translation type="unfinished"></translation>
1369 </message>
1370 <message>
1371 <location filename="../widgets/multi_editor.cpp" line="423"/>
1372 <source>Ctrl+Shift+R</source>
1373 <comment>Select Region</comment>
1374 <translation type="unfinished"></translation>
1375 </message>
1376 <message>
1377 <location filename="../widgets/multi_editor.cpp" line="432"/>
1378 <source>&amp;Enlarge Font</source>
1379 <translation type="unfinished"></translation>
1380 </message>
1381 <message>
1382 <location filename="../widgets/multi_editor.cpp" line="433"/>
1383 <source>Ctrl++</source>
1384 <comment>Enlarge font</comment>
1385 <translation type="unfinished"></translation>
1386 </message>
1387 <message>
1388 <location filename="../widgets/multi_editor.cpp" line="435"/>
1389 <source>Increase displayed font size</source>
1390 <translation type="unfinished"></translation>
1391 </message>
1392 <message>
1393 <location filename="../widgets/multi_editor.cpp" line="440"/>
1394 <source>&amp;Shrink Font</source>
1395 <translation type="unfinished"></translation>
1396 </message>
1397 <message>
1398 <location filename="../widgets/multi_editor.cpp" line="441"/>
1399 <source>Ctrl+-</source>
1400 <comment>Shrink font</comment>
1401 <translation type="unfinished"></translation>
1402 </message>
1403 <message>
1404 <location filename="../widgets/multi_editor.cpp" line="443"/>
1405 <source>Decrease displayed font size</source>
1406 <translation type="unfinished"></translation>
1407 </message>
1408 <message>
1409 <location filename="../widgets/multi_editor.cpp" line="448"/>
1410 <source>&amp;Reset Font Size</source>
1411 <translation type="unfinished"></translation>
1412 </message>
1413 <message>
1414 <location filename="../widgets/multi_editor.cpp" line="449"/>
1415 <source>Ctrl+0</source>
1416 <comment>Reset font</comment>
1417 <translation type="unfinished"></translation>
1418 </message>
1419 <message>
1420 <location filename="../widgets/multi_editor.cpp" line="450"/>
1421 <source>Reset displayed font size</source>
1422 <translation type="unfinished"></translation>
1423 </message>
1424 <message>
1425 <location filename="../widgets/multi_editor.cpp" line="454"/>
1426 <source>Show Spaces and Tabs</source>
1427 <translation type="unfinished"></translation>
1428 </message>
1429 <message>
1430 <location filename="../widgets/multi_editor.cpp" line="460"/>
1431 <source>Use Spaces for Indentation</source>
1432 <translation type="unfinished"></translation>
1433 </message>
1434 <message>
1435 <location filename="../widgets/multi_editor.cpp" line="462"/>
1436 <source>Indent with spaces instead of tabs</source>
1437 <translation type="unfinished"></translation>
1438 </message>
1439 <message>
1440 <location filename="../widgets/multi_editor.cpp" line="468"/>
1441 <source>Next Document</source>
1442 <translation type="unfinished"></translation>
1443 </message>
1444 <message>
1445 <location filename="../widgets/multi_editor.cpp" line="470"/>
1446 <source>Alt+Right</source>
1447 <comment>Next Document</comment>
1448 <translation type="unfinished"></translation>
1449 </message>
1450 <message>
1451 <location filename="../widgets/multi_editor.cpp" line="472"/>
1452 <source>Ctrl+Alt+Right</source>
1453 <comment>Next Document</comment>
1454 <translation type="unfinished"></translation>
1455 </message>
1456 <message>
1457 <location filename="../widgets/multi_editor.cpp" line="477"/>
1458 <source>Previous Document</source>
1459 <translation type="unfinished"></translation>
1460 </message>
1461 <message>
1462 <location filename="../widgets/multi_editor.cpp" line="479"/>
1463 <source>Alt+Left</source>
1464 <comment>Previous Document</comment>
1465 <translation type="unfinished"></translation>
1466 </message>
1467 <message>
1468 <location filename="../widgets/multi_editor.cpp" line="481"/>
1469 <source>Ctrl+Alt+Left</source>
1470 <comment>Previous Document</comment>
1471 <translation type="unfinished"></translation>
1472 </message>
1473 <message>
1474 <location filename="../widgets/multi_editor.cpp" line="486"/>
1475 <source>Switch Document</source>
1476 <translation type="unfinished"></translation>
1477 </message>
1478 <message>
1479 <location filename="../widgets/multi_editor.cpp" line="488"/>
1480 <source>Ctrl+Tab</source>
1481 <comment>Switch Document</comment>
1482 <translation type="unfinished"></translation>
1483 </message>
1484 <message>
1485 <location filename="../widgets/multi_editor.cpp" line="490"/>
1486 <source>Meta+Tab</source>
1487 <comment>Switch Document</comment>
1488 <translation type="unfinished"></translation>
1489 </message>
1490 <message>
1491 <location filename="../widgets/multi_editor.cpp" line="495"/>
1492 <source>Split To Right</source>
1493 <translation type="unfinished"></translation>
1494 </message>
1495 <message>
1496 <location filename="../widgets/multi_editor.cpp" line="500"/>
1497 <source>Split To Bottom</source>
1498 <translation type="unfinished"></translation>
1499 </message>
1500 <message>
1501 <location filename="../widgets/multi_editor.cpp" line="505"/>
1502 <source>Remove Current Split</source>
1503 <translation type="unfinished"></translation>
1504 </message>
1505 <message>
1506 <location filename="../widgets/multi_editor.cpp" line="510"/>
1507 <source>Remove All Splits</source>
1508 <translation type="unfinished"></translation>
1509 </message>
1510 <message>
1511 <location filename="../widgets/multi_editor.cpp" line="518"/>
1512 <source>Evaluate &amp;File</source>
1513 <translation type="unfinished"></translation>
1514 </message>
1515 <message>
1516 <location filename="../widgets/multi_editor.cpp" line="519"/>
1517 <source>Evaluate current File</source>
1518 <translation type="unfinished"></translation>
1519 </message>
1520 <message>
1521 <location filename="../widgets/multi_editor.cpp" line="526"/>
1522 <source>&amp;Evaluate Selection, Line or Region</source>
1523 <translation type="unfinished"></translation>
1524 </message>
1525 <message>
1526 <location filename="../widgets/multi_editor.cpp" line="527"/>
1527 <source>Ctrl+Return</source>
1528 <comment>Evaluate region</comment>
1529 <translation type="unfinished"></translation>
1530 </message>
1531 <message>
1532 <location filename="../widgets/multi_editor.cpp" line="528"/>
1533 <source>Evaluate current region</source>
1534 <translation type="unfinished"></translation>
1535 </message>
1536 <message>
1537 <location filename="../widgets/multi_editor.cpp" line="535"/>
1538 <source>&amp;Evaluate Selection or Line</source>
1539 <translation type="unfinished"></translation>
1540 </message>
1541 <message>
1542 <location filename="../widgets/multi_editor.cpp" line="536"/>
1543 <source>Shift+Return</source>
1544 <comment>Evaluate selection/line</comment>
1545 <translation type="unfinished"></translation>
1546 </message>
1547 <message>
1548 <location filename="../widgets/multi_editor.cpp" line="537"/>
1549 <source>Evaluate current selection/line</source>
1550 <translation type="unfinished"></translation>
1551 </message>
1552 </context>
1553 <context>
1554 <name>ScIDE::PostDocklet</name>
1555 <message>
1556 <location filename="../widgets/post_window.cpp" line="304"/>
1557 <source>Post window</source>
1558 <translation type="unfinished"></translation>
1559 </message>
1560 </context>
1561 <context>
1562 <name>ScIDE::PostWindow</name>
1563 <message>
1564 <location filename="../widgets/post_window.cpp" line="65"/>
1565 <source>Post Window</source>
1566 <translation type="unfinished"></translation>
1567 </message>
1568 <message>
1569 <location filename="../widgets/post_window.cpp" line="67"/>
1570 <source>Copy</source>
1571 <translation type="unfinished"></translation>
1572 </message>
1573 <message>
1574 <location filename="../widgets/post_window.cpp" line="75"/>
1575 <source>Clear</source>
1576 <translation type="unfinished"></translation>
1577 </message>
1578 <message>
1579 <location filename="../widgets/post_window.cpp" line="76"/>
1580 <source>Clear post window</source>
1581 <translation type="unfinished"></translation>
1582 </message>
1583 <message>
1584 <location filename="../widgets/post_window.cpp" line="78"/>
1585 <source>Ctrl+Shift+P</source>
1586 <comment>Clear post window</comment>
1587 <translation type="unfinished"></translation>
1588 </message>
1589 <message>
1590 <location filename="../widgets/post_window.cpp" line="87"/>
1591 <source>Enlarge Font</source>
1592 <translation type="unfinished"></translation>
1593 </message>
1594 <message>
1595 <location filename="../widgets/post_window.cpp" line="89"/>
1596 <source>Enlarge post window font</source>
1597 <translation type="unfinished"></translation>
1598 </message>
1599 <message>
1600 <location filename="../widgets/post_window.cpp" line="93"/>
1601 <source>Shrink Font</source>
1602 <translation type="unfinished"></translation>
1603 </message>
1604 <message>
1605 <location filename="../widgets/post_window.cpp" line="95"/>
1606 <source>Shrink post window font</source>
1607 <translation type="unfinished"></translation>
1608 </message>
1609 <message>
1610 <location filename="../widgets/post_window.cpp" line="103"/>
1611 <source>Wrap Text</source>
1612 <translation type="unfinished"></translation>
1613 </message>
1614 <message>
1615 <location filename="../widgets/post_window.cpp" line="104"/>
1616 <source>Wrap lines wider than the post window</source>
1617 <translation type="unfinished"></translation>
1618 </message>
1619 <message>
1620 <location filename="../widgets/post_window.cpp" line="110"/>
1621 <source>Auto Scroll</source>
1622 <translation type="unfinished"></translation>
1623 </message>
1624 <message>
1625 <location filename="../widgets/post_window.cpp" line="111"/>
1626 <source>Scroll to bottom on new posts</source>
1627 <translation type="unfinished"></translation>
1628 </message>
1629 </context>
1630 <context>
1631 <name>ScIDE::ReferencesDialog</name>
1632 <message>
1633 <location filename="../widgets/lookup_dialog.cpp" line="425"/>
1634 <source>Look Up References</source>
1635 <translation type="unfinished"></translation>
1636 </message>
1637 <message>
1638 <location filename="../widgets/lookup_dialog.cpp" line="427"/>
1639 <source>Enter class or method name...</source>
1640 <translation type="unfinished"></translation>
1641 </message>
1642 <message>
1643 <location filename="../widgets/lookup_dialog.cpp" line="463"/>
1644 <source>Introspection data not yet available</source>
1645 <translation type="unfinished"></translation>
1646 </message>
1647 </context>
1648 <context>
1649 <name>ScIDE::ScProcess</name>
1650 <message>
1651 <location filename="../core/sc_process.cpp" line="65"/>
1652 <source>Interpreter</source>
1653 <translation type="unfinished"></translation>
1654 </message>
1655 <message>
1656 <location filename="../core/sc_process.cpp" line="67"/>
1657 <location filename="../core/sc_process.cpp" line="71"/>
1658 <location filename="../core/sc_process.cpp" line="266"/>
1659 <source>Boot Interpreter</source>
1660 <translation type="unfinished"></translation>
1661 </message>
1662 <message>
1663 <location filename="../core/sc_process.cpp" line="75"/>
1664 <location filename="../core/sc_process.cpp" line="249"/>
1665 <source>Quit Interpreter</source>
1666 <translation type="unfinished"></translation>
1667 </message>
1668 <message>
1669 <location filename="../core/sc_process.cpp" line="80"/>
1670 <source>Reboot Interpreter</source>
1671 <translation type="unfinished"></translation>
1672 </message>
1673 <message>
1674 <location filename="../core/sc_process.cpp" line="85"/>
1675 <source>Recompile Class Library</source>
1676 <translation type="unfinished"></translation>
1677 </message>
1678 <message>
1679 <location filename="../core/sc_process.cpp" line="86"/>
1680 <source>Ctrl+Shift+l</source>
1681 <comment>Recompile Class Library)</comment>
1682 <translation type="unfinished"></translation>
1683 </message>
1684 <message>
1685 <location filename="../core/sc_process.cpp" line="91"/>
1686 <source>Stop</source>
1687 <translation type="unfinished"></translation>
1688 </message>
1689 <message>
1690 <location filename="../core/sc_process.cpp" line="92"/>
1691 <source>Ctrl+.</source>
1692 <comment>Stop (a.k.a. cmd-period)</comment>
1693 <translation type="unfinished"></translation>
1694 </message>
1695 <message>
1696 <location filename="../core/sc_process.cpp" line="114"/>
1697 <source>Interpreter is already running.</source>
1698 <translation type="unfinished"></translation>
1699 </message>
1700 <message>
1701 <location filename="../core/sc_process.cpp" line="147"/>
1702 <source>Failed to start interpreter!</source>
1703 <translation type="unfinished"></translation>
1704 </message>
1705 <message>
1706 <location filename="../core/sc_process.cpp" line="153"/>
1707 <location filename="../core/sc_process.cpp" line="164"/>
1708 <location filename="../core/sc_process.cpp" line="211"/>
1709 <source>Interpreter is not running!</source>
1710 <translation type="unfinished"></translation>
1711 </message>
1712 <message>
1713 <location filename="../core/sc_process.cpp" line="182"/>
1714 <source>Failed to stop interpreter!</source>
1715 <translation type="unfinished"></translation>
1716 </message>
1717 <message>
1718 <location filename="../core/sc_process.cpp" line="218"/>
1719 <source>Error when passing data to interpreter!</source>
1720 <translation type="unfinished"></translation>
1721 </message>
1722 </context>
1723 <context>
1724 <name>ScIDE::ScServer</name>
1725 <message>
1726 <location filename="../core/sc_server.cpp" line="58"/>
1727 <source>Sound Synthesis Server</source>
1728 <translation type="unfinished"></translation>
1729 </message>
1730 <message>
1731 <location filename="../core/sc_server.cpp" line="61"/>
1732 <source>Boot or quit server</source>
1733 <translation type="unfinished"></translation>
1734 </message>
1735 <message>
1736 <location filename="../core/sc_server.cpp" line="62"/>
1737 <source>Ctrl+B</source>
1738 <comment>Boot or quit default server</comment>
1739 <translation type="unfinished"></translation>
1740 </message>
1741 <message>
1742 <location filename="../core/sc_server.cpp" line="66"/>
1743 <source>Reboot server</source>
1744 <translation type="unfinished"></translation>
1745 </message>
1746 <message>
1747 <location filename="../core/sc_server.cpp" line="67"/>
1748 <source>Ctrl+Shift+B</source>
1749 <comment>Reboot default server</comment>
1750 <translation type="unfinished"></translation>
1751 </message>
1752 <message>
1753 <location filename="../core/sc_server.cpp" line="71"/>
1754 <source>Show server meter</source>
1755 <translation type="unfinished"></translation>
1756 </message>
1757 <message>
1758 <location filename="../core/sc_server.cpp" line="72"/>
1759 <source>Ctrl+M</source>
1760 <comment>Show server meter</comment>
1761 <translation type="unfinished"></translation>
1762 </message>
1763 <message>
1764 <location filename="../core/sc_server.cpp" line="76"/>
1765 <source>Dump node tree</source>
1766 <translation type="unfinished"></translation>
1767 </message>
1768 <message>
1769 <location filename="../core/sc_server.cpp" line="77"/>
1770 <source>Ctrl+T</source>
1771 <comment>Dump node tree</comment>
1772 <translation type="unfinished"></translation>
1773 </message>
1774 <message>
1775 <location filename="../core/sc_server.cpp" line="81"/>
1776 <source>Dump node tree with controls</source>
1777 <translation type="unfinished"></translation>
1778 </message>
1779 <message>
1780 <location filename="../core/sc_server.cpp" line="82"/>
1781 <source>Ctrl+Shift+T</source>
1782 <comment>Dump node tree with controls</comment>
1783 <translation type="unfinished"></translation>
1784 </message>
1785 <message>
1786 <location filename="../core/sc_server.cpp" line="234"/>
1787 <source>&amp;Quit Server</source>
1788 <translation type="unfinished"></translation>
1789 </message>
1790 <message>
1791 <location filename="../core/sc_server.cpp" line="235"/>
1792 <source>Quit sound synthesis server</source>
1793 <translation type="unfinished"></translation>
1794 </message>
1795 <message>
1796 <location filename="../core/sc_server.cpp" line="240"/>
1797 <source>&amp;Boot Server</source>
1798 <translation type="unfinished"></translation>
1799 </message>
1800 <message>
1801 <location filename="../core/sc_server.cpp" line="241"/>
1802 <source>Boot sound synthesis server</source>
1803 <translation type="unfinished"></translation>
1804 </message>
1805 </context>
1806 <context>
1807 <name>ScIDE::SessionSwitchDialog</name>
1808 <message>
1809 <location filename="../widgets/session_switch_dialog.cpp" line="35"/>
1810 <source>Switch Session</source>
1811 <translation type="unfinished"></translation>
1812 </message>
1813 </context>
1814 <context>
1815 <name>ScIDE::SessionsDialog</name>
1816 <message>
1817 <location filename="../widgets/sessions_dialog.hpp" line="50"/>
1818 <source>Delete</source>
1819 <translation type="unfinished"></translation>
1820 </message>
1821 <message>
1822 <location filename="../widgets/sessions_dialog.hpp" line="51"/>
1823 <source>Rename...</source>
1824 <translation type="unfinished"></translation>
1825 </message>
1826 <message>
1827 <location filename="../widgets/sessions_dialog.hpp" line="88"/>
1828 <source>Delete Session</source>
1829 <translation type="unfinished"></translation>
1830 </message>
1831 <message>
1832 <location filename="../widgets/sessions_dialog.hpp" line="89"/>
1833 <source>Are you sure you want to delete session &apos;%1&apos;?</source>
1834 <translation type="unfinished"></translation>
1835 </message>
1836 <message>
1837 <location filename="../widgets/sessions_dialog.hpp" line="108"/>
1838 <source>Rename Session</source>
1839 <translation type="unfinished"></translation>
1840 </message>
1841 <message>
1842 <location filename="../widgets/sessions_dialog.hpp" line="109"/>
1843 <source>Enter a new name for the session:</source>
1844 <translation type="unfinished"></translation>
1845 </message>
1846 </context>
1847 <context>
1848 <name>ScIDE::Settings::Dialog</name>
1849 <message>
1850 <location filename="../widgets/settings/dialog.cpp" line="53"/>
1851 <source>General</source>
1852 <translation type="unfinished"></translation>
1853 </message>
1854 <message>
1855 <location filename="../widgets/settings/dialog.cpp" line="60"/>
1856 <source>Interpreter</source>
1857 <translation type="unfinished"></translation>
1858 </message>
1859 <message>
1860 <location filename="../widgets/settings/dialog.cpp" line="67"/>
1861 <source>Editor</source>
1862 <translation type="unfinished"></translation>
1863 </message>
1864 <message>
1865 <location filename="../widgets/settings/dialog.cpp" line="74"/>
1866 <source>Shortcuts</source>
1867 <translation type="unfinished"></translation>
1868 </message>
1869 </context>
1870 <context>
1871 <name>ScIDE::Settings::EditorPage</name>
1872 <message>
1873 <location filename="../widgets/settings/editor_page.cpp" line="136"/>
1874 <source>General</source>
1875 <translation type="unfinished"></translation>
1876 </message>
1877 <message>
1878 <location filename="../widgets/settings/editor_page.cpp" line="140"/>
1879 <source>Text</source>
1880 <translation type="unfinished"></translation>
1881 </message>
1882 <message>
1883 <location filename="../widgets/settings/editor_page.cpp" line="151"/>
1884 <source>Line Numbers</source>
1885 <translation type="unfinished"></translation>
1886 </message>
1887 <message>
1888 <location filename="../widgets/settings/editor_page.cpp" line="159"/>
1889 <source>Selected Text</source>
1890 <translation type="unfinished"></translation>
1891 </message>
1892 <message>
1893 <location filename="../widgets/settings/editor_page.cpp" line="168"/>
1894 <source>Search Result</source>
1895 <translation type="unfinished"></translation>
1896 </message>
1897 <message>
1898 <location filename="../widgets/settings/editor_page.cpp" line="168"/>
1899 <source>Matching Brackets</source>
1900 <translation type="unfinished"></translation>
1901 </message>
1902 <message>
1903 <location filename="../widgets/settings/editor_page.cpp" line="169"/>
1904 <source>Mismatched Brackets</source>
1905 <translation type="unfinished"></translation>
1906 </message>
1907 <message>
1908 <location filename="../widgets/settings/editor_page.cpp" line="169"/>
1909 <source>Evaluated Code</source>
1910 <translation type="unfinished"></translation>
1911 </message>
1912 <message>
1913 <location filename="../widgets/settings/editor_page.cpp" line="182"/>
1914 <source>Syntax Highlighting</source>
1915 <translation type="unfinished"></translation>
1916 </message>
1917 <message>
1918 <location filename="../widgets/settings/editor_page.cpp" line="190"/>
1919 <source>Keyword</source>
1920 <translation type="unfinished"></translation>
1921 </message>
1922 <message>
1923 <location filename="../widgets/settings/editor_page.cpp" line="190"/>
1924 <source>Built-in Value</source>
1925 <translation type="unfinished"></translation>
1926 </message>
1927 <message>
1928 <location filename="../widgets/settings/editor_page.cpp" line="190"/>
1929 <source>Environment Variable</source>
1930 <translation type="unfinished"></translation>
1931 </message>
1932 <message>
1933 <location filename="../widgets/settings/editor_page.cpp" line="191"/>
1934 <source>Class</source>
1935 <translation type="unfinished"></translation>
1936 </message>
1937 <message>
1938 <location filename="../widgets/settings/editor_page.cpp" line="191"/>
1939 <source>Number</source>
1940 <translation type="unfinished"></translation>
1941 </message>
1942 <message>
1943 <location filename="../widgets/settings/editor_page.cpp" line="191"/>
1944 <source>Symbol</source>
1945 <translation type="unfinished"></translation>
1946 </message>
1947 <message>
1948 <location filename="../widgets/settings/editor_page.cpp" line="191"/>
1949 <source>String</source>
1950 <translation type="unfinished"></translation>
1951 </message>
1952 <message>
1953 <location filename="../widgets/settings/editor_page.cpp" line="191"/>
1954 <source>Char</source>
1955 <translation type="unfinished"></translation>
1956 </message>
1957 <message>
1958 <location filename="../widgets/settings/editor_page.cpp" line="192"/>
1959 <source>Comment</source>
1960 <translation type="unfinished"></translation>
1961 </message>
1962 <message>
1963 <location filename="../widgets/settings/editor_page.cpp" line="192"/>
1964 <source>Primitive</source>
1965 <translation type="unfinished"></translation>
1966 </message>
1967 </context>
1968 <context>
1969 <name>ScIDE::Settings::SclangPage</name>
1970 <message>
1971 <location filename="../widgets/settings/sclang_page.cpp" line="86"/>
1972 <source>ScLang include directories</source>
1973 <translation type="unfinished"></translation>
1974 </message>
1975 <message>
1976 <location filename="../widgets/settings/sclang_page.cpp" line="103"/>
1977 <source>ScLang exclude directories</source>
1978 <translation type="unfinished"></translation>
1979 </message>
1980 <message>
1981 <location filename="../widgets/settings/sclang_page.cpp" line="211"/>
1982 <source>ScLang configuration file updated</source>
1983 <translation type="unfinished"></translation>
1984 </message>
1985 <message>
1986 <location filename="../widgets/settings/sclang_page.cpp" line="212"/>
1987 <source>The ScLang configuration has been updated. Recompile the class library to apply changes.</source>
1988 <translation type="unfinished"></translation>
1989 </message>
1990 </context>
1991 <context>
1992 <name>ScIDE::Settings::ShortcutsPage</name>
1993 <message>
1994 <location filename="../widgets/settings/shortcuts_page.cpp" line="226"/>
1995 <source>Shortcut &apos;%1&apos; has already been assigned to &apos;%2&apos;.
1996
1997 Would you like to override it?</source>
1998 <translation type="unfinished"></translation>
1999 </message>
2000 <message>
2001 <location filename="../widgets/settings/shortcuts_page.cpp" line="233"/>
2002 <source>Duplicate Shortcut</source>
2003 <translation type="unfinished"></translation>
2004 </message>
2005 </context>
2006 <context>
2007 <name>ScIDE::TextFindReplacePanel</name>
2008 <message>
2009 <location filename="../widgets/find_replace_tool.cpp" line="46"/>
2010 <location filename="../widgets/find_replace_tool.cpp" line="126"/>
2011 <source>Find Next</source>
2012 <translation type="unfinished"></translation>
2013 </message>
2014 <message>
2015 <location filename="../widgets/find_replace_tool.cpp" line="50"/>
2016 <location filename="../widgets/find_replace_tool.cpp" line="131"/>
2017 <source>Find Previous</source>
2018 <translation type="unfinished"></translation>
2019 </message>
2020 <message>
2021 <location filename="../widgets/find_replace_tool.cpp" line="53"/>
2022 <source>Replace</source>
2023 <translation type="unfinished"></translation>
2024 </message>
2025 <message>
2026 <location filename="../widgets/find_replace_tool.cpp" line="55"/>
2027 <source>Replace All</source>
2028 <translation type="unfinished"></translation>
2029 </message>
2030 <message>
2031 <location filename="../widgets/find_replace_tool.cpp" line="58"/>
2032 <source>Options</source>
2033 <translation type="unfinished"></translation>
2034 </message>
2035 <message>
2036 <location filename="../widgets/find_replace_tool.cpp" line="63"/>
2037 <source>Match Case</source>
2038 <translation type="unfinished"></translation>
2039 </message>
2040 <message>
2041 <location filename="../widgets/find_replace_tool.cpp" line="65"/>
2042 <source>Regular Expression</source>
2043 <translation type="unfinished"></translation>
2044 </message>
2045 <message>
2046 <location filename="../widgets/find_replace_tool.cpp" line="67"/>
2047 <source>Whole Words</source>
2048 <translation type="unfinished"></translation>
2049 </message>
2050 <message>
2051 <location filename="../widgets/find_replace_tool.cpp" line="71"/>
2052 <source>Find:</source>
2053 <translation type="unfinished"></translation>
2054 </message>
2055 <message>
2056 <location filename="../widgets/find_replace_tool.cpp" line="73"/>
2057 <source>Replace:</source>
2058 <translation type="unfinished"></translation>
2059 </message>
2060 <message>
2061 <location filename="../widgets/find_replace_tool.cpp" line="127"/>
2062 <source>Ctrl+G</source>
2063 <comment>Find Next</comment>
2064 <translation type="unfinished"></translation>
2065 </message>
2066 <message>
2067 <location filename="../widgets/find_replace_tool.cpp" line="129"/>
2068 <location filename="../widgets/find_replace_tool.cpp" line="134"/>
2069 <source>Text Editor</source>
2070 <translation type="unfinished"></translation>
2071 </message>
2072 <message>
2073 <location filename="../widgets/find_replace_tool.cpp" line="132"/>
2074 <source>Ctrl+Shift+G</source>
2075 <comment>Find Previous</comment>
2076 <translation type="unfinished"></translation>
2077 </message>
2078 <message numerus="yes">
2079 <location filename="../widgets/find_replace_tool.cpp" line="299"/>
2080 <source>%n occurrencies found.</source>
2081 <comment>Find text in document...</comment>
2082 <translation type="unfinished">
2083 <numerusform></numerusform>
2084 <numerusform></numerusform>
2085 </translation>
2086 </message>
2087 <message numerus="yes">
2088 <location filename="../widgets/find_replace_tool.cpp" line="305"/>
2089 <source>%n occurrencies replaced.</source>
2090 <comment>Find/replace text in document...</comment>
2091 <translation type="unfinished">
2092 <numerusform></numerusform>
2093 <numerusform></numerusform>
2094 </translation>
2095 </message>
2096 </context>
2097 <context>
2098 <name>ScIDE::TextFormatListWidget</name>
2099 <message>
2100 <location filename="../widgets/util/text_format_list_widget.cpp" line="86"/>
2101 <source>Role</source>
2102 <translation type="unfinished"></translation>
2103 </message>
2104 <message>
2105 <location filename="../widgets/util/text_format_list_widget.cpp" line="86"/>
2106 <source>Color</source>
2107 <translation type="unfinished"></translation>
2108 </message>
2109 <message>
2110 <location filename="../widgets/util/text_format_list_widget.cpp" line="86"/>
2111 <source>Background</source>
2112 <translation type="unfinished"></translation>
2113 </message>
2114 </context>
2115 <context>
2116 <name>SclangConfigPage</name>
2117 <message>
2118 <location filename="../forms/settings_sclang.ui" line="14"/>
2119 <source>Form</source>
2120 <translation type="unfinished"></translation>
2121 </message>
2122 <message>
2123 <location filename="../forms/settings_sclang.ui" line="26"/>
2124 <source>Start Interpreter With IDE</source>
2125 <translation type="unfinished"></translation>
2126 </message>
2127 <message>
2128 <location filename="../forms/settings_sclang.ui" line="33"/>
2129 <source>Runtime Directory:</source>
2130 <translation type="unfinished"></translation>
2131 </message>
2132 <message>
2133 <location filename="../forms/settings_sclang.ui" line="55"/>
2134 <source>Interpreter Options</source>
2135 <translation type="unfinished"></translation>
2136 </message>
2137 <message>
2138 <location filename="../forms/settings_sclang.ui" line="73"/>
2139 <source>Include:</source>
2140 <translation type="unfinished"></translation>
2141 </message>
2142 <message>
2143 <location filename="../forms/settings_sclang.ui" line="100"/>
2144 <location filename="../forms/settings_sclang.ui" line="146"/>
2145 <source>+</source>
2146 <translation type="unfinished"></translation>
2147 </message>
2148 <message>
2149 <location filename="../forms/settings_sclang.ui" line="110"/>
2150 <location filename="../forms/settings_sclang.ui" line="156"/>
2151 <source>-</source>
2152 <translation type="unfinished"></translation>
2153 </message>
2154 <message>
2155 <location filename="../forms/settings_sclang.ui" line="122"/>
2156 <source>Exclude:</source>
2157 <translation type="unfinished"></translation>
2158 </message>
2159 <message>
2160 <location filename="../forms/settings_sclang.ui" line="168"/>
2161 <source>Post Inline Warnings</source>
2162 <translation type="unfinished"></translation>
2163 </message>
2164 </context>
2165 <context>
2166 <name>ShortcutConfigPage</name>
2167 <message>
2168 <location filename="../forms/settings_shortcuts.ui" line="14"/>
2169 <source>Form</source>
2170 <translation type="unfinished"></translation>
2171 </message>
2172 <message>
2173 <location filename="../forms/settings_shortcuts.ui" line="22"/>
2174 <source>Filter:</source>
2175 <translation type="unfinished"></translation>
2176 </message>
2177 <message>
2178 <location filename="../forms/settings_shortcuts.ui" line="35"/>
2179 <source>Action</source>
2180 <translation type="unfinished"></translation>
2181 </message>
2182 <message>
2183 <location filename="../forms/settings_shortcuts.ui" line="40"/>
2184 <source>Shortcut</source>
2185 <translation type="unfinished"></translation>
2186 </message>
2187 <message>
2188 <location filename="../forms/settings_shortcuts.ui" line="45"/>
2189 <source>Description</source>
2190 <translation type="unfinished"></translation>
2191 </message>
2192 <message>
2193 <location filename="../forms/settings_shortcuts.ui" line="58"/>
2194 <source>Default:</source>
2195 <translation type="unfinished"></translation>
2196 </message>
2197 <message>
2198 <location filename="../forms/settings_shortcuts.ui" line="68"/>
2199 <source>Custom:</source>
2200 <translation type="unfinished"></translation>
2201 </message>
2202 <message>
2203 <location filename="../forms/settings_shortcuts.ui" line="84"/>
2204 <source>Clear</source>
2205 <translation type="unfinished"></translation>
2206 </message>
2207 </context>
2208 </TS>
250250 <translation type="unfinished"></translation>
251251 </message>
252252 <message>
253 <location filename="../core/doc_manager.cpp" line="290"/>
254 <location filename="../core/doc_manager.cpp" line="297"/>
253 <location filename="../core/doc_manager.cpp" line="298"/>
254 <location filename="../core/doc_manager.cpp" line="305"/>
255255 <source>File Extension Changed</source>
256256 <translation type="unfinished"></translation>
257257 </message>
258258 <message>
259 <location filename="../core/doc_manager.cpp" line="291"/>
260 <location filename="../core/doc_manager.cpp" line="298"/>
259 <location filename="../core/doc_manager.cpp" line="299"/>
260 <location filename="../core/doc_manager.cpp" line="306"/>
261261 <source>The extension of the file has changed. Please reopen file to update editor mode</source>
262262 <translation type="unfinished"></translation>
263263 </message>
417417 <context>
418418 <name>ScIDE::HelpBrowserDocklet</name>
419419 <message>
420 <location filename="../widgets/help_browser.cpp" line="378"/>
420 <location filename="../widgets/help_browser.cpp" line="399"/>
421421 <source>Help browser</source>
422422 <translation type="unfinished"></translation>
423423 </message>
425425 <context>
426426 <name>ScIDE::HelpBrowserFindBox</name>
427427 <message>
428 <location filename="../widgets/help_browser.cpp" line="339"/>
428 <location filename="../widgets/help_browser.cpp" line="360"/>
429429 <source>Find...</source>
430430 <translation type="unfinished"></translation>
431431 </message>
441441 <context>
442442 <name>ScIDE::LookupDialog</name>
443443 <message>
444 <location filename="../widgets/lookup_dialog.cpp" line="186"/>
444 <location filename="../widgets/lookup_dialog.cpp" line="180"/>
445445 <source>Look Up Implementations</source>
446446 <translation type="unfinished"></translation>
447447 </message>
448448 <message>
449 <location filename="../widgets/lookup_dialog.cpp" line="188"/>
449 <location filename="../widgets/lookup_dialog.cpp" line="182"/>
450450 <source>Enter class or method name...</source>
451451 <translation type="unfinished"></translation>
452452 </message>
453453 <message>
454 <location filename="../widgets/lookup_dialog.cpp" line="203"/>
454 <location filename="../widgets/lookup_dialog.cpp" line="197"/>
455455 <source>Introspection data not yet available</source>
456456 <translation type="unfinished"></translation>
457457 </message>
458458 <message>
459 <location filename="../widgets/lookup_dialog.cpp" line="365"/>
459 <location filename="../widgets/lookup_dialog.cpp" line="359"/>
460460 <source>No result for query</source>
461461 <translation type="unfinished"></translation>
462462 </message>
464464 <context>
465465 <name>ScIDE::MainWindow</name>
466466 <message>
467 <location filename="../widgets/main_window.cpp" line="78"/>
468 <location filename="../widgets/main_window.cpp" line="822"/>
467 <location filename="../widgets/main_window.cpp" line="94"/>
468 <location filename="../widgets/main_window.cpp" line="855"/>
469469 <source>Inactive</source>
470470 <translation type="unfinished"></translation>
471471 </message>
472472 <message>
473 <location filename="../widgets/main_window.cpp" line="83"/>
473 <location filename="../widgets/main_window.cpp" line="99"/>
474474 <source>Interpreter:</source>
475475 <translation type="unfinished"></translation>
476476 </message>
477477 <message>
478 <location filename="../widgets/main_window.cpp" line="85"/>
478 <location filename="../widgets/main_window.cpp" line="101"/>
479479 <source>Server:</source>
480480 <translation type="unfinished"></translation>
481481 </message>
482482 <message>
483 <location filename="../widgets/main_window.cpp" line="93"/>
483 <location filename="../widgets/main_window.cpp" line="109"/>
484484 <source>Command Line:</source>
485485 <translation type="unfinished"></translation>
486486 </message>
487487 <message>
488 <location filename="../widgets/main_window.cpp" line="219"/>
488 <location filename="../widgets/main_window.cpp" line="235"/>
489489 <source>Text Editor</source>
490490 <translation type="unfinished"></translation>
491491 </message>
492492 <message>
493 <location filename="../widgets/main_window.cpp" line="220"/>
493 <location filename="../widgets/main_window.cpp" line="236"/>
494494 <source>Help</source>
495495 <translation type="unfinished"></translation>
496496 </message>
497497 <message>
498 <location filename="../widgets/main_window.cpp" line="224"/>
498 <location filename="../widgets/main_window.cpp" line="240"/>
499499 <source>&amp;Quit...</source>
500500 <translation type="unfinished"></translation>
501501 </message>
502502 <message>
503 <location filename="../widgets/main_window.cpp" line="225"/>
503 <location filename="../widgets/main_window.cpp" line="241"/>
504504 <source>Ctrl+Q</source>
505505 <comment>Quit application</comment>
506506 <translation type="unfinished"></translation>
507507 </message>
508508 <message>
509 <location filename="../widgets/main_window.cpp" line="226"/>
509 <location filename="../widgets/main_window.cpp" line="242"/>
510510 <source>Quit SuperCollider IDE</source>
511511 <translation type="unfinished"></translation>
512512 </message>
513513 <message>
514 <location filename="../widgets/main_window.cpp" line="231"/>
514 <location filename="../widgets/main_window.cpp" line="247"/>
515515 <source>&amp;New</source>
516516 <translation type="unfinished"></translation>
517517 </message>
518518 <message>
519 <location filename="../widgets/main_window.cpp" line="232"/>
519 <location filename="../widgets/main_window.cpp" line="248"/>
520520 <source>Ctrl+N</source>
521521 <comment>New document</comment>
522522 <translation type="unfinished"></translation>
523523 </message>
524524 <message>
525 <location filename="../widgets/main_window.cpp" line="233"/>
525 <location filename="../widgets/main_window.cpp" line="249"/>
526526 <source>Create a new document</source>
527527 <translation type="unfinished"></translation>
528528 </message>
529529 <message>
530 <location filename="../widgets/main_window.cpp" line="238"/>
530 <location filename="../widgets/main_window.cpp" line="254"/>
531531 <source>&amp;Open...</source>
532532 <translation type="unfinished"></translation>
533533 </message>
534534 <message>
535 <location filename="../widgets/main_window.cpp" line="239"/>
535 <location filename="../widgets/main_window.cpp" line="255"/>
536536 <source>Ctrl+O</source>
537537 <comment>Open document</comment>
538538 <translation type="unfinished"></translation>
539539 </message>
540540 <message>
541 <location filename="../widgets/main_window.cpp" line="240"/>
541 <location filename="../widgets/main_window.cpp" line="256"/>
542542 <source>Open an existing file</source>
543543 <translation type="unfinished"></translation>
544544 </message>
545545 <message>
546 <location filename="../widgets/main_window.cpp" line="245"/>
547 <location filename="../widgets/main_window.cpp" line="246"/>
546 <location filename="../widgets/main_window.cpp" line="261"/>
547 <location filename="../widgets/main_window.cpp" line="262"/>
548548 <source>Open startup file</source>
549549 <translation type="unfinished"></translation>
550550 </message>
551551 <message>
552 <location filename="../widgets/main_window.cpp" line="251"/>
552 <location filename="../widgets/main_window.cpp" line="267"/>
553553 <source>&amp;Save</source>
554554 <translation type="unfinished"></translation>
555555 </message>
556556 <message>
557 <location filename="../widgets/main_window.cpp" line="252"/>
557 <location filename="../widgets/main_window.cpp" line="268"/>
558558 <source>Ctrl+S</source>
559559 <comment>Save document</comment>
560560 <translation type="unfinished"></translation>
561561 </message>
562562 <message>
563 <location filename="../widgets/main_window.cpp" line="253"/>
563 <location filename="../widgets/main_window.cpp" line="269"/>
564564 <source>Save the current document</source>
565565 <translation type="unfinished"></translation>
566566 </message>
567567 <message>
568 <location filename="../widgets/main_window.cpp" line="258"/>
568 <location filename="../widgets/main_window.cpp" line="274"/>
569569 <source>Save &amp;As...</source>
570570 <translation type="unfinished"></translation>
571571 </message>
572572 <message>
573 <location filename="../widgets/main_window.cpp" line="259"/>
573 <location filename="../widgets/main_window.cpp" line="275"/>
574574 <source>Ctrl+Shift+S</source>
575575 <comment>Save &amp;As...</comment>
576576 <translation type="unfinished"></translation>
577577 </message>
578578 <message>
579 <location filename="../widgets/main_window.cpp" line="260"/>
579 <location filename="../widgets/main_window.cpp" line="276"/>
580580 <source>Save the current document into a different file</source>
581581 <translation type="unfinished"></translation>
582582 </message>
583583 <message>
584 <location filename="../widgets/main_window.cpp" line="265"/>
584 <location filename="../widgets/main_window.cpp" line="281"/>
585585 <source>Save All...</source>
586586 <translation type="unfinished"></translation>
587587 </message>
588588 <message>
589 <location filename="../widgets/main_window.cpp" line="266"/>
589 <location filename="../widgets/main_window.cpp" line="282"/>
590590 <source>Ctrl+Alt+S</source>
591591 <comment>Save all documents</comment>
592592 <translation type="unfinished"></translation>
593593 </message>
594594 <message>
595 <location filename="../widgets/main_window.cpp" line="267"/>
595 <location filename="../widgets/main_window.cpp" line="283"/>
596596 <source>Save all open documents</source>
597597 <translation type="unfinished"></translation>
598598 </message>
599599 <message>
600 <location filename="../widgets/main_window.cpp" line="272"/>
600 <location filename="../widgets/main_window.cpp" line="288"/>
601601 <source>&amp;Close</source>
602602 <translation type="unfinished"></translation>
603603 </message>
604604 <message>
605 <location filename="../widgets/main_window.cpp" line="273"/>
605 <location filename="../widgets/main_window.cpp" line="289"/>
606606 <source>Ctrl+W</source>
607607 <comment>Close document</comment>
608608 <translation type="unfinished"></translation>
609609 </message>
610610 <message>
611 <location filename="../widgets/main_window.cpp" line="274"/>
611 <location filename="../widgets/main_window.cpp" line="290"/>
612612 <source>Close the current document</source>
613613 <translation type="unfinished"></translation>
614614 </message>
615615 <message>
616 <location filename="../widgets/main_window.cpp" line="279"/>
616 <location filename="../widgets/main_window.cpp" line="295"/>
617617 <source>Close All...</source>
618618 <translation type="unfinished"></translation>
619619 </message>
620620 <message>
621 <location filename="../widgets/main_window.cpp" line="280"/>
621 <location filename="../widgets/main_window.cpp" line="296"/>
622622 <source>Ctrl+Shift+W</source>
623623 <comment>Close all documents</comment>
624624 <translation type="unfinished"></translation>
625625 </message>
626626 <message>
627 <location filename="../widgets/main_window.cpp" line="281"/>
627 <location filename="../widgets/main_window.cpp" line="297"/>
628628 <source>Close all documents</source>
629629 <translation type="unfinished"></translation>
630630 </message>
631631 <message>
632 <location filename="../widgets/main_window.cpp" line="286"/>
632 <location filename="../widgets/main_window.cpp" line="302"/>
633633 <source>&amp;Reload</source>
634634 <translation type="unfinished"></translation>
635635 </message>
636636 <message>
637 <location filename="../widgets/main_window.cpp" line="287"/>
637 <location filename="../widgets/main_window.cpp" line="303"/>
638638 <source>F5</source>
639639 <comment>Reload document</comment>
640640 <translation type="unfinished"></translation>
641641 </message>
642642 <message>
643 <location filename="../widgets/main_window.cpp" line="288"/>
643 <location filename="../widgets/main_window.cpp" line="304"/>
644644 <source>Reload the current document</source>
645645 <translation type="unfinished"></translation>
646646 </message>
647647 <message>
648 <location filename="../widgets/main_window.cpp" line="292"/>
648 <location filename="../widgets/main_window.cpp" line="308"/>
649649 <source>Clear</source>
650650 <comment>Clear recent documents</comment>
651651 <translation type="unfinished"></translation>
652652 </message>
653653 <message>
654 <location filename="../widgets/main_window.cpp" line="293"/>
654 <location filename="../widgets/main_window.cpp" line="309"/>
655655 <source>Clear list of recent documents</source>
656656 <translation type="unfinished"></translation>
657657 </message>
658658 <message>
659 <location filename="../widgets/main_window.cpp" line="300"/>
659 <location filename="../widgets/main_window.cpp" line="316"/>
660660 <source>&amp;New Session</source>
661661 <translation type="unfinished"></translation>
662662 </message>
663663 <message>
664 <location filename="../widgets/main_window.cpp" line="301"/>
664 <location filename="../widgets/main_window.cpp" line="317"/>
665665 <source>Open a new session</source>
666666 <translation type="unfinished"></translation>
667667 </message>
668668 <message>
669 <location filename="../widgets/main_window.cpp" line="306"/>
669 <location filename="../widgets/main_window.cpp" line="322"/>
670670 <source>Save Session &amp;As...</source>
671671 <translation type="unfinished"></translation>
672672 </message>
673673 <message>
674 <location filename="../widgets/main_window.cpp" line="307"/>
674 <location filename="../widgets/main_window.cpp" line="323"/>
675675 <source>Save the current session with a different name</source>
676676 <translation type="unfinished"></translation>
677677 </message>
678678 <message>
679 <location filename="../widgets/main_window.cpp" line="312"/>
679 <location filename="../widgets/main_window.cpp" line="328"/>
680680 <source>&amp;Manage Sessions...</source>
681681 <translation type="unfinished"></translation>
682682 </message>
683683 <message>
684 <location filename="../widgets/main_window.cpp" line="317"/>
684 <location filename="../widgets/main_window.cpp" line="333"/>
685685 <source>&amp;Switch Session...</source>
686686 <translation type="unfinished"></translation>
687687 </message>
688688 <message>
689 <location filename="../widgets/main_window.cpp" line="319"/>
689 <location filename="../widgets/main_window.cpp" line="335"/>
690690 <source>Ctrl+Shift+Q</source>
691691 <comment>Switch Session</comment>
692692 <translation type="unfinished"></translation>
693693 </message>
694694 <message>
695 <location filename="../widgets/main_window.cpp" line="324"/>
695 <location filename="../widgets/main_window.cpp" line="340"/>
696696 <source>&amp;Find...</source>
697697 <translation type="unfinished"></translation>
698698 </message>
699699 <message>
700 <location filename="../widgets/main_window.cpp" line="325"/>
700 <location filename="../widgets/main_window.cpp" line="341"/>
701701 <source>Ctrl+F</source>
702702 <comment>Find</comment>
703703 <translation type="unfinished"></translation>
704704 </message>
705705 <message>
706 <location filename="../widgets/main_window.cpp" line="326"/>
706 <location filename="../widgets/main_window.cpp" line="342"/>
707707 <source>Find text in document</source>
708708 <translation type="unfinished"></translation>
709709 </message>
710710 <message>
711 <location filename="../widgets/main_window.cpp" line="331"/>
711 <location filename="../widgets/main_window.cpp" line="347"/>
712712 <source>&amp;Replace...</source>
713713 <translation type="unfinished"></translation>
714714 </message>
715715 <message>
716 <location filename="../widgets/main_window.cpp" line="332"/>
716 <location filename="../widgets/main_window.cpp" line="348"/>
717717 <source>Ctrl+R</source>
718718 <comment>Replace</comment>
719719 <translation type="unfinished"></translation>
720720 </message>
721721 <message>
722 <location filename="../widgets/main_window.cpp" line="333"/>
722 <location filename="../widgets/main_window.cpp" line="349"/>
723723 <source>Find and replace text in document</source>
724724 <translation type="unfinished"></translation>
725725 </message>
726726 <message>
727 <location filename="../widgets/main_window.cpp" line="338"/>
727 <location filename="../widgets/main_window.cpp" line="354"/>
728728 <source>&amp;Command Line</source>
729729 <translation type="unfinished"></translation>
730730 </message>
731731 <message>
732 <location filename="../widgets/main_window.cpp" line="339"/>
732 <location filename="../widgets/main_window.cpp" line="355"/>
733733 <source>Command line for quick code evaluation</source>
734734 <translation type="unfinished"></translation>
735735 </message>
736736 <message>
737 <location filename="../widgets/main_window.cpp" line="340"/>
737 <location filename="../widgets/main_window.cpp" line="356"/>
738738 <source>Ctrl+E</source>
739739 <comment>Show command line</comment>
740740 <translation type="unfinished"></translation>
741741 </message>
742742 <message>
743 <location filename="../widgets/main_window.cpp" line="344"/>
743 <location filename="../widgets/main_window.cpp" line="360"/>
744744 <source>&amp;Go To Line</source>
745745 <translation type="unfinished"></translation>
746746 </message>
747747 <message>
748 <location filename="../widgets/main_window.cpp" line="345"/>
748 <location filename="../widgets/main_window.cpp" line="361"/>
749749 <source>Tool to jump to a line by number</source>
750750 <translation type="unfinished"></translation>
751751 </message>
752752 <message>
753 <location filename="../widgets/main_window.cpp" line="346"/>
753 <location filename="../widgets/main_window.cpp" line="362"/>
754754 <source>Ctrl+L</source>
755755 <comment>Show go-to-line tool</comment>
756756 <translation type="unfinished"></translation>
757757 </message>
758758 <message>
759 <location filename="../widgets/main_window.cpp" line="351"/>
759 <location filename="../widgets/main_window.cpp" line="367"/>
760760 <source>&amp;Close Tool Panel</source>
761761 <translation type="unfinished"></translation>
762762 </message>
763763 <message>
764 <location filename="../widgets/main_window.cpp" line="352"/>
764 <location filename="../widgets/main_window.cpp" line="368"/>
765765 <source>Close any open tool panel</source>
766766 <translation type="unfinished"></translation>
767767 </message>
768768 <message>
769 <location filename="../widgets/main_window.cpp" line="353"/>
769 <location filename="../widgets/main_window.cpp" line="369"/>
770770 <source>Esc</source>
771771 <comment>Close tool box</comment>
772772 <translation type="unfinished"></translation>
773773 </message>
774774 <message>
775 <location filename="../widgets/main_window.cpp" line="357"/>
775 <location filename="../widgets/main_window.cpp" line="373"/>
776776 <source>&amp;Full Screen</source>
777777 <translation type="unfinished"></translation>
778778 </message>
779779 <message>
780 <location filename="../widgets/main_window.cpp" line="359"/>
780 <location filename="../widgets/main_window.cpp" line="375"/>
781781 <source>Ctrl+Shift+F</source>
782782 <comment>Show ScIDE in Full Screen</comment>
783783 <translation type="unfinished"></translation>
784784 </message>
785785 <message>
786 <location filename="../widgets/main_window.cpp" line="363"/>
786 <location filename="../widgets/main_window.cpp" line="379"/>
787787 <source>Focus Post Window</source>
788788 <translation type="unfinished"></translation>
789789 </message>
790790 <message>
791 <location filename="../widgets/main_window.cpp" line="364"/>
791 <location filename="../widgets/main_window.cpp" line="380"/>
792792 <source>Focus post window</source>
793793 <translation type="unfinished"></translation>
794794 </message>
795795 <message>
796 <location filename="../widgets/main_window.cpp" line="365"/>
796 <location filename="../widgets/main_window.cpp" line="381"/>
797797 <source>Ctrl+P</source>
798798 <comment>Focus post window</comment>
799799 <translation type="unfinished"></translation>
800800 </message>
801801 <message>
802 <location filename="../widgets/main_window.cpp" line="371"/>
802 <location filename="../widgets/main_window.cpp" line="387"/>
803803 <source>Look Up Implementations...</source>
804804 <translation type="unfinished"></translation>
805805 </message>
806806 <message>
807 <location filename="../widgets/main_window.cpp" line="372"/>
807 <location filename="../widgets/main_window.cpp" line="388"/>
808808 <source>Ctrl+Shift+I</source>
809809 <comment>Look Up Implementations</comment>
810810 <translation type="unfinished"></translation>
811811 </message>
812812 <message>
813 <location filename="../widgets/main_window.cpp" line="373"/>
813 <location filename="../widgets/main_window.cpp" line="389"/>
814814 <source>Open dialog to look up implementations of a class or a method</source>
815815 <translation type="unfinished"></translation>
816816 </message>
817817 <message>
818 <location filename="../widgets/main_window.cpp" line="377"/>
818 <location filename="../widgets/main_window.cpp" line="393"/>
819819 <source>Look Up Implementations for Cursor</source>
820820 <translation type="unfinished"></translation>
821821 </message>
822822 <message>
823 <location filename="../widgets/main_window.cpp" line="378"/>
823 <location filename="../widgets/main_window.cpp" line="394"/>
824824 <source>Ctrl+I</source>
825825 <comment>Look Up Implementations for Cursor</comment>
826826 <translation type="unfinished"></translation>
827827 </message>
828828 <message>
829 <location filename="../widgets/main_window.cpp" line="379"/>
829 <location filename="../widgets/main_window.cpp" line="395"/>
830830 <source>Look up implementations of class or method under cursor</source>
831831 <translation type="unfinished"></translation>
832832 </message>
833833 <message>
834 <location filename="../widgets/main_window.cpp" line="384"/>
834 <location filename="../widgets/main_window.cpp" line="400"/>
835835 <source>Look Up References...</source>
836836 <translation type="unfinished"></translation>
837837 </message>
838838 <message>
839 <location filename="../widgets/main_window.cpp" line="385"/>
839 <location filename="../widgets/main_window.cpp" line="401"/>
840840 <source>Ctrl+Shift+U</source>
841841 <comment>Look Up References</comment>
842842 <translation type="unfinished"></translation>
843843 </message>
844844 <message>
845 <location filename="../widgets/main_window.cpp" line="386"/>
845 <location filename="../widgets/main_window.cpp" line="402"/>
846846 <source>Open dialog to look up references to a class or a method</source>
847847 <translation type="unfinished"></translation>
848848 </message>
849849 <message>
850 <location filename="../widgets/main_window.cpp" line="390"/>
850 <location filename="../widgets/main_window.cpp" line="406"/>
851851 <source>Look Up References for Cursor</source>
852852 <translation type="unfinished"></translation>
853853 </message>
854854 <message>
855 <location filename="../widgets/main_window.cpp" line="391"/>
855 <location filename="../widgets/main_window.cpp" line="407"/>
856856 <source>Ctrl+U</source>
857857 <comment>Look Up References For Selection</comment>
858858 <translation type="unfinished"></translation>
859859 </message>
860860 <message>
861 <location filename="../widgets/main_window.cpp" line="392"/>
861 <location filename="../widgets/main_window.cpp" line="408"/>
862862 <source>Look up references to class or method under cursor</source>
863863 <translation type="unfinished"></translation>
864864 </message>
865865 <message>
866 <location filename="../widgets/main_window.cpp" line="397"/>
866 <location filename="../widgets/main_window.cpp" line="413"/>
867867 <source>&amp;Preferences</source>
868868 <translation type="unfinished"></translation>
869869 </message>
870870 <message>
871 <location filename="../widgets/main_window.cpp" line="399"/>
871 <location filename="../widgets/main_window.cpp" line="415"/>
872872 <source>Ctrl+,</source>
873873 <comment>Show configuration dialog</comment>
874874 <translation type="unfinished"></translation>
875875 </message>
876876 <message>
877 <location filename="../widgets/main_window.cpp" line="401"/>
877 <location filename="../widgets/main_window.cpp" line="417"/>
878878 <source>Show configuration dialog</source>
879879 <translation type="unfinished"></translation>
880880 </message>
881881 <message>
882 <location filename="../widgets/main_window.cpp" line="407"/>
882 <location filename="../widgets/main_window.cpp" line="423"/>
883883 <source>Open &amp;Help Browser</source>
884884 <translation type="unfinished"></translation>
885885 </message>
886886 <message>
887 <location filename="../widgets/main_window.cpp" line="408"/>
887 <location filename="../widgets/main_window.cpp" line="424"/>
888888 <source>Open help</source>
889889 <translation type="unfinished"></translation>
890890 </message>
891891 <message>
892 <location filename="../widgets/main_window.cpp" line="413"/>
892 <location filename="../widgets/main_window.cpp" line="429"/>
893893 <source>Look Up Documentation for Cursor</source>
894894 <translation type="unfinished"></translation>
895895 </message>
896896 <message>
897 <location filename="../widgets/main_window.cpp" line="414"/>
897 <location filename="../widgets/main_window.cpp" line="430"/>
898898 <source>Ctrl+D</source>
899899 <comment>Look Up Documentation for Cursor</comment>
900900 <translation type="unfinished"></translation>
901901 </message>
902902 <message>
903 <location filename="../widgets/main_window.cpp" line="415"/>
903 <location filename="../widgets/main_window.cpp" line="431"/>
904904 <source>Look up documentation for text under cursor</source>
905905 <translation type="unfinished"></translation>
906906 </message>
907907 <message>
908 <location filename="../widgets/main_window.cpp" line="420"/>
908 <location filename="../widgets/main_window.cpp" line="436"/>
909909 <source>Look Up Documentation...</source>
910910 <translation type="unfinished"></translation>
911911 </message>
912912 <message>
913 <location filename="../widgets/main_window.cpp" line="421"/>
913 <location filename="../widgets/main_window.cpp" line="437"/>
914914 <source>Ctrl+Shift+D</source>
915915 <comment>Look Up Documentation</comment>
916916 <translation type="unfinished"></translation>
917917 </message>
918918 <message>
919 <location filename="../widgets/main_window.cpp" line="422"/>
919 <location filename="../widgets/main_window.cpp" line="438"/>
920920 <source>Enter text to look up in documentation</source>
921921 <translation type="unfinished"></translation>
922922 </message>
923923 <message>
924 <location filename="../widgets/main_window.cpp" line="427"/>
924 <location filename="../widgets/main_window.cpp" line="443"/>
925925 <source>&amp;About SuperCollider</source>
926926 <translation type="unfinished"></translation>
927927 </message>
928928 <message>
929 <location filename="../widgets/main_window.cpp" line="432"/>
929 <location filename="../widgets/main_window.cpp" line="448"/>
930930 <source>About &amp;Qt</source>
931931 <translation type="unfinished"></translation>
932932 </message>
933933 <message>
934 <location filename="../widgets/main_window.cpp" line="439"/>
934 <location filename="../widgets/main_window.cpp" line="455"/>
935935 <source>Show/hide Post docklet</source>
936936 <translation type="unfinished"></translation>
937937 </message>
938938 <message>
939 <location filename="../widgets/main_window.cpp" line="445"/>
939 <location filename="../widgets/main_window.cpp" line="461"/>
940940 <source>Show/hide Documents docklet</source>
941941 <translation type="unfinished"></translation>
942942 </message>
943943 <message>
944 <location filename="../widgets/main_window.cpp" line="451"/>
944 <location filename="../widgets/main_window.cpp" line="467"/>
945945 <source>Show/hide Help browser docklet</source>
946946 <translation type="unfinished"></translation>
947947 </message>
948948 <message>
949 <location filename="../widgets/main_window.cpp" line="461"/>
949 <location filename="../widgets/main_window.cpp" line="494"/>
950950 <source>&amp;File</source>
951951 <translation type="unfinished"></translation>
952952 </message>
953953 <message>
954 <location filename="../widgets/main_window.cpp" line="464"/>
954 <location filename="../widgets/main_window.cpp" line="497"/>
955955 <source>Open Recent</source>
956956 <comment>Open a recent document</comment>
957957 <translation type="unfinished"></translation>
958958 </message>
959959 <message>
960 <location filename="../widgets/main_window.cpp" line="481"/>
960 <location filename="../widgets/main_window.cpp" line="514"/>
961961 <source>&amp;Session</source>
962962 <translation type="unfinished"></translation>
963963 </message>
964964 <message>
965 <location filename="../widgets/main_window.cpp" line="484"/>
965 <location filename="../widgets/main_window.cpp" line="517"/>
966966 <source>&amp;Open Session</source>
967967 <translation type="unfinished"></translation>
968968 </message>
969969 <message>
970 <location filename="../widgets/main_window.cpp" line="495"/>
970 <location filename="../widgets/main_window.cpp" line="528"/>
971971 <source>&amp;Edit</source>
972972 <translation type="unfinished"></translation>
973973 </message>
974974 <message>
975 <location filename="../widgets/main_window.cpp" line="519"/>
975 <location filename="../widgets/main_window.cpp" line="552"/>
976976 <source>&amp;View</source>
977977 <translation type="unfinished"></translation>
978978 </message>
979979 <message>
980 <location filename="../widgets/main_window.cpp" line="520"/>
980 <location filename="../widgets/main_window.cpp" line="553"/>
981981 <source>&amp;Docklets</source>
982982 <translation type="unfinished"></translation>
983983 </message>
984984 <message>
985 <location filename="../widgets/main_window.cpp" line="526"/>
985 <location filename="../widgets/main_window.cpp" line="559"/>
986986 <source>&amp;Tool Panels</source>
987987 <translation type="unfinished"></translation>
988988 </message>
989989 <message>
990 <location filename="../widgets/main_window.cpp" line="554"/>
990 <location filename="../widgets/main_window.cpp" line="587"/>
991991 <source>&amp;Language</source>
992992 <translation type="unfinished"></translation>
993993 </message>
994994 <message>
995 <location filename="../widgets/main_window.cpp" line="577"/>
995 <location filename="../widgets/main_window.cpp" line="610"/>
996996 <source>&amp;Help</source>
997997 <translation type="unfinished"></translation>
998998 </message>
999999 <message>
1000 <location filename="../widgets/main_window.cpp" line="697"/>
1000 <location filename="../widgets/main_window.cpp" line="730"/>
10011001 <source>Save Current Session</source>
10021002 <translation type="unfinished"></translation>
10031003 </message>
10041004 <message>
1005 <location filename="../widgets/main_window.cpp" line="698"/>
1005 <location filename="../widgets/main_window.cpp" line="731"/>
10061006 <source>Enter a name for the session:</source>
10071007 <translation type="unfinished"></translation>
10081008 </message>
10091009 <message>
1010 <location filename="../widgets/main_window.cpp" line="827"/>
1010 <location filename="../widgets/main_window.cpp" line="860"/>
10111011 <source>Booting</source>
10121012 <translation type="unfinished"></translation>
10131013 </message>
10141014 <message>
1015 <location filename="../widgets/main_window.cpp" line="834"/>
1015 <location filename="../widgets/main_window.cpp" line="867"/>
10161016 <source>Active</source>
10171017 <translation type="unfinished"></translation>
10181018 </message>
10191019 <message>
1020 <location filename="../widgets/main_window.cpp" line="878"/>
1021 <location filename="../widgets/main_window.cpp" line="910"/>
1020 <location filename="../widgets/main_window.cpp" line="911"/>
1021 <location filename="../widgets/main_window.cpp" line="943"/>
10221022 <source>SuperCollider IDE</source>
10231023 <translation type="unfinished"></translation>
10241024 </message>
10251025 <message>
1026 <location filename="../widgets/main_window.cpp" line="879"/>
1026 <location filename="../widgets/main_window.cpp" line="912"/>
10271027 <source>There are unsaved changes in document &apos;%1&apos;.
10281028
10291029 Do you want to save it?</source>
10301030 <translation type="unfinished"></translation>
10311031 </message>
10321032 <message>
1033 <location filename="../widgets/main_window.cpp" line="911"/>
1033 <location filename="../widgets/main_window.cpp" line="944"/>
10341034 <source>There are unsaved changes in document &apos;%1&apos;.
10351035
10361036 Do you want to reload it?</source>
10371037 <translation type="unfinished"></translation>
10381038 </message>
10391039 <message>
1040 <location filename="../widgets/main_window.cpp" line="938"/>
1040 <location filename="../widgets/main_window.cpp" line="971"/>
10411041 <source>Saving read-only file</source>
10421042 <translation type="unfinished"></translation>
10431043 </message>
10441044 <message>
1045 <location filename="../widgets/main_window.cpp" line="939"/>
1045 <location filename="../widgets/main_window.cpp" line="972"/>
10461046 <source>File is read-only. Please select a new location to save to.</source>
10471047 <translation type="unfinished"></translation>
10481048 </message>
10491049 <message>
1050 <location filename="../widgets/main_window.cpp" line="950"/>
1050 <location filename="../widgets/main_window.cpp" line="983"/>
10511051 <source>SuperCollider Document (*.scd)</source>
10521052 <translation type="unfinished"></translation>
10531053 </message>
10541054 <message>
1055 <location filename="../widgets/main_window.cpp" line="951"/>
1055 <location filename="../widgets/main_window.cpp" line="984"/>
10561056 <source>SuperCollider Class file (*.sc)</source>
10571057 <translation type="unfinished"></translation>
10581058 </message>
10591059 <message>
1060 <location filename="../widgets/main_window.cpp" line="953"/>
1061 <location filename="../widgets/main_window.cpp" line="1002"/>
1060 <location filename="../widgets/main_window.cpp" line="986"/>
1061 <location filename="../widgets/main_window.cpp" line="1035"/>
10621062 <source>All files (*)</source>
10631063 <translation type="unfinished"></translation>
10641064 </message>
10651065 <message>
1066 <location filename="../widgets/main_window.cpp" line="1003"/>
1066 <location filename="../widgets/main_window.cpp" line="1036"/>
10671067 <source>SuperCollider (*.scd *.sc)</source>
10681068 <translation type="unfinished"></translation>
10691069 </message>
10701070 <message>
1071 <location filename="../widgets/main_window.cpp" line="1004"/>
1071 <location filename="../widgets/main_window.cpp" line="1037"/>
10721072 <source>SCDoc (*.schelp)</source>
10731073 <translation type="unfinished"></translation>
10741074 </message>
10751075 <message>
1076 <location filename="../widgets/main_window.cpp" line="1148"/>
1076 <location filename="../widgets/main_window.cpp" line="1181"/>
10771077 <source>Untitled</source>
10781078 <translation type="unfinished"></translation>
10791079 </message>
10801080 <message>
1081 <location filename="../widgets/main_window.cpp" line="1274"/>
1081 <location filename="../widgets/main_window.cpp" line="1311"/>
10821082 <source>About SuperCollider IDE</source>
10831083 <translation type="unfinished"></translation>
10841084 </message>
10851085 <message>
1086 <location filename="../widgets/main_window.cpp" line="1356"/>
1086 <location filename="../widgets/main_window.cpp" line="1393"/>
10871087 <source>Look up Documentation For</source>
10881088 <translation type="unfinished"></translation>
10891089 </message>
10901090 <message>
1091 <location filename="../widgets/main_window.cpp" line="1405"/>
1091 <location filename="../widgets/main_window.cpp" line="1448"/>
10921092 <source>Open binary file?</source>
10931093 <translation type="unfinished"></translation>
10941094 </message>
10951095 <message>
1096 <location filename="../widgets/main_window.cpp" line="1406"/>
1096 <location filename="../widgets/main_window.cpp" line="1449"/>
10971097 <source>
10981098
10991099 The file has an unrecognized extension. It may be a binary file. Would you still like to open it?</source>
15531553 <context>
15541554 <name>ScIDE::PostDocklet</name>
15551555 <message>
1556 <location filename="../widgets/post_window.cpp" line="294"/>
1556 <location filename="../widgets/post_window.cpp" line="304"/>
15571557 <source>Post window</source>
15581558 <translation type="unfinished"></translation>
15591559 </message>
15611561 <context>
15621562 <name>ScIDE::PostWindow</name>
15631563 <message>
1564 <location filename="../widgets/post_window.cpp" line="64"/>
1564 <location filename="../widgets/post_window.cpp" line="65"/>
15651565 <source>Post Window</source>
15661566 <translation type="unfinished"></translation>
15671567 </message>
15681568 <message>
1569 <location filename="../widgets/post_window.cpp" line="66"/>
1569 <location filename="../widgets/post_window.cpp" line="67"/>
15701570 <source>Copy</source>
15711571 <translation type="unfinished"></translation>
15721572 </message>
15731573 <message>
1574 <location filename="../widgets/post_window.cpp" line="74"/>
1574 <location filename="../widgets/post_window.cpp" line="75"/>
15751575 <source>Clear</source>
15761576 <translation type="unfinished"></translation>
15771577 </message>
15781578 <message>
1579 <location filename="../widgets/post_window.cpp" line="75"/>
1579 <location filename="../widgets/post_window.cpp" line="76"/>
15801580 <source>Clear post window</source>
15811581 <translation type="unfinished"></translation>
15821582 </message>
15831583 <message>
1584 <location filename="../widgets/post_window.cpp" line="77"/>
1584 <location filename="../widgets/post_window.cpp" line="78"/>
15851585 <source>Ctrl+Shift+P</source>
15861586 <comment>Clear post window</comment>
15871587 <translation type="unfinished"></translation>
15881588 </message>
15891589 <message>
1590 <location filename="../widgets/post_window.cpp" line="86"/>
1590 <location filename="../widgets/post_window.cpp" line="87"/>
15911591 <source>Enlarge Font</source>
15921592 <translation type="unfinished"></translation>
15931593 </message>
15941594 <message>
1595 <location filename="../widgets/post_window.cpp" line="88"/>
1595 <location filename="../widgets/post_window.cpp" line="89"/>
15961596 <source>Enlarge post window font</source>
15971597 <translation type="unfinished"></translation>
15981598 </message>
15991599 <message>
1600 <location filename="../widgets/post_window.cpp" line="92"/>
1600 <location filename="../widgets/post_window.cpp" line="93"/>
16011601 <source>Shrink Font</source>
16021602 <translation type="unfinished"></translation>
16031603 </message>
16041604 <message>
1605 <location filename="../widgets/post_window.cpp" line="94"/>
1605 <location filename="../widgets/post_window.cpp" line="95"/>
16061606 <source>Shrink post window font</source>
16071607 <translation type="unfinished"></translation>
16081608 </message>
16091609 <message>
1610 <location filename="../widgets/post_window.cpp" line="102"/>
1610 <location filename="../widgets/post_window.cpp" line="103"/>
16111611 <source>Wrap Text</source>
16121612 <translation type="unfinished"></translation>
16131613 </message>
16141614 <message>
1615 <location filename="../widgets/post_window.cpp" line="103"/>
1615 <location filename="../widgets/post_window.cpp" line="104"/>
16161616 <source>Wrap lines wider than the post window</source>
16171617 <translation type="unfinished"></translation>
16181618 </message>
16191619 <message>
1620 <location filename="../widgets/post_window.cpp" line="109"/>
1620 <location filename="../widgets/post_window.cpp" line="110"/>
16211621 <source>Auto Scroll</source>
16221622 <translation type="unfinished"></translation>
16231623 </message>
16241624 <message>
1625 <location filename="../widgets/post_window.cpp" line="110"/>
1625 <location filename="../widgets/post_window.cpp" line="111"/>
16261626 <source>Scroll to bottom on new posts</source>
16271627 <translation type="unfinished"></translation>
16281628 </message>
16301630 <context>
16311631 <name>ScIDE::ReferencesDialog</name>
16321632 <message>
1633 <location filename="../widgets/lookup_dialog.cpp" line="431"/>
1633 <location filename="../widgets/lookup_dialog.cpp" line="425"/>
16341634 <source>Look Up References</source>
16351635 <translation type="unfinished"></translation>
16361636 </message>
16371637 <message>
1638 <location filename="../widgets/lookup_dialog.cpp" line="433"/>
1638 <location filename="../widgets/lookup_dialog.cpp" line="427"/>
16391639 <source>Enter class or method name...</source>
16401640 <translation type="unfinished"></translation>
16411641 </message>
16421642 <message>
1643 <location filename="../widgets/lookup_dialog.cpp" line="469"/>
1643 <location filename="../widgets/lookup_dialog.cpp" line="463"/>
16441644 <source>Introspection data not yet available</source>
16451645 <translation type="unfinished"></translation>
16461646 </message>
16551655 <message>
16561656 <location filename="../core/sc_process.cpp" line="67"/>
16571657 <location filename="../core/sc_process.cpp" line="71"/>
1658 <location filename="../core/sc_process.cpp" line="265"/>
1658 <location filename="../core/sc_process.cpp" line="266"/>
16591659 <source>Boot Interpreter</source>
16601660 <translation type="unfinished"></translation>
16611661 </message>
16621662 <message>
16631663 <location filename="../core/sc_process.cpp" line="75"/>
1664 <location filename="../core/sc_process.cpp" line="248"/>
1664 <location filename="../core/sc_process.cpp" line="249"/>
16651665 <source>Quit Interpreter</source>
16661666 <translation type="unfinished"></translation>
16671667 </message>
16931693 <translation type="unfinished"></translation>
16941694 </message>
16951695 <message>
1696 <location filename="../core/sc_process.cpp" line="113"/>
1696 <location filename="../core/sc_process.cpp" line="114"/>
16971697 <source>Interpreter is already running.</source>
16981698 <translation type="unfinished"></translation>
16991699 </message>
17001700 <message>
1701 <location filename="../core/sc_process.cpp" line="146"/>
1701 <location filename="../core/sc_process.cpp" line="147"/>
17021702 <source>Failed to start interpreter!</source>
17031703 <translation type="unfinished"></translation>
17041704 </message>
17051705 <message>
1706 <location filename="../core/sc_process.cpp" line="152"/>
1707 <location filename="../core/sc_process.cpp" line="163"/>
1708 <location filename="../core/sc_process.cpp" line="210"/>
1706 <location filename="../core/sc_process.cpp" line="153"/>
1707 <location filename="../core/sc_process.cpp" line="164"/>
1708 <location filename="../core/sc_process.cpp" line="211"/>
17091709 <source>Interpreter is not running!</source>
17101710 <translation type="unfinished"></translation>
17111711 </message>
17121712 <message>
1713 <location filename="../core/sc_process.cpp" line="181"/>
1713 <location filename="../core/sc_process.cpp" line="182"/>
17141714 <source>Failed to stop interpreter!</source>
17151715 <translation type="unfinished"></translation>
17161716 </message>
17171717 <message>
1718 <location filename="../core/sc_process.cpp" line="217"/>
1718 <location filename="../core/sc_process.cpp" line="218"/>
17191719 <source>Error when passing data to interpreter!</source>
17201720 <translation type="unfinished"></translation>
17211721 </message>
250250 <translation type="unfinished"></translation>
251251 </message>
252252 <message>
253 <location filename="../core/doc_manager.cpp" line="290"/>
254 <location filename="../core/doc_manager.cpp" line="297"/>
253 <location filename="../core/doc_manager.cpp" line="298"/>
254 <location filename="../core/doc_manager.cpp" line="305"/>
255255 <source>File Extension Changed</source>
256256 <translation type="unfinished"></translation>
257257 </message>
258258 <message>
259 <location filename="../core/doc_manager.cpp" line="291"/>
260 <location filename="../core/doc_manager.cpp" line="298"/>
259 <location filename="../core/doc_manager.cpp" line="299"/>
260 <location filename="../core/doc_manager.cpp" line="306"/>
261261 <source>The extension of the file has changed. Please reopen file to update editor mode</source>
262262 <translation type="unfinished"></translation>
263263 </message>
417417 <context>
418418 <name>ScIDE::HelpBrowserDocklet</name>
419419 <message>
420 <location filename="../widgets/help_browser.cpp" line="378"/>
420 <location filename="../widgets/help_browser.cpp" line="399"/>
421421 <source>Help browser</source>
422422 <translation type="unfinished"></translation>
423423 </message>
425425 <context>
426426 <name>ScIDE::HelpBrowserFindBox</name>
427427 <message>
428 <location filename="../widgets/help_browser.cpp" line="339"/>
428 <location filename="../widgets/help_browser.cpp" line="360"/>
429429 <source>Find...</source>
430430 <translation type="unfinished"></translation>
431431 </message>
441441 <context>
442442 <name>ScIDE::LookupDialog</name>
443443 <message>
444 <location filename="../widgets/lookup_dialog.cpp" line="186"/>
444 <location filename="../widgets/lookup_dialog.cpp" line="180"/>
445445 <source>Look Up Implementations</source>
446446 <translation type="unfinished"></translation>
447447 </message>
448448 <message>
449 <location filename="../widgets/lookup_dialog.cpp" line="188"/>
449 <location filename="../widgets/lookup_dialog.cpp" line="182"/>
450450 <source>Enter class or method name...</source>
451451 <translation type="unfinished"></translation>
452452 </message>
453453 <message>
454 <location filename="../widgets/lookup_dialog.cpp" line="203"/>
454 <location filename="../widgets/lookup_dialog.cpp" line="197"/>
455455 <source>Introspection data not yet available</source>
456456 <translation type="unfinished"></translation>
457457 </message>
458458 <message>
459 <location filename="../widgets/lookup_dialog.cpp" line="365"/>
459 <location filename="../widgets/lookup_dialog.cpp" line="359"/>
460460 <source>No result for query</source>
461461 <translation type="unfinished"></translation>
462462 </message>
464464 <context>
465465 <name>ScIDE::MainWindow</name>
466466 <message>
467 <location filename="../widgets/main_window.cpp" line="78"/>
468 <location filename="../widgets/main_window.cpp" line="822"/>
467 <location filename="../widgets/main_window.cpp" line="94"/>
468 <location filename="../widgets/main_window.cpp" line="855"/>
469469 <source>Inactive</source>
470470 <translation type="unfinished"></translation>
471471 </message>
472472 <message>
473 <location filename="../widgets/main_window.cpp" line="83"/>
473 <location filename="../widgets/main_window.cpp" line="99"/>
474474 <source>Interpreter:</source>
475475 <translation type="unfinished"></translation>
476476 </message>
477477 <message>
478 <location filename="../widgets/main_window.cpp" line="85"/>
478 <location filename="../widgets/main_window.cpp" line="101"/>
479479 <source>Server:</source>
480480 <translation type="unfinished"></translation>
481481 </message>
482482 <message>
483 <location filename="../widgets/main_window.cpp" line="93"/>
483 <location filename="../widgets/main_window.cpp" line="109"/>
484484 <source>Command Line:</source>
485485 <translation type="unfinished"></translation>
486486 </message>
487487 <message>
488 <location filename="../widgets/main_window.cpp" line="219"/>
488 <location filename="../widgets/main_window.cpp" line="235"/>
489489 <source>Text Editor</source>
490490 <translation type="unfinished"></translation>
491491 </message>
492492 <message>
493 <location filename="../widgets/main_window.cpp" line="220"/>
493 <location filename="../widgets/main_window.cpp" line="236"/>
494494 <source>Help</source>
495495 <translation type="unfinished"></translation>
496496 </message>
497497 <message>
498 <location filename="../widgets/main_window.cpp" line="224"/>
498 <location filename="../widgets/main_window.cpp" line="240"/>
499499 <source>&amp;Quit...</source>
500500 <translation type="unfinished"></translation>
501501 </message>
502502 <message>
503 <location filename="../widgets/main_window.cpp" line="225"/>
503 <location filename="../widgets/main_window.cpp" line="241"/>
504504 <source>Ctrl+Q</source>
505505 <comment>Quit application</comment>
506506 <translation type="unfinished"></translation>
507507 </message>
508508 <message>
509 <location filename="../widgets/main_window.cpp" line="226"/>
509 <location filename="../widgets/main_window.cpp" line="242"/>
510510 <source>Quit SuperCollider IDE</source>
511511 <translation type="unfinished"></translation>
512512 </message>
513513 <message>
514 <location filename="../widgets/main_window.cpp" line="231"/>
514 <location filename="../widgets/main_window.cpp" line="247"/>
515515 <source>&amp;New</source>
516516 <translation type="unfinished"></translation>
517517 </message>
518518 <message>
519 <location filename="../widgets/main_window.cpp" line="232"/>
519 <location filename="../widgets/main_window.cpp" line="248"/>
520520 <source>Ctrl+N</source>
521521 <comment>New document</comment>
522522 <translation type="unfinished"></translation>
523523 </message>
524524 <message>
525 <location filename="../widgets/main_window.cpp" line="233"/>
525 <location filename="../widgets/main_window.cpp" line="249"/>
526526 <source>Create a new document</source>
527527 <translation type="unfinished"></translation>
528528 </message>
529529 <message>
530 <location filename="../widgets/main_window.cpp" line="238"/>
530 <location filename="../widgets/main_window.cpp" line="254"/>
531531 <source>&amp;Open...</source>
532532 <translation type="unfinished"></translation>
533533 </message>
534534 <message>
535 <location filename="../widgets/main_window.cpp" line="239"/>
535 <location filename="../widgets/main_window.cpp" line="255"/>
536536 <source>Ctrl+O</source>
537537 <comment>Open document</comment>
538538 <translation type="unfinished"></translation>
539539 </message>
540540 <message>
541 <location filename="../widgets/main_window.cpp" line="240"/>
541 <location filename="../widgets/main_window.cpp" line="256"/>
542542 <source>Open an existing file</source>
543543 <translation type="unfinished"></translation>
544544 </message>
545545 <message>
546 <location filename="../widgets/main_window.cpp" line="245"/>
547 <location filename="../widgets/main_window.cpp" line="246"/>
546 <location filename="../widgets/main_window.cpp" line="261"/>
547 <location filename="../widgets/main_window.cpp" line="262"/>
548548 <source>Open startup file</source>
549549 <translation type="unfinished"></translation>
550550 </message>
551551 <message>
552 <location filename="../widgets/main_window.cpp" line="251"/>
552 <location filename="../widgets/main_window.cpp" line="267"/>
553553 <source>&amp;Save</source>
554554 <translation type="unfinished"></translation>
555555 </message>
556556 <message>
557 <location filename="../widgets/main_window.cpp" line="252"/>
557 <location filename="../widgets/main_window.cpp" line="268"/>
558558 <source>Ctrl+S</source>
559559 <comment>Save document</comment>
560560 <translation type="unfinished"></translation>
561561 </message>
562562 <message>
563 <location filename="../widgets/main_window.cpp" line="253"/>
563 <location filename="../widgets/main_window.cpp" line="269"/>
564564 <source>Save the current document</source>
565565 <translation type="unfinished"></translation>
566566 </message>
567567 <message>
568 <location filename="../widgets/main_window.cpp" line="258"/>
568 <location filename="../widgets/main_window.cpp" line="274"/>
569569 <source>Save &amp;As...</source>
570570 <translation type="unfinished"></translation>
571571 </message>
572572 <message>
573 <location filename="../widgets/main_window.cpp" line="259"/>
573 <location filename="../widgets/main_window.cpp" line="275"/>
574574 <source>Ctrl+Shift+S</source>
575575 <comment>Save &amp;As...</comment>
576576 <translation type="unfinished"></translation>
577577 </message>
578578 <message>
579 <location filename="../widgets/main_window.cpp" line="260"/>
579 <location filename="../widgets/main_window.cpp" line="276"/>
580580 <source>Save the current document into a different file</source>
581581 <translation type="unfinished"></translation>
582582 </message>
583583 <message>
584 <location filename="../widgets/main_window.cpp" line="265"/>
584 <location filename="../widgets/main_window.cpp" line="281"/>
585585 <source>Save All...</source>
586586 <translation type="unfinished"></translation>
587587 </message>
588588 <message>
589 <location filename="../widgets/main_window.cpp" line="266"/>
589 <location filename="../widgets/main_window.cpp" line="282"/>
590590 <source>Ctrl+Alt+S</source>
591591 <comment>Save all documents</comment>
592592 <translation type="unfinished"></translation>
593593 </message>
594594 <message>
595 <location filename="../widgets/main_window.cpp" line="267"/>
595 <location filename="../widgets/main_window.cpp" line="283"/>
596596 <source>Save all open documents</source>
597597 <translation type="unfinished"></translation>
598598 </message>
599599 <message>
600 <location filename="../widgets/main_window.cpp" line="272"/>
600 <location filename="../widgets/main_window.cpp" line="288"/>
601601 <source>&amp;Close</source>
602602 <translation type="unfinished"></translation>
603603 </message>
604604 <message>
605 <location filename="../widgets/main_window.cpp" line="273"/>
605 <location filename="../widgets/main_window.cpp" line="289"/>
606606 <source>Ctrl+W</source>
607607 <comment>Close document</comment>
608608 <translation type="unfinished"></translation>
609609 </message>
610610 <message>
611 <location filename="../widgets/main_window.cpp" line="274"/>
611 <location filename="../widgets/main_window.cpp" line="290"/>
612612 <source>Close the current document</source>
613613 <translation type="unfinished"></translation>
614614 </message>
615615 <message>
616 <location filename="../widgets/main_window.cpp" line="279"/>
616 <location filename="../widgets/main_window.cpp" line="295"/>
617617 <source>Close All...</source>
618618 <translation type="unfinished"></translation>
619619 </message>
620620 <message>
621 <location filename="../widgets/main_window.cpp" line="280"/>
621 <location filename="../widgets/main_window.cpp" line="296"/>
622622 <source>Ctrl+Shift+W</source>
623623 <comment>Close all documents</comment>
624624 <translation type="unfinished"></translation>
625625 </message>
626626 <message>
627 <location filename="../widgets/main_window.cpp" line="281"/>
627 <location filename="../widgets/main_window.cpp" line="297"/>
628628 <source>Close all documents</source>
629629 <translation type="unfinished"></translation>
630630 </message>
631631 <message>
632 <location filename="../widgets/main_window.cpp" line="286"/>
632 <location filename="../widgets/main_window.cpp" line="302"/>
633633 <source>&amp;Reload</source>
634634 <translation type="unfinished"></translation>
635635 </message>
636636 <message>
637 <location filename="../widgets/main_window.cpp" line="287"/>
637 <location filename="../widgets/main_window.cpp" line="303"/>
638638 <source>F5</source>
639639 <comment>Reload document</comment>
640640 <translation type="unfinished"></translation>
641641 </message>
642642 <message>
643 <location filename="../widgets/main_window.cpp" line="288"/>
643 <location filename="../widgets/main_window.cpp" line="304"/>
644644 <source>Reload the current document</source>
645645 <translation type="unfinished"></translation>
646646 </message>
647647 <message>
648 <location filename="../widgets/main_window.cpp" line="292"/>
648 <location filename="../widgets/main_window.cpp" line="308"/>
649649 <source>Clear</source>
650650 <comment>Clear recent documents</comment>
651651 <translation type="unfinished"></translation>
652652 </message>
653653 <message>
654 <location filename="../widgets/main_window.cpp" line="293"/>
654 <location filename="../widgets/main_window.cpp" line="309"/>
655655 <source>Clear list of recent documents</source>
656656 <translation type="unfinished"></translation>
657657 </message>
658658 <message>
659 <location filename="../widgets/main_window.cpp" line="300"/>
659 <location filename="../widgets/main_window.cpp" line="316"/>
660660 <source>&amp;New Session</source>
661661 <translation type="unfinished"></translation>
662662 </message>
663663 <message>
664 <location filename="../widgets/main_window.cpp" line="301"/>
664 <location filename="../widgets/main_window.cpp" line="317"/>
665665 <source>Open a new session</source>
666666 <translation type="unfinished"></translation>
667667 </message>
668668 <message>
669 <location filename="../widgets/main_window.cpp" line="306"/>
669 <location filename="../widgets/main_window.cpp" line="322"/>
670670 <source>Save Session &amp;As...</source>
671671 <translation type="unfinished"></translation>
672672 </message>
673673 <message>
674 <location filename="../widgets/main_window.cpp" line="307"/>
674 <location filename="../widgets/main_window.cpp" line="323"/>
675675 <source>Save the current session with a different name</source>
676676 <translation type="unfinished"></translation>
677677 </message>
678678 <message>
679 <location filename="../widgets/main_window.cpp" line="312"/>
679 <location filename="../widgets/main_window.cpp" line="328"/>
680680 <source>&amp;Manage Sessions...</source>
681681 <translation type="unfinished"></translation>
682682 </message>
683683 <message>
684 <location filename="../widgets/main_window.cpp" line="317"/>
684 <location filename="../widgets/main_window.cpp" line="333"/>
685685 <source>&amp;Switch Session...</source>
686686 <translation type="unfinished"></translation>
687687 </message>
688688 <message>
689 <location filename="../widgets/main_window.cpp" line="319"/>
689 <location filename="../widgets/main_window.cpp" line="335"/>
690690 <source>Ctrl+Shift+Q</source>
691691 <comment>Switch Session</comment>
692692 <translation type="unfinished"></translation>
693693 </message>
694694 <message>
695 <location filename="../widgets/main_window.cpp" line="324"/>
695 <location filename="../widgets/main_window.cpp" line="340"/>
696696 <source>&amp;Find...</source>
697697 <translation type="unfinished"></translation>
698698 </message>
699699 <message>
700 <location filename="../widgets/main_window.cpp" line="325"/>
700 <location filename="../widgets/main_window.cpp" line="341"/>
701701 <source>Ctrl+F</source>
702702 <comment>Find</comment>
703703 <translation type="unfinished"></translation>
704704 </message>
705705 <message>
706 <location filename="../widgets/main_window.cpp" line="326"/>
706 <location filename="../widgets/main_window.cpp" line="342"/>
707707 <source>Find text in document</source>
708708 <translation type="unfinished"></translation>
709709 </message>
710710 <message>
711 <location filename="../widgets/main_window.cpp" line="331"/>
711 <location filename="../widgets/main_window.cpp" line="347"/>
712712 <source>&amp;Replace...</source>
713713 <translation type="unfinished"></translation>
714714 </message>
715715 <message>
716 <location filename="../widgets/main_window.cpp" line="332"/>
716 <location filename="../widgets/main_window.cpp" line="348"/>
717717 <source>Ctrl+R</source>
718718 <comment>Replace</comment>
719719 <translation type="unfinished"></translation>
720720 </message>
721721 <message>
722 <location filename="../widgets/main_window.cpp" line="333"/>
722 <location filename="../widgets/main_window.cpp" line="349"/>
723723 <source>Find and replace text in document</source>
724724 <translation type="unfinished"></translation>
725725 </message>
726726 <message>
727 <location filename="../widgets/main_window.cpp" line="338"/>
727 <location filename="../widgets/main_window.cpp" line="354"/>
728728 <source>&amp;Command Line</source>
729729 <translation type="unfinished"></translation>
730730 </message>
731731 <message>
732 <location filename="../widgets/main_window.cpp" line="339"/>
732 <location filename="../widgets/main_window.cpp" line="355"/>
733733 <source>Command line for quick code evaluation</source>
734734 <translation type="unfinished"></translation>
735735 </message>
736736 <message>
737 <location filename="../widgets/main_window.cpp" line="340"/>
737 <location filename="../widgets/main_window.cpp" line="356"/>
738738 <source>Ctrl+E</source>
739739 <comment>Show command line</comment>
740740 <translation type="unfinished"></translation>
741741 </message>
742742 <message>
743 <location filename="../widgets/main_window.cpp" line="344"/>
743 <location filename="../widgets/main_window.cpp" line="360"/>
744744 <source>&amp;Go To Line</source>
745745 <translation type="unfinished"></translation>
746746 </message>
747747 <message>
748 <location filename="../widgets/main_window.cpp" line="345"/>
748 <location filename="../widgets/main_window.cpp" line="361"/>
749749 <source>Tool to jump to a line by number</source>
750750 <translation type="unfinished"></translation>
751751 </message>
752752 <message>
753 <location filename="../widgets/main_window.cpp" line="346"/>
753 <location filename="../widgets/main_window.cpp" line="362"/>
754754 <source>Ctrl+L</source>
755755 <comment>Show go-to-line tool</comment>
756756 <translation type="unfinished"></translation>
757757 </message>
758758 <message>
759 <location filename="../widgets/main_window.cpp" line="351"/>
759 <location filename="../widgets/main_window.cpp" line="367"/>
760760 <source>&amp;Close Tool Panel</source>
761761 <translation type="unfinished"></translation>
762762 </message>
763763 <message>
764 <location filename="../widgets/main_window.cpp" line="352"/>
764 <location filename="../widgets/main_window.cpp" line="368"/>
765765 <source>Close any open tool panel</source>
766766 <translation type="unfinished"></translation>
767767 </message>
768768 <message>
769 <location filename="../widgets/main_window.cpp" line="353"/>
769 <location filename="../widgets/main_window.cpp" line="369"/>
770770 <source>Esc</source>
771771 <comment>Close tool box</comment>
772772 <translation type="unfinished"></translation>
773773 </message>
774774 <message>
775 <location filename="../widgets/main_window.cpp" line="357"/>
775 <location filename="../widgets/main_window.cpp" line="373"/>
776776 <source>&amp;Full Screen</source>
777777 <translation type="unfinished"></translation>
778778 </message>
779779 <message>
780 <location filename="../widgets/main_window.cpp" line="359"/>
780 <location filename="../widgets/main_window.cpp" line="375"/>
781781 <source>Ctrl+Shift+F</source>
782782 <comment>Show ScIDE in Full Screen</comment>
783783 <translation type="unfinished"></translation>
784784 </message>
785785 <message>
786 <location filename="../widgets/main_window.cpp" line="363"/>
786 <location filename="../widgets/main_window.cpp" line="379"/>
787787 <source>Focus Post Window</source>
788788 <translation type="unfinished"></translation>
789789 </message>
790790 <message>
791 <location filename="../widgets/main_window.cpp" line="364"/>
791 <location filename="../widgets/main_window.cpp" line="380"/>
792792 <source>Focus post window</source>
793793 <translation type="unfinished"></translation>
794794 </message>
795795 <message>
796 <location filename="../widgets/main_window.cpp" line="365"/>
796 <location filename="../widgets/main_window.cpp" line="381"/>
797797 <source>Ctrl+P</source>
798798 <comment>Focus post window</comment>
799799 <translation type="unfinished"></translation>
800800 </message>
801801 <message>
802 <location filename="../widgets/main_window.cpp" line="371"/>
802 <location filename="../widgets/main_window.cpp" line="387"/>
803803 <source>Look Up Implementations...</source>
804804 <translation type="unfinished"></translation>
805805 </message>
806806 <message>
807 <location filename="../widgets/main_window.cpp" line="372"/>
807 <location filename="../widgets/main_window.cpp" line="388"/>
808808 <source>Ctrl+Shift+I</source>
809809 <comment>Look Up Implementations</comment>
810810 <translation type="unfinished"></translation>
811811 </message>
812812 <message>
813 <location filename="../widgets/main_window.cpp" line="373"/>
813 <location filename="../widgets/main_window.cpp" line="389"/>
814814 <source>Open dialog to look up implementations of a class or a method</source>
815815 <translation type="unfinished"></translation>
816816 </message>
817817 <message>
818 <location filename="../widgets/main_window.cpp" line="377"/>
818 <location filename="../widgets/main_window.cpp" line="393"/>
819819 <source>Look Up Implementations for Cursor</source>
820820 <translation type="unfinished"></translation>
821821 </message>
822822 <message>
823 <location filename="../widgets/main_window.cpp" line="378"/>
823 <location filename="../widgets/main_window.cpp" line="394"/>
824824 <source>Ctrl+I</source>
825825 <comment>Look Up Implementations for Cursor</comment>
826826 <translation type="unfinished"></translation>
827827 </message>
828828 <message>
829 <location filename="../widgets/main_window.cpp" line="379"/>
829 <location filename="../widgets/main_window.cpp" line="395"/>
830830 <source>Look up implementations of class or method under cursor</source>
831831 <translation type="unfinished"></translation>
832832 </message>
833833 <message>
834 <location filename="../widgets/main_window.cpp" line="384"/>
834 <location filename="../widgets/main_window.cpp" line="400"/>
835835 <source>Look Up References...</source>
836836 <translation type="unfinished"></translation>
837837 </message>
838838 <message>
839 <location filename="../widgets/main_window.cpp" line="385"/>
839 <location filename="../widgets/main_window.cpp" line="401"/>
840840 <source>Ctrl+Shift+U</source>
841841 <comment>Look Up References</comment>
842842 <translation type="unfinished"></translation>
843843 </message>
844844 <message>
845 <location filename="../widgets/main_window.cpp" line="386"/>
845 <location filename="../widgets/main_window.cpp" line="402"/>
846846 <source>Open dialog to look up references to a class or a method</source>
847847 <translation type="unfinished"></translation>
848848 </message>
849849 <message>
850 <location filename="../widgets/main_window.cpp" line="390"/>
850 <location filename="../widgets/main_window.cpp" line="406"/>
851851 <source>Look Up References for Cursor</source>
852852 <translation type="unfinished"></translation>
853853 </message>
854854 <message>
855 <location filename="../widgets/main_window.cpp" line="391"/>
855 <location filename="../widgets/main_window.cpp" line="407"/>
856856 <source>Ctrl+U</source>
857857 <comment>Look Up References For Selection</comment>
858858 <translation type="unfinished"></translation>
859859 </message>
860860 <message>
861 <location filename="../widgets/main_window.cpp" line="392"/>
861 <location filename="../widgets/main_window.cpp" line="408"/>
862862 <source>Look up references to class or method under cursor</source>
863863 <translation type="unfinished"></translation>
864864 </message>
865865 <message>
866 <location filename="../widgets/main_window.cpp" line="397"/>
866 <location filename="../widgets/main_window.cpp" line="413"/>
867867 <source>&amp;Preferences</source>
868868 <translation type="unfinished"></translation>
869869 </message>
870870 <message>
871 <location filename="../widgets/main_window.cpp" line="399"/>
871 <location filename="../widgets/main_window.cpp" line="415"/>
872872 <source>Ctrl+,</source>
873873 <comment>Show configuration dialog</comment>
874874 <translation type="unfinished"></translation>
875875 </message>
876876 <message>
877 <location filename="../widgets/main_window.cpp" line="401"/>
877 <location filename="../widgets/main_window.cpp" line="417"/>
878878 <source>Show configuration dialog</source>
879879 <translation type="unfinished"></translation>
880880 </message>
881881 <message>
882 <location filename="../widgets/main_window.cpp" line="407"/>
882 <location filename="../widgets/main_window.cpp" line="423"/>
883883 <source>Open &amp;Help Browser</source>
884884 <translation type="unfinished"></translation>
885885 </message>
886886 <message>
887 <location filename="../widgets/main_window.cpp" line="408"/>
887 <location filename="../widgets/main_window.cpp" line="424"/>
888888 <source>Open help</source>
889889 <translation type="unfinished"></translation>
890890 </message>
891891 <message>
892 <location filename="../widgets/main_window.cpp" line="413"/>
892 <location filename="../widgets/main_window.cpp" line="429"/>
893893 <source>Look Up Documentation for Cursor</source>
894894 <translation type="unfinished"></translation>
895895 </message>
896896 <message>
897 <location filename="../widgets/main_window.cpp" line="414"/>
897 <location filename="../widgets/main_window.cpp" line="430"/>
898898 <source>Ctrl+D</source>
899899 <comment>Look Up Documentation for Cursor</comment>
900900 <translation type="unfinished"></translation>
901901 </message>
902902 <message>
903 <location filename="../widgets/main_window.cpp" line="415"/>
903 <location filename="../widgets/main_window.cpp" line="431"/>
904904 <source>Look up documentation for text under cursor</source>
905905 <translation type="unfinished"></translation>
906906 </message>
907907 <message>
908 <location filename="../widgets/main_window.cpp" line="420"/>
908 <location filename="../widgets/main_window.cpp" line="436"/>
909909 <source>Look Up Documentation...</source>
910910 <translation type="unfinished"></translation>
911911 </message>
912912 <message>
913 <location filename="../widgets/main_window.cpp" line="421"/>
913 <location filename="../widgets/main_window.cpp" line="437"/>
914914 <source>Ctrl+Shift+D</source>
915915 <comment>Look Up Documentation</comment>
916916 <translation type="unfinished"></translation>
917917 </message>
918918 <message>
919 <location filename="../widgets/main_window.cpp" line="422"/>
919 <location filename="../widgets/main_window.cpp" line="438"/>
920920 <source>Enter text to look up in documentation</source>
921921 <translation type="unfinished"></translation>
922922 </message>
923923 <message>
924 <location filename="../widgets/main_window.cpp" line="427"/>
924 <location filename="../widgets/main_window.cpp" line="443"/>
925925 <source>&amp;About SuperCollider</source>
926926 <translation type="unfinished"></translation>
927927 </message>
928928 <message>
929 <location filename="../widgets/main_window.cpp" line="432"/>
929 <location filename="../widgets/main_window.cpp" line="448"/>
930930 <source>About &amp;Qt</source>
931931 <translation type="unfinished"></translation>
932932 </message>
933933 <message>
934 <location filename="../widgets/main_window.cpp" line="439"/>
934 <location filename="../widgets/main_window.cpp" line="455"/>
935935 <source>Show/hide Post docklet</source>
936936 <translation type="unfinished"></translation>
937937 </message>
938938 <message>
939 <location filename="../widgets/main_window.cpp" line="445"/>
939 <location filename="../widgets/main_window.cpp" line="461"/>
940940 <source>Show/hide Documents docklet</source>
941941 <translation type="unfinished"></translation>
942942 </message>
943943 <message>
944 <location filename="../widgets/main_window.cpp" line="451"/>
944 <location filename="../widgets/main_window.cpp" line="467"/>
945945 <source>Show/hide Help browser docklet</source>
946946 <translation type="unfinished"></translation>
947947 </message>
948948 <message>
949 <location filename="../widgets/main_window.cpp" line="461"/>
949 <location filename="../widgets/main_window.cpp" line="494"/>
950950 <source>&amp;File</source>
951951 <translation type="unfinished"></translation>
952952 </message>
953953 <message>
954 <location filename="../widgets/main_window.cpp" line="464"/>
954 <location filename="../widgets/main_window.cpp" line="497"/>
955955 <source>Open Recent</source>
956956 <comment>Open a recent document</comment>
957957 <translation type="unfinished"></translation>
958958 </message>
959959 <message>
960 <location filename="../widgets/main_window.cpp" line="481"/>
960 <location filename="../widgets/main_window.cpp" line="514"/>
961961 <source>&amp;Session</source>
962962 <translation type="unfinished"></translation>
963963 </message>
964964 <message>
965 <location filename="../widgets/main_window.cpp" line="484"/>
965 <location filename="../widgets/main_window.cpp" line="517"/>
966966 <source>&amp;Open Session</source>
967967 <translation type="unfinished"></translation>
968968 </message>
969969 <message>
970 <location filename="../widgets/main_window.cpp" line="495"/>
970 <location filename="../widgets/main_window.cpp" line="528"/>
971971 <source>&amp;Edit</source>
972972 <translation type="unfinished"></translation>
973973 </message>
974974 <message>
975 <location filename="../widgets/main_window.cpp" line="519"/>
975 <location filename="../widgets/main_window.cpp" line="552"/>
976976 <source>&amp;View</source>
977977 <translation type="unfinished"></translation>
978978 </message>
979979 <message>
980 <location filename="../widgets/main_window.cpp" line="520"/>
980 <location filename="../widgets/main_window.cpp" line="553"/>
981981 <source>&amp;Docklets</source>
982982 <translation type="unfinished"></translation>
983983 </message>
984984 <message>
985 <location filename="../widgets/main_window.cpp" line="526"/>
985 <location filename="../widgets/main_window.cpp" line="559"/>
986986 <source>&amp;Tool Panels</source>
987987 <translation type="unfinished"></translation>
988988 </message>
989989 <message>
990 <location filename="../widgets/main_window.cpp" line="554"/>
990 <location filename="../widgets/main_window.cpp" line="587"/>
991991 <source>&amp;Language</source>
992992 <translation type="unfinished"></translation>
993993 </message>
994994 <message>
995 <location filename="../widgets/main_window.cpp" line="577"/>
995 <location filename="../widgets/main_window.cpp" line="610"/>
996996 <source>&amp;Help</source>
997997 <translation type="unfinished"></translation>
998998 </message>
999999 <message>
1000 <location filename="../widgets/main_window.cpp" line="697"/>
1000 <location filename="../widgets/main_window.cpp" line="730"/>
10011001 <source>Save Current Session</source>
10021002 <translation type="unfinished"></translation>
10031003 </message>
10041004 <message>
1005 <location filename="../widgets/main_window.cpp" line="698"/>
1005 <location filename="../widgets/main_window.cpp" line="731"/>
10061006 <source>Enter a name for the session:</source>
10071007 <translation type="unfinished"></translation>
10081008 </message>
10091009 <message>
1010 <location filename="../widgets/main_window.cpp" line="827"/>
1010 <location filename="../widgets/main_window.cpp" line="860"/>
10111011 <source>Booting</source>
10121012 <translation type="unfinished"></translation>
10131013 </message>
10141014 <message>
1015 <location filename="../widgets/main_window.cpp" line="834"/>
1015 <location filename="../widgets/main_window.cpp" line="867"/>
10161016 <source>Active</source>
10171017 <translation type="unfinished"></translation>
10181018 </message>
10191019 <message>
1020 <location filename="../widgets/main_window.cpp" line="878"/>
1021 <location filename="../widgets/main_window.cpp" line="910"/>
1020 <location filename="../widgets/main_window.cpp" line="911"/>
1021 <location filename="../widgets/main_window.cpp" line="943"/>
10221022 <source>SuperCollider IDE</source>
10231023 <translation type="unfinished"></translation>
10241024 </message>
10251025 <message>
1026 <location filename="../widgets/main_window.cpp" line="879"/>
1026 <location filename="../widgets/main_window.cpp" line="912"/>
10271027 <source>There are unsaved changes in document &apos;%1&apos;.
10281028
10291029 Do you want to save it?</source>
10301030 <translation type="unfinished"></translation>
10311031 </message>
10321032 <message>
1033 <location filename="../widgets/main_window.cpp" line="911"/>
1033 <location filename="../widgets/main_window.cpp" line="944"/>
10341034 <source>There are unsaved changes in document &apos;%1&apos;.
10351035
10361036 Do you want to reload it?</source>
10371037 <translation type="unfinished"></translation>
10381038 </message>
10391039 <message>
1040 <location filename="../widgets/main_window.cpp" line="938"/>
1040 <location filename="../widgets/main_window.cpp" line="971"/>
10411041 <source>Saving read-only file</source>
10421042 <translation type="unfinished"></translation>
10431043 </message>
10441044 <message>
1045 <location filename="../widgets/main_window.cpp" line="939"/>
1045 <location filename="../widgets/main_window.cpp" line="972"/>
10461046 <source>File is read-only. Please select a new location to save to.</source>
10471047 <translation type="unfinished"></translation>
10481048 </message>
10491049 <message>
1050 <location filename="../widgets/main_window.cpp" line="950"/>
1050 <location filename="../widgets/main_window.cpp" line="983"/>
10511051 <source>SuperCollider Document (*.scd)</source>
10521052 <translation type="unfinished"></translation>
10531053 </message>
10541054 <message>
1055 <location filename="../widgets/main_window.cpp" line="951"/>
1055 <location filename="../widgets/main_window.cpp" line="984"/>
10561056 <source>SuperCollider Class file (*.sc)</source>
10571057 <translation type="unfinished"></translation>
10581058 </message>
10591059 <message>
1060 <location filename="../widgets/main_window.cpp" line="953"/>
1061 <location filename="../widgets/main_window.cpp" line="1002"/>
1060 <location filename="../widgets/main_window.cpp" line="986"/>
1061 <location filename="../widgets/main_window.cpp" line="1035"/>
10621062 <source>All files (*)</source>
10631063 <translation type="unfinished"></translation>
10641064 </message>
10651065 <message>
1066 <location filename="../widgets/main_window.cpp" line="1003"/>
1066 <location filename="../widgets/main_window.cpp" line="1036"/>
10671067 <source>SuperCollider (*.scd *.sc)</source>
10681068 <translation type="unfinished"></translation>
10691069 </message>
10701070 <message>
1071 <location filename="../widgets/main_window.cpp" line="1004"/>
1071 <location filename="../widgets/main_window.cpp" line="1037"/>
10721072 <source>SCDoc (*.schelp)</source>
10731073 <translation type="unfinished"></translation>
10741074 </message>
10751075 <message>
1076 <location filename="../widgets/main_window.cpp" line="1148"/>
1076 <location filename="../widgets/main_window.cpp" line="1181"/>
10771077 <source>Untitled</source>
10781078 <translation type="unfinished"></translation>
10791079 </message>
10801080 <message>
1081 <location filename="../widgets/main_window.cpp" line="1274"/>
1081 <location filename="../widgets/main_window.cpp" line="1311"/>
10821082 <source>About SuperCollider IDE</source>
10831083 <translation type="unfinished"></translation>
10841084 </message>
10851085 <message>
1086 <location filename="../widgets/main_window.cpp" line="1356"/>
1086 <location filename="../widgets/main_window.cpp" line="1393"/>
10871087 <source>Look up Documentation For</source>
10881088 <translation type="unfinished"></translation>
10891089 </message>
10901090 <message>
1091 <location filename="../widgets/main_window.cpp" line="1405"/>
1091 <location filename="../widgets/main_window.cpp" line="1448"/>
10921092 <source>Open binary file?</source>
10931093 <translation type="unfinished"></translation>
10941094 </message>
10951095 <message>
1096 <location filename="../widgets/main_window.cpp" line="1406"/>
1096 <location filename="../widgets/main_window.cpp" line="1449"/>
10971097 <source>
10981098
10991099 The file has an unrecognized extension. It may be a binary file. Would you still like to open it?</source>
15531553 <context>
15541554 <name>ScIDE::PostDocklet</name>
15551555 <message>
1556 <location filename="../widgets/post_window.cpp" line="294"/>
1556 <location filename="../widgets/post_window.cpp" line="304"/>
15571557 <source>Post window</source>
15581558 <translation type="unfinished"></translation>
15591559 </message>
15611561 <context>
15621562 <name>ScIDE::PostWindow</name>
15631563 <message>
1564 <location filename="../widgets/post_window.cpp" line="64"/>
1564 <location filename="../widgets/post_window.cpp" line="65"/>
15651565 <source>Post Window</source>
15661566 <translation type="unfinished"></translation>
15671567 </message>
15681568 <message>
1569 <location filename="../widgets/post_window.cpp" line="66"/>
1569 <location filename="../widgets/post_window.cpp" line="67"/>
15701570 <source>Copy</source>
15711571 <translation type="unfinished"></translation>
15721572 </message>
15731573 <message>
1574 <location filename="../widgets/post_window.cpp" line="74"/>
1574 <location filename="../widgets/post_window.cpp" line="75"/>
15751575 <source>Clear</source>
15761576 <translation type="unfinished"></translation>
15771577 </message>
15781578 <message>
1579 <location filename="../widgets/post_window.cpp" line="75"/>
1579 <location filename="../widgets/post_window.cpp" line="76"/>
15801580 <source>Clear post window</source>
15811581 <translation type="unfinished"></translation>
15821582 </message>
15831583 <message>
1584 <location filename="../widgets/post_window.cpp" line="77"/>
1584 <location filename="../widgets/post_window.cpp" line="78"/>
15851585 <source>Ctrl+Shift+P</source>
15861586 <comment>Clear post window</comment>
15871587 <translation type="unfinished"></translation>
15881588 </message>
15891589 <message>
1590 <location filename="../widgets/post_window.cpp" line="86"/>
1590 <location filename="../widgets/post_window.cpp" line="87"/>
15911591 <source>Enlarge Font</source>
15921592 <translation type="unfinished"></translation>
15931593 </message>
15941594 <message>
1595 <location filename="../widgets/post_window.cpp" line="88"/>
1595 <location filename="../widgets/post_window.cpp" line="89"/>
15961596 <source>Enlarge post window font</source>
15971597 <translation type="unfinished"></translation>
15981598 </message>
15991599 <message>
1600 <location filename="../widgets/post_window.cpp" line="92"/>
1600 <location filename="../widgets/post_window.cpp" line="93"/>
16011601 <source>Shrink Font</source>
16021602 <translation type="unfinished"></translation>
16031603 </message>
16041604 <message>
1605 <location filename="../widgets/post_window.cpp" line="94"/>
1605 <location filename="../widgets/post_window.cpp" line="95"/>
16061606 <source>Shrink post window font</source>
16071607 <translation type="unfinished"></translation>
16081608 </message>
16091609 <message>
1610 <location filename="../widgets/post_window.cpp" line="102"/>
1610 <location filename="../widgets/post_window.cpp" line="103"/>
16111611 <source>Wrap Text</source>
16121612 <translation type="unfinished"></translation>
16131613 </message>
16141614 <message>
1615 <location filename="../widgets/post_window.cpp" line="103"/>
1615 <location filename="../widgets/post_window.cpp" line="104"/>
16161616 <source>Wrap lines wider than the post window</source>
16171617 <translation type="unfinished"></translation>
16181618 </message>
16191619 <message>
1620 <location filename="../widgets/post_window.cpp" line="109"/>
1620 <location filename="../widgets/post_window.cpp" line="110"/>
16211621 <source>Auto Scroll</source>
16221622 <translation type="unfinished"></translation>
16231623 </message>
16241624 <message>
1625 <location filename="../widgets/post_window.cpp" line="110"/>
1625 <location filename="../widgets/post_window.cpp" line="111"/>
16261626 <source>Scroll to bottom on new posts</source>
16271627 <translation type="unfinished"></translation>
16281628 </message>
16301630 <context>
16311631 <name>ScIDE::ReferencesDialog</name>
16321632 <message>
1633 <location filename="../widgets/lookup_dialog.cpp" line="431"/>
1633 <location filename="../widgets/lookup_dialog.cpp" line="425"/>
16341634 <source>Look Up References</source>
16351635 <translation type="unfinished"></translation>
16361636 </message>
16371637 <message>
1638 <location filename="../widgets/lookup_dialog.cpp" line="433"/>
1638 <location filename="../widgets/lookup_dialog.cpp" line="427"/>
16391639 <source>Enter class or method name...</source>
16401640 <translation type="unfinished"></translation>
16411641 </message>
16421642 <message>
1643 <location filename="../widgets/lookup_dialog.cpp" line="469"/>
1643 <location filename="../widgets/lookup_dialog.cpp" line="463"/>
16441644 <source>Introspection data not yet available</source>
16451645 <translation type="unfinished"></translation>
16461646 </message>
16551655 <message>
16561656 <location filename="../core/sc_process.cpp" line="67"/>
16571657 <location filename="../core/sc_process.cpp" line="71"/>
1658 <location filename="../core/sc_process.cpp" line="265"/>
1658 <location filename="../core/sc_process.cpp" line="266"/>
16591659 <source>Boot Interpreter</source>
16601660 <translation type="unfinished"></translation>
16611661 </message>
16621662 <message>
16631663 <location filename="../core/sc_process.cpp" line="75"/>
1664 <location filename="../core/sc_process.cpp" line="248"/>
1664 <location filename="../core/sc_process.cpp" line="249"/>
16651665 <source>Quit Interpreter</source>
16661666 <translation type="unfinished"></translation>
16671667 </message>
16931693 <translation type="unfinished"></translation>
16941694 </message>
16951695 <message>
1696 <location filename="../core/sc_process.cpp" line="113"/>
1696 <location filename="../core/sc_process.cpp" line="114"/>
16971697 <source>Interpreter is already running.</source>
16981698 <translation type="unfinished"></translation>
16991699 </message>
17001700 <message>
1701 <location filename="../core/sc_process.cpp" line="146"/>
1701 <location filename="../core/sc_process.cpp" line="147"/>
17021702 <source>Failed to start interpreter!</source>
17031703 <translation type="unfinished"></translation>
17041704 </message>
17051705 <message>
1706 <location filename="../core/sc_process.cpp" line="152"/>
1707 <location filename="../core/sc_process.cpp" line="163"/>
1708 <location filename="../core/sc_process.cpp" line="210"/>
1706 <location filename="../core/sc_process.cpp" line="153"/>
1707 <location filename="../core/sc_process.cpp" line="164"/>
1708 <location filename="../core/sc_process.cpp" line="211"/>
17091709 <source>Interpreter is not running!</source>
17101710 <translation type="unfinished"></translation>
17111711 </message>
17121712 <message>
1713 <location filename="../core/sc_process.cpp" line="181"/>
1713 <location filename="../core/sc_process.cpp" line="182"/>
17141714 <source>Failed to stop interpreter!</source>
17151715 <translation type="unfinished"></translation>
17161716 </message>
17171717 <message>
1718 <location filename="../core/sc_process.cpp" line="217"/>
1718 <location filename="../core/sc_process.cpp" line="218"/>
17191719 <source>Error when passing data to interpreter!</source>
17201720 <translation type="unfinished"></translation>
17211721 </message>
250250 <translation type="unfinished"></translation>
251251 </message>
252252 <message>
253 <location filename="../core/doc_manager.cpp" line="290"/>
254 <location filename="../core/doc_manager.cpp" line="297"/>
253 <location filename="../core/doc_manager.cpp" line="298"/>
254 <location filename="../core/doc_manager.cpp" line="305"/>
255255 <source>File Extension Changed</source>
256256 <translation type="unfinished"></translation>
257257 </message>
258258 <message>
259 <location filename="../core/doc_manager.cpp" line="291"/>
260 <location filename="../core/doc_manager.cpp" line="298"/>
259 <location filename="../core/doc_manager.cpp" line="299"/>
260 <location filename="../core/doc_manager.cpp" line="306"/>
261261 <source>The extension of the file has changed. Please reopen file to update editor mode</source>
262262 <translation type="unfinished"></translation>
263263 </message>
417417 <context>
418418 <name>ScIDE::HelpBrowserDocklet</name>
419419 <message>
420 <location filename="../widgets/help_browser.cpp" line="378"/>
420 <location filename="../widgets/help_browser.cpp" line="399"/>
421421 <source>Help browser</source>
422422 <translation type="unfinished"></translation>
423423 </message>
425425 <context>
426426 <name>ScIDE::HelpBrowserFindBox</name>
427427 <message>
428 <location filename="../widgets/help_browser.cpp" line="339"/>
428 <location filename="../widgets/help_browser.cpp" line="360"/>
429429 <source>Find...</source>
430430 <translation type="unfinished"></translation>
431431 </message>
441441 <context>
442442 <name>ScIDE::LookupDialog</name>
443443 <message>
444 <location filename="../widgets/lookup_dialog.cpp" line="186"/>
444 <location filename="../widgets/lookup_dialog.cpp" line="180"/>
445445 <source>Look Up Implementations</source>
446446 <translation type="unfinished"></translation>
447447 </message>
448448 <message>
449 <location filename="../widgets/lookup_dialog.cpp" line="188"/>
449 <location filename="../widgets/lookup_dialog.cpp" line="182"/>
450450 <source>Enter class or method name...</source>
451451 <translation type="unfinished"></translation>
452452 </message>
453453 <message>
454 <location filename="../widgets/lookup_dialog.cpp" line="203"/>
454 <location filename="../widgets/lookup_dialog.cpp" line="197"/>
455455 <source>Introspection data not yet available</source>
456456 <translation type="unfinished"></translation>
457457 </message>
458458 <message>
459 <location filename="../widgets/lookup_dialog.cpp" line="365"/>
459 <location filename="../widgets/lookup_dialog.cpp" line="359"/>
460460 <source>No result for query</source>
461461 <translation type="unfinished"></translation>
462462 </message>
464464 <context>
465465 <name>ScIDE::MainWindow</name>
466466 <message>
467 <location filename="../widgets/main_window.cpp" line="78"/>
468 <location filename="../widgets/main_window.cpp" line="822"/>
467 <location filename="../widgets/main_window.cpp" line="94"/>
468 <location filename="../widgets/main_window.cpp" line="855"/>
469469 <source>Inactive</source>
470470 <translation type="unfinished"></translation>
471471 </message>
472472 <message>
473 <location filename="../widgets/main_window.cpp" line="83"/>
473 <location filename="../widgets/main_window.cpp" line="99"/>
474474 <source>Interpreter:</source>
475475 <translation type="unfinished"></translation>
476476 </message>
477477 <message>
478 <location filename="../widgets/main_window.cpp" line="85"/>
478 <location filename="../widgets/main_window.cpp" line="101"/>
479479 <source>Server:</source>
480480 <translation type="unfinished"></translation>
481481 </message>
482482 <message>
483 <location filename="../widgets/main_window.cpp" line="93"/>
483 <location filename="../widgets/main_window.cpp" line="109"/>
484484 <source>Command Line:</source>
485485 <translation type="unfinished"></translation>
486486 </message>
487487 <message>
488 <location filename="../widgets/main_window.cpp" line="219"/>
488 <location filename="../widgets/main_window.cpp" line="235"/>
489489 <source>Text Editor</source>
490490 <translation type="unfinished"></translation>
491491 </message>
492492 <message>
493 <location filename="../widgets/main_window.cpp" line="220"/>
493 <location filename="../widgets/main_window.cpp" line="236"/>
494494 <source>Help</source>
495495 <translation type="unfinished"></translation>
496496 </message>
497497 <message>
498 <location filename="../widgets/main_window.cpp" line="224"/>
498 <location filename="../widgets/main_window.cpp" line="240"/>
499499 <source>&amp;Quit...</source>
500500 <translation type="unfinished"></translation>
501501 </message>
502502 <message>
503 <location filename="../widgets/main_window.cpp" line="225"/>
503 <location filename="../widgets/main_window.cpp" line="241"/>
504504 <source>Ctrl+Q</source>
505505 <comment>Quit application</comment>
506506 <translation type="unfinished"></translation>
507507 </message>
508508 <message>
509 <location filename="../widgets/main_window.cpp" line="226"/>
509 <location filename="../widgets/main_window.cpp" line="242"/>
510510 <source>Quit SuperCollider IDE</source>
511511 <translation type="unfinished"></translation>
512512 </message>
513513 <message>
514 <location filename="../widgets/main_window.cpp" line="231"/>
514 <location filename="../widgets/main_window.cpp" line="247"/>
515515 <source>&amp;New</source>
516516 <translation type="unfinished"></translation>
517517 </message>
518518 <message>
519 <location filename="../widgets/main_window.cpp" line="232"/>
519 <location filename="../widgets/main_window.cpp" line="248"/>
520520 <source>Ctrl+N</source>
521521 <comment>New document</comment>
522522 <translation type="unfinished"></translation>
523523 </message>
524524 <message>
525 <location filename="../widgets/main_window.cpp" line="233"/>
525 <location filename="../widgets/main_window.cpp" line="249"/>
526526 <source>Create a new document</source>
527527 <translation type="unfinished"></translation>
528528 </message>
529529 <message>
530 <location filename="../widgets/main_window.cpp" line="238"/>
530 <location filename="../widgets/main_window.cpp" line="254"/>
531531 <source>&amp;Open...</source>
532532 <translation type="unfinished"></translation>
533533 </message>
534534 <message>
535 <location filename="../widgets/main_window.cpp" line="239"/>
535 <location filename="../widgets/main_window.cpp" line="255"/>
536536 <source>Ctrl+O</source>
537537 <comment>Open document</comment>
538538 <translation type="unfinished"></translation>
539539 </message>
540540 <message>
541 <location filename="../widgets/main_window.cpp" line="240"/>
541 <location filename="../widgets/main_window.cpp" line="256"/>
542542 <source>Open an existing file</source>
543543 <translation type="unfinished"></translation>
544544 </message>
545545 <message>
546 <location filename="../widgets/main_window.cpp" line="245"/>
547 <location filename="../widgets/main_window.cpp" line="246"/>
546 <location filename="../widgets/main_window.cpp" line="261"/>
547 <location filename="../widgets/main_window.cpp" line="262"/>
548548 <source>Open startup file</source>
549549 <translation type="unfinished"></translation>
550550 </message>
551551 <message>
552 <location filename="../widgets/main_window.cpp" line="251"/>
552 <location filename="../widgets/main_window.cpp" line="267"/>
553553 <source>&amp;Save</source>
554554 <translation type="unfinished"></translation>
555555 </message>
556556 <message>
557 <location filename="../widgets/main_window.cpp" line="252"/>
557 <location filename="../widgets/main_window.cpp" line="268"/>
558558 <source>Ctrl+S</source>
559559 <comment>Save document</comment>
560560 <translation type="unfinished"></translation>
561561 </message>
562562 <message>
563 <location filename="../widgets/main_window.cpp" line="253"/>
563 <location filename="../widgets/main_window.cpp" line="269"/>
564564 <source>Save the current document</source>
565565 <translation type="unfinished"></translation>
566566 </message>
567567 <message>
568 <location filename="../widgets/main_window.cpp" line="258"/>
568 <location filename="../widgets/main_window.cpp" line="274"/>
569569 <source>Save &amp;As...</source>
570570 <translation type="unfinished"></translation>
571571 </message>
572572 <message>
573 <location filename="../widgets/main_window.cpp" line="259"/>
573 <location filename="../widgets/main_window.cpp" line="275"/>
574574 <source>Ctrl+Shift+S</source>
575575 <comment>Save &amp;As...</comment>
576576 <translation type="unfinished"></translation>
577577 </message>
578578 <message>
579 <location filename="../widgets/main_window.cpp" line="260"/>
579 <location filename="../widgets/main_window.cpp" line="276"/>
580580 <source>Save the current document into a different file</source>
581581 <translation type="unfinished"></translation>
582582 </message>
583583 <message>
584 <location filename="../widgets/main_window.cpp" line="265"/>
584 <location filename="../widgets/main_window.cpp" line="281"/>
585585 <source>Save All...</source>
586586 <translation type="unfinished"></translation>
587587 </message>
588588 <message>
589 <location filename="../widgets/main_window.cpp" line="266"/>
589 <location filename="../widgets/main_window.cpp" line="282"/>
590590 <source>Ctrl+Alt+S</source>
591591 <comment>Save all documents</comment>
592592 <translation type="unfinished"></translation>
593593 </message>
594594 <message>
595 <location filename="../widgets/main_window.cpp" line="267"/>
595 <location filename="../widgets/main_window.cpp" line="283"/>
596596 <source>Save all open documents</source>
597597 <translation type="unfinished"></translation>
598598 </message>
599599 <message>
600 <location filename="../widgets/main_window.cpp" line="272"/>
600 <location filename="../widgets/main_window.cpp" line="288"/>
601601 <source>&amp;Close</source>
602602 <translation type="unfinished"></translation>
603603 </message>
604604 <message>
605 <location filename="../widgets/main_window.cpp" line="273"/>
605 <location filename="../widgets/main_window.cpp" line="289"/>
606606 <source>Ctrl+W</source>
607607 <comment>Close document</comment>
608608 <translation type="unfinished"></translation>
609609 </message>
610610 <message>
611 <location filename="../widgets/main_window.cpp" line="274"/>
611 <location filename="../widgets/main_window.cpp" line="290"/>
612612 <source>Close the current document</source>
613613 <translation type="unfinished"></translation>
614614 </message>
615615 <message>
616 <location filename="../widgets/main_window.cpp" line="279"/>
616 <location filename="../widgets/main_window.cpp" line="295"/>
617617 <source>Close All...</source>
618618 <translation type="unfinished"></translation>
619619 </message>
620620 <message>
621 <location filename="../widgets/main_window.cpp" line="280"/>
621 <location filename="../widgets/main_window.cpp" line="296"/>
622622 <source>Ctrl+Shift+W</source>
623623 <comment>Close all documents</comment>
624624 <translation type="unfinished"></translation>
625625 </message>
626626 <message>
627 <location filename="../widgets/main_window.cpp" line="281"/>
627 <location filename="../widgets/main_window.cpp" line="297"/>
628628 <source>Close all documents</source>
629629 <translation type="unfinished"></translation>
630630 </message>
631631 <message>
632 <location filename="../widgets/main_window.cpp" line="286"/>
632 <location filename="../widgets/main_window.cpp" line="302"/>
633633 <source>&amp;Reload</source>
634634 <translation type="unfinished"></translation>
635635 </message>
636636 <message>
637 <location filename="../widgets/main_window.cpp" line="287"/>
637 <location filename="../widgets/main_window.cpp" line="303"/>
638638 <source>F5</source>
639639 <comment>Reload document</comment>
640640 <translation type="unfinished"></translation>
641641 </message>
642642 <message>
643 <location filename="../widgets/main_window.cpp" line="288"/>
643 <location filename="../widgets/main_window.cpp" line="304"/>
644644 <source>Reload the current document</source>
645645 <translation type="unfinished"></translation>
646646 </message>
647647 <message>
648 <location filename="../widgets/main_window.cpp" line="292"/>
648 <location filename="../widgets/main_window.cpp" line="308"/>
649649 <source>Clear</source>
650650 <comment>Clear recent documents</comment>
651651 <translation type="unfinished"></translation>
652652 </message>
653653 <message>
654 <location filename="../widgets/main_window.cpp" line="293"/>
654 <location filename="../widgets/main_window.cpp" line="309"/>
655655 <source>Clear list of recent documents</source>
656656 <translation type="unfinished"></translation>
657657 </message>
658658 <message>
659 <location filename="../widgets/main_window.cpp" line="300"/>
659 <location filename="../widgets/main_window.cpp" line="316"/>
660660 <source>&amp;New Session</source>
661661 <translation type="unfinished"></translation>
662662 </message>
663663 <message>
664 <location filename="../widgets/main_window.cpp" line="301"/>
664 <location filename="../widgets/main_window.cpp" line="317"/>
665665 <source>Open a new session</source>
666666 <translation type="unfinished"></translation>
667667 </message>
668668 <message>
669 <location filename="../widgets/main_window.cpp" line="306"/>
669 <location filename="../widgets/main_window.cpp" line="322"/>
670670 <source>Save Session &amp;As...</source>
671671 <translation type="unfinished"></translation>
672672 </message>
673673 <message>
674 <location filename="../widgets/main_window.cpp" line="307"/>
674 <location filename="../widgets/main_window.cpp" line="323"/>
675675 <source>Save the current session with a different name</source>
676676 <translation type="unfinished"></translation>
677677 </message>
678678 <message>
679 <location filename="../widgets/main_window.cpp" line="312"/>
679 <location filename="../widgets/main_window.cpp" line="328"/>
680680 <source>&amp;Manage Sessions...</source>
681681 <translation type="unfinished"></translation>
682682 </message>
683683 <message>
684 <location filename="../widgets/main_window.cpp" line="317"/>
684 <location filename="../widgets/main_window.cpp" line="333"/>
685685 <source>&amp;Switch Session...</source>
686686 <translation type="unfinished"></translation>
687687 </message>
688688 <message>
689 <location filename="../widgets/main_window.cpp" line="319"/>
689 <location filename="../widgets/main_window.cpp" line="335"/>
690690 <source>Ctrl+Shift+Q</source>
691691 <comment>Switch Session</comment>
692692 <translation type="unfinished"></translation>
693693 </message>
694694 <message>
695 <location filename="../widgets/main_window.cpp" line="324"/>
695 <location filename="../widgets/main_window.cpp" line="340"/>
696696 <source>&amp;Find...</source>
697697 <translation type="unfinished"></translation>
698698 </message>
699699 <message>
700 <location filename="../widgets/main_window.cpp" line="325"/>
700 <location filename="../widgets/main_window.cpp" line="341"/>
701701 <source>Ctrl+F</source>
702702 <comment>Find</comment>
703703 <translation type="unfinished"></translation>
704704 </message>
705705 <message>
706 <location filename="../widgets/main_window.cpp" line="326"/>
706 <location filename="../widgets/main_window.cpp" line="342"/>
707707 <source>Find text in document</source>
708708 <translation type="unfinished"></translation>
709709 </message>
710710 <message>
711 <location filename="../widgets/main_window.cpp" line="331"/>
711 <location filename="../widgets/main_window.cpp" line="347"/>
712712 <source>&amp;Replace...</source>
713713 <translation type="unfinished"></translation>
714714 </message>
715715 <message>
716 <location filename="../widgets/main_window.cpp" line="332"/>
716 <location filename="../widgets/main_window.cpp" line="348"/>
717717 <source>Ctrl+R</source>
718718 <comment>Replace</comment>
719719 <translation type="unfinished"></translation>
720720 </message>
721721 <message>
722 <location filename="../widgets/main_window.cpp" line="333"/>
722 <location filename="../widgets/main_window.cpp" line="349"/>
723723 <source>Find and replace text in document</source>
724724 <translation type="unfinished"></translation>
725725 </message>
726726 <message>
727 <location filename="../widgets/main_window.cpp" line="338"/>
727 <location filename="../widgets/main_window.cpp" line="354"/>
728728 <source>&amp;Command Line</source>
729729 <translation type="unfinished"></translation>
730730 </message>
731731 <message>
732 <location filename="../widgets/main_window.cpp" line="339"/>
732 <location filename="../widgets/main_window.cpp" line="355"/>
733733 <source>Command line for quick code evaluation</source>
734734 <translation type="unfinished"></translation>
735735 </message>
736736 <message>
737 <location filename="../widgets/main_window.cpp" line="340"/>
737 <location filename="../widgets/main_window.cpp" line="356"/>
738738 <source>Ctrl+E</source>
739739 <comment>Show command line</comment>
740740 <translation type="unfinished"></translation>
741741 </message>
742742 <message>
743 <location filename="../widgets/main_window.cpp" line="344"/>
743 <location filename="../widgets/main_window.cpp" line="360"/>
744744 <source>&amp;Go To Line</source>
745745 <translation type="unfinished"></translation>
746746 </message>
747747 <message>
748 <location filename="../widgets/main_window.cpp" line="345"/>
748 <location filename="../widgets/main_window.cpp" line="361"/>
749749 <source>Tool to jump to a line by number</source>
750750 <translation type="unfinished"></translation>
751751 </message>
752752 <message>
753 <location filename="../widgets/main_window.cpp" line="346"/>
753 <location filename="../widgets/main_window.cpp" line="362"/>
754754 <source>Ctrl+L</source>
755755 <comment>Show go-to-line tool</comment>
756756 <translation type="unfinished"></translation>
757757 </message>
758758 <message>
759 <location filename="../widgets/main_window.cpp" line="351"/>
759 <location filename="../widgets/main_window.cpp" line="367"/>
760760 <source>&amp;Close Tool Panel</source>
761761 <translation type="unfinished"></translation>
762762 </message>
763763 <message>
764 <location filename="../widgets/main_window.cpp" line="352"/>
764 <location filename="../widgets/main_window.cpp" line="368"/>
765765 <source>Close any open tool panel</source>
766766 <translation type="unfinished"></translation>
767767 </message>
768768 <message>
769 <location filename="../widgets/main_window.cpp" line="353"/>
769 <location filename="../widgets/main_window.cpp" line="369"/>
770770 <source>Esc</source>
771771 <comment>Close tool box</comment>
772772 <translation type="unfinished"></translation>
773773 </message>
774774 <message>
775 <location filename="../widgets/main_window.cpp" line="357"/>
775 <location filename="../widgets/main_window.cpp" line="373"/>
776776 <source>&amp;Full Screen</source>
777777 <translation type="unfinished"></translation>
778778 </message>
779779 <message>
780 <location filename="../widgets/main_window.cpp" line="359"/>
780 <location filename="../widgets/main_window.cpp" line="375"/>
781781 <source>Ctrl+Shift+F</source>
782782 <comment>Show ScIDE in Full Screen</comment>
783783 <translation type="unfinished"></translation>
784784 </message>
785785 <message>
786 <location filename="../widgets/main_window.cpp" line="363"/>
786 <location filename="../widgets/main_window.cpp" line="379"/>
787787 <source>Focus Post Window</source>
788788 <translation type="unfinished"></translation>
789789 </message>
790790 <message>
791 <location filename="../widgets/main_window.cpp" line="364"/>
791 <location filename="../widgets/main_window.cpp" line="380"/>
792792 <source>Focus post window</source>
793793 <translation type="unfinished"></translation>
794794 </message>
795795 <message>
796 <location filename="../widgets/main_window.cpp" line="365"/>
796 <location filename="../widgets/main_window.cpp" line="381"/>
797797 <source>Ctrl+P</source>
798798 <comment>Focus post window</comment>
799799 <translation type="unfinished"></translation>
800800 </message>
801801 <message>
802 <location filename="../widgets/main_window.cpp" line="371"/>
802 <location filename="../widgets/main_window.cpp" line="387"/>
803803 <source>Look Up Implementations...</source>
804804 <translation type="unfinished"></translation>
805805 </message>
806806 <message>
807 <location filename="../widgets/main_window.cpp" line="372"/>
807 <location filename="../widgets/main_window.cpp" line="388"/>
808808 <source>Ctrl+Shift+I</source>
809809 <comment>Look Up Implementations</comment>
810810 <translation type="unfinished"></translation>
811811 </message>
812812 <message>
813 <location filename="../widgets/main_window.cpp" line="373"/>
813 <location filename="../widgets/main_window.cpp" line="389"/>
814814 <source>Open dialog to look up implementations of a class or a method</source>
815815 <translation type="unfinished"></translation>
816816 </message>
817817 <message>
818 <location filename="../widgets/main_window.cpp" line="377"/>
818 <location filename="../widgets/main_window.cpp" line="393"/>
819819 <source>Look Up Implementations for Cursor</source>
820820 <translation type="unfinished"></translation>
821821 </message>
822822 <message>
823 <location filename="../widgets/main_window.cpp" line="378"/>
823 <location filename="../widgets/main_window.cpp" line="394"/>
824824 <source>Ctrl+I</source>
825825 <comment>Look Up Implementations for Cursor</comment>
826826 <translation type="unfinished"></translation>
827827 </message>
828828 <message>
829 <location filename="../widgets/main_window.cpp" line="379"/>
829 <location filename="../widgets/main_window.cpp" line="395"/>
830830 <source>Look up implementations of class or method under cursor</source>
831831 <translation type="unfinished"></translation>
832832 </message>
833833 <message>
834 <location filename="../widgets/main_window.cpp" line="384"/>
834 <location filename="../widgets/main_window.cpp" line="400"/>
835835 <source>Look Up References...</source>
836836 <translation type="unfinished"></translation>
837837 </message>
838838 <message>
839 <location filename="../widgets/main_window.cpp" line="385"/>
839 <location filename="../widgets/main_window.cpp" line="401"/>
840840 <source>Ctrl+Shift+U</source>
841841 <comment>Look Up References</comment>
842842 <translation type="unfinished"></translation>
843843 </message>
844844 <message>
845 <location filename="../widgets/main_window.cpp" line="386"/>
845 <location filename="../widgets/main_window.cpp" line="402"/>
846846 <source>Open dialog to look up references to a class or a method</source>
847847 <translation type="unfinished"></translation>
848848 </message>
849849 <message>
850 <location filename="../widgets/main_window.cpp" line="390"/>
850 <location filename="../widgets/main_window.cpp" line="406"/>
851851 <source>Look Up References for Cursor</source>
852852 <translation type="unfinished"></translation>
853853 </message>
854854 <message>
855 <location filename="../widgets/main_window.cpp" line="391"/>
855 <location filename="../widgets/main_window.cpp" line="407"/>
856856 <source>Ctrl+U</source>
857857 <comment>Look Up References For Selection</comment>
858858 <translation type="unfinished"></translation>
859859 </message>
860860 <message>
861 <location filename="../widgets/main_window.cpp" line="392"/>
861 <location filename="../widgets/main_window.cpp" line="408"/>
862862 <source>Look up references to class or method under cursor</source>
863863 <translation type="unfinished"></translation>
864864 </message>
865865 <message>
866 <location filename="../widgets/main_window.cpp" line="397"/>
866 <location filename="../widgets/main_window.cpp" line="413"/>
867867 <source>&amp;Preferences</source>
868868 <translation type="unfinished"></translation>
869869 </message>
870870 <message>
871 <location filename="../widgets/main_window.cpp" line="399"/>
871 <location filename="../widgets/main_window.cpp" line="415"/>
872872 <source>Ctrl+,</source>
873873 <comment>Show configuration dialog</comment>
874874 <translation type="unfinished"></translation>
875875 </message>
876876 <message>
877 <location filename="../widgets/main_window.cpp" line="401"/>
877 <location filename="../widgets/main_window.cpp" line="417"/>
878878 <source>Show configuration dialog</source>
879879 <translation type="unfinished"></translation>
880880 </message>
881881 <message>
882 <location filename="../widgets/main_window.cpp" line="407"/>
882 <location filename="../widgets/main_window.cpp" line="423"/>
883883 <source>Open &amp;Help Browser</source>
884884 <translation type="unfinished"></translation>
885885 </message>
886886 <message>
887 <location filename="../widgets/main_window.cpp" line="408"/>
887 <location filename="../widgets/main_window.cpp" line="424"/>
888888 <source>Open help</source>
889889 <translation type="unfinished"></translation>
890890 </message>
891891 <message>
892 <location filename="../widgets/main_window.cpp" line="413"/>
892 <location filename="../widgets/main_window.cpp" line="429"/>
893893 <source>Look Up Documentation for Cursor</source>
894894 <translation type="unfinished"></translation>
895895 </message>
896896 <message>
897 <location filename="../widgets/main_window.cpp" line="414"/>
897 <location filename="../widgets/main_window.cpp" line="430"/>
898898 <source>Ctrl+D</source>
899899 <comment>Look Up Documentation for Cursor</comment>
900900 <translation type="unfinished"></translation>
901901 </message>
902902 <message>
903 <location filename="../widgets/main_window.cpp" line="415"/>
903 <location filename="../widgets/main_window.cpp" line="431"/>
904904 <source>Look up documentation for text under cursor</source>
905905 <translation type="unfinished"></translation>
906906 </message>
907907 <message>
908 <location filename="../widgets/main_window.cpp" line="420"/>
908 <location filename="../widgets/main_window.cpp" line="436"/>
909909 <source>Look Up Documentation...</source>
910910 <translation type="unfinished"></translation>
911911 </message>
912912 <message>
913 <location filename="../widgets/main_window.cpp" line="421"/>
913 <location filename="../widgets/main_window.cpp" line="437"/>
914914 <source>Ctrl+Shift+D</source>
915915 <comment>Look Up Documentation</comment>
916916 <translation type="unfinished"></translation>
917917 </message>
918918 <message>
919 <location filename="../widgets/main_window.cpp" line="422"/>
919 <location filename="../widgets/main_window.cpp" line="438"/>
920920 <source>Enter text to look up in documentation</source>
921921 <translation type="unfinished"></translation>
922922 </message>
923923 <message>
924 <location filename="../widgets/main_window.cpp" line="427"/>
924 <location filename="../widgets/main_window.cpp" line="443"/>
925925 <source>&amp;About SuperCollider</source>
926926 <translation type="unfinished"></translation>
927927 </message>
928928 <message>
929 <location filename="../widgets/main_window.cpp" line="432"/>
929 <location filename="../widgets/main_window.cpp" line="448"/>
930930 <source>About &amp;Qt</source>
931931 <translation type="unfinished"></translation>
932932 </message>
933933 <message>
934 <location filename="../widgets/main_window.cpp" line="439"/>
934 <location filename="../widgets/main_window.cpp" line="455"/>
935935 <source>Show/hide Post docklet</source>
936936 <translation type="unfinished"></translation>
937937 </message>
938938 <message>
939 <location filename="../widgets/main_window.cpp" line="445"/>
939 <location filename="../widgets/main_window.cpp" line="461"/>
940940 <source>Show/hide Documents docklet</source>
941941 <translation type="unfinished"></translation>
942942 </message>
943943 <message>
944 <location filename="../widgets/main_window.cpp" line="451"/>
944 <location filename="../widgets/main_window.cpp" line="467"/>
945945 <source>Show/hide Help browser docklet</source>
946946 <translation type="unfinished"></translation>
947947 </message>
948948 <message>
949 <location filename="../widgets/main_window.cpp" line="461"/>
949 <location filename="../widgets/main_window.cpp" line="494"/>
950950 <source>&amp;File</source>
951951 <translation type="unfinished"></translation>
952952 </message>
953953 <message>
954 <location filename="../widgets/main_window.cpp" line="464"/>
954 <location filename="../widgets/main_window.cpp" line="497"/>
955955 <source>Open Recent</source>
956956 <comment>Open a recent document</comment>
957957 <translation type="unfinished"></translation>
958958 </message>
959959 <message>
960 <location filename="../widgets/main_window.cpp" line="481"/>
960 <location filename="../widgets/main_window.cpp" line="514"/>
961961 <source>&amp;Session</source>
962962 <translation type="unfinished"></translation>
963963 </message>
964964 <message>
965 <location filename="../widgets/main_window.cpp" line="484"/>
965 <location filename="../widgets/main_window.cpp" line="517"/>
966966 <source>&amp;Open Session</source>
967967 <translation type="unfinished"></translation>
968968 </message>
969969 <message>
970 <location filename="../widgets/main_window.cpp" line="495"/>
970 <location filename="../widgets/main_window.cpp" line="528"/>
971971 <source>&amp;Edit</source>
972972 <translation type="unfinished"></translation>
973973 </message>
974974 <message>
975 <location filename="../widgets/main_window.cpp" line="519"/>
975 <location filename="../widgets/main_window.cpp" line="552"/>
976976 <source>&amp;View</source>
977977 <translation type="unfinished"></translation>
978978 </message>
979979 <message>
980 <location filename="../widgets/main_window.cpp" line="520"/>
980 <location filename="../widgets/main_window.cpp" line="553"/>
981981 <source>&amp;Docklets</source>
982982 <translation type="unfinished"></translation>
983983 </message>
984984 <message>
985 <location filename="../widgets/main_window.cpp" line="526"/>
985 <location filename="../widgets/main_window.cpp" line="559"/>
986986 <source>&amp;Tool Panels</source>
987987 <translation type="unfinished"></translation>
988988 </message>
989989 <message>
990 <location filename="../widgets/main_window.cpp" line="554"/>
990 <location filename="../widgets/main_window.cpp" line="587"/>
991991 <source>&amp;Language</source>
992992 <translation type="unfinished"></translation>
993993 </message>
994994 <message>
995 <location filename="../widgets/main_window.cpp" line="577"/>
995 <location filename="../widgets/main_window.cpp" line="610"/>
996996 <source>&amp;Help</source>
997997 <translation type="unfinished"></translation>
998998 </message>
999999 <message>
1000 <location filename="../widgets/main_window.cpp" line="697"/>
1000 <location filename="../widgets/main_window.cpp" line="730"/>
10011001 <source>Save Current Session</source>
10021002 <translation type="unfinished"></translation>
10031003 </message>
10041004 <message>
1005 <location filename="../widgets/main_window.cpp" line="698"/>
1005 <location filename="../widgets/main_window.cpp" line="731"/>
10061006 <source>Enter a name for the session:</source>
10071007 <translation type="unfinished"></translation>
10081008 </message>
10091009 <message>
1010 <location filename="../widgets/main_window.cpp" line="827"/>
1010 <location filename="../widgets/main_window.cpp" line="860"/>
10111011 <source>Booting</source>
10121012 <translation type="unfinished"></translation>
10131013 </message>
10141014 <message>
1015 <location filename="../widgets/main_window.cpp" line="834"/>
1015 <location filename="../widgets/main_window.cpp" line="867"/>
10161016 <source>Active</source>
10171017 <translation type="unfinished"></translation>
10181018 </message>
10191019 <message>
1020 <location filename="../widgets/main_window.cpp" line="878"/>
1021 <location filename="../widgets/main_window.cpp" line="910"/>
1020 <location filename="../widgets/main_window.cpp" line="911"/>
1021 <location filename="../widgets/main_window.cpp" line="943"/>
10221022 <source>SuperCollider IDE</source>
10231023 <translation type="unfinished"></translation>
10241024 </message>
10251025 <message>
1026 <location filename="../widgets/main_window.cpp" line="879"/>
1026 <location filename="../widgets/main_window.cpp" line="912"/>
10271027 <source>There are unsaved changes in document &apos;%1&apos;.
10281028
10291029 Do you want to save it?</source>
10301030 <translation type="unfinished"></translation>
10311031 </message>
10321032 <message>
1033 <location filename="../widgets/main_window.cpp" line="911"/>
1033 <location filename="../widgets/main_window.cpp" line="944"/>
10341034 <source>There are unsaved changes in document &apos;%1&apos;.
10351035
10361036 Do you want to reload it?</source>
10371037 <translation type="unfinished"></translation>
10381038 </message>
10391039 <message>
1040 <location filename="../widgets/main_window.cpp" line="938"/>
1040 <location filename="../widgets/main_window.cpp" line="971"/>
10411041 <source>Saving read-only file</source>
10421042 <translation type="unfinished"></translation>
10431043 </message>
10441044 <message>
1045 <location filename="../widgets/main_window.cpp" line="939"/>
1045 <location filename="../widgets/main_window.cpp" line="972"/>
10461046 <source>File is read-only. Please select a new location to save to.</source>
10471047 <translation type="unfinished"></translation>
10481048 </message>
10491049 <message>
1050 <location filename="../widgets/main_window.cpp" line="950"/>
1050 <location filename="../widgets/main_window.cpp" line="983"/>
10511051 <source>SuperCollider Document (*.scd)</source>
10521052 <translation type="unfinished"></translation>
10531053 </message>
10541054 <message>
1055 <location filename="../widgets/main_window.cpp" line="951"/>
1055 <location filename="../widgets/main_window.cpp" line="984"/>
10561056 <source>SuperCollider Class file (*.sc)</source>
10571057 <translation type="unfinished"></translation>
10581058 </message>
10591059 <message>
1060 <location filename="../widgets/main_window.cpp" line="953"/>
1061 <location filename="../widgets/main_window.cpp" line="1002"/>
1060 <location filename="../widgets/main_window.cpp" line="986"/>
1061 <location filename="../widgets/main_window.cpp" line="1035"/>
10621062 <source>All files (*)</source>
10631063 <translation type="unfinished"></translation>
10641064 </message>
10651065 <message>
1066 <location filename="../widgets/main_window.cpp" line="1003"/>
1066 <location filename="../widgets/main_window.cpp" line="1036"/>
10671067 <source>SuperCollider (*.scd *.sc)</source>
10681068 <translation type="unfinished"></translation>
10691069 </message>
10701070 <message>
1071 <location filename="../widgets/main_window.cpp" line="1004"/>
1071 <location filename="../widgets/main_window.cpp" line="1037"/>
10721072 <source>SCDoc (*.schelp)</source>
10731073 <translation type="unfinished"></translation>
10741074 </message>
10751075 <message>
1076 <location filename="../widgets/main_window.cpp" line="1148"/>
1076 <location filename="../widgets/main_window.cpp" line="1181"/>
10771077 <source>Untitled</source>
10781078 <translation type="unfinished"></translation>
10791079 </message>
10801080 <message>
1081 <location filename="../widgets/main_window.cpp" line="1274"/>
1081 <location filename="../widgets/main_window.cpp" line="1311"/>
10821082 <source>About SuperCollider IDE</source>
10831083 <translation type="unfinished"></translation>
10841084 </message>
10851085 <message>
1086 <location filename="../widgets/main_window.cpp" line="1356"/>
1086 <location filename="../widgets/main_window.cpp" line="1393"/>
10871087 <source>Look up Documentation For</source>
10881088 <translation type="unfinished"></translation>
10891089 </message>
10901090 <message>
1091 <location filename="../widgets/main_window.cpp" line="1405"/>
1091 <location filename="../widgets/main_window.cpp" line="1448"/>
10921092 <source>Open binary file?</source>
10931093 <translation type="unfinished"></translation>
10941094 </message>
10951095 <message>
1096 <location filename="../widgets/main_window.cpp" line="1406"/>
1096 <location filename="../widgets/main_window.cpp" line="1449"/>
10971097 <source>
10981098
10991099 The file has an unrecognized extension. It may be a binary file. Would you still like to open it?</source>
15531553 <context>
15541554 <name>ScIDE::PostDocklet</name>
15551555 <message>
1556 <location filename="../widgets/post_window.cpp" line="294"/>
1556 <location filename="../widgets/post_window.cpp" line="304"/>
15571557 <source>Post window</source>
15581558 <translation type="unfinished"></translation>
15591559 </message>
15611561 <context>
15621562 <name>ScIDE::PostWindow</name>
15631563 <message>
1564 <location filename="../widgets/post_window.cpp" line="64"/>
1564 <location filename="../widgets/post_window.cpp" line="65"/>
15651565 <source>Post Window</source>
15661566 <translation type="unfinished"></translation>
15671567 </message>
15681568 <message>
1569 <location filename="../widgets/post_window.cpp" line="66"/>
1569 <location filename="../widgets/post_window.cpp" line="67"/>
15701570 <source>Copy</source>
15711571 <translation type="unfinished"></translation>
15721572 </message>
15731573 <message>
1574 <location filename="../widgets/post_window.cpp" line="74"/>
1574 <location filename="../widgets/post_window.cpp" line="75"/>
15751575 <source>Clear</source>
15761576 <translation type="unfinished"></translation>
15771577 </message>
15781578 <message>
1579 <location filename="../widgets/post_window.cpp" line="75"/>
1579 <location filename="../widgets/post_window.cpp" line="76"/>
15801580 <source>Clear post window</source>
15811581 <translation type="unfinished"></translation>
15821582 </message>
15831583 <message>
1584 <location filename="../widgets/post_window.cpp" line="77"/>
1584 <location filename="../widgets/post_window.cpp" line="78"/>
15851585 <source>Ctrl+Shift+P</source>
15861586 <comment>Clear post window</comment>
15871587 <translation type="unfinished"></translation>
15881588 </message>
15891589 <message>
1590 <location filename="../widgets/post_window.cpp" line="86"/>
1590 <location filename="../widgets/post_window.cpp" line="87"/>
15911591 <source>Enlarge Font</source>
15921592 <translation type="unfinished"></translation>
15931593 </message>
15941594 <message>
1595 <location filename="../widgets/post_window.cpp" line="88"/>
1595 <location filename="../widgets/post_window.cpp" line="89"/>
15961596 <source>Enlarge post window font</source>
15971597 <translation type="unfinished"></translation>
15981598 </message>
15991599 <message>
1600 <location filename="../widgets/post_window.cpp" line="92"/>
1600 <location filename="../widgets/post_window.cpp" line="93"/>
16011601 <source>Shrink Font</source>
16021602 <translation type="unfinished"></translation>
16031603 </message>
16041604 <message>
1605 <location filename="../widgets/post_window.cpp" line="94"/>
1605 <location filename="../widgets/post_window.cpp" line="95"/>
16061606 <source>Shrink post window font</source>
16071607 <translation type="unfinished"></translation>
16081608 </message>
16091609 <message>
1610 <location filename="../widgets/post_window.cpp" line="102"/>
1610 <location filename="../widgets/post_window.cpp" line="103"/>
16111611 <source>Wrap Text</source>
16121612 <translation type="unfinished"></translation>
16131613 </message>
16141614 <message>
1615 <location filename="../widgets/post_window.cpp" line="103"/>
1615 <location filename="../widgets/post_window.cpp" line="104"/>
16161616 <source>Wrap lines wider than the post window</source>
16171617 <translation type="unfinished"></translation>
16181618 </message>
16191619 <message>
1620 <location filename="../widgets/post_window.cpp" line="109"/>
1620 <location filename="../widgets/post_window.cpp" line="110"/>
16211621 <source>Auto Scroll</source>
16221622 <translation type="unfinished"></translation>
16231623 </message>
16241624 <message>
1625 <location filename="../widgets/post_window.cpp" line="110"/>
1625 <location filename="../widgets/post_window.cpp" line="111"/>
16261626 <source>Scroll to bottom on new posts</source>
16271627 <translation type="unfinished"></translation>
16281628 </message>
16301630 <context>
16311631 <name>ScIDE::ReferencesDialog</name>
16321632 <message>
1633 <location filename="../widgets/lookup_dialog.cpp" line="431"/>
1633 <location filename="../widgets/lookup_dialog.cpp" line="425"/>
16341634 <source>Look Up References</source>
16351635 <translation type="unfinished"></translation>
16361636 </message>
16371637 <message>
1638 <location filename="../widgets/lookup_dialog.cpp" line="433"/>
1638 <location filename="../widgets/lookup_dialog.cpp" line="427"/>
16391639 <source>Enter class or method name...</source>
16401640 <translation type="unfinished"></translation>
16411641 </message>
16421642 <message>
1643 <location filename="../widgets/lookup_dialog.cpp" line="469"/>
1643 <location filename="../widgets/lookup_dialog.cpp" line="463"/>
16441644 <source>Introspection data not yet available</source>
16451645 <translation type="unfinished"></translation>
16461646 </message>
16551655 <message>
16561656 <location filename="../core/sc_process.cpp" line="67"/>
16571657 <location filename="../core/sc_process.cpp" line="71"/>
1658 <location filename="../core/sc_process.cpp" line="265"/>
1658 <location filename="../core/sc_process.cpp" line="266"/>
16591659 <source>Boot Interpreter</source>
16601660 <translation type="unfinished"></translation>
16611661 </message>
16621662 <message>
16631663 <location filename="../core/sc_process.cpp" line="75"/>
1664 <location filename="../core/sc_process.cpp" line="248"/>
1664 <location filename="../core/sc_process.cpp" line="249"/>
16651665 <source>Quit Interpreter</source>
16661666 <translation type="unfinished"></translation>
16671667 </message>
16931693 <translation type="unfinished"></translation>
16941694 </message>
16951695 <message>
1696 <location filename="../core/sc_process.cpp" line="113"/>
1696 <location filename="../core/sc_process.cpp" line="114"/>
16971697 <source>Interpreter is already running.</source>
16981698 <translation type="unfinished"></translation>
16991699 </message>
17001700 <message>
1701 <location filename="../core/sc_process.cpp" line="146"/>
1701 <location filename="../core/sc_process.cpp" line="147"/>
17021702 <source>Failed to start interpreter!</source>
17031703 <translation type="unfinished"></translation>
17041704 </message>
17051705 <message>
1706 <location filename="../core/sc_process.cpp" line="152"/>
1707 <location filename="../core/sc_process.cpp" line="163"/>
1708 <location filename="../core/sc_process.cpp" line="210"/>
1706 <location filename="../core/sc_process.cpp" line="153"/>
1707 <location filename="../core/sc_process.cpp" line="164"/>
1708 <location filename="../core/sc_process.cpp" line="211"/>
17091709 <source>Interpreter is not running!</source>
17101710 <translation type="unfinished"></translation>
17111711 </message>
17121712 <message>
1713 <location filename="../core/sc_process.cpp" line="181"/>
1713 <location filename="../core/sc_process.cpp" line="182"/>
17141714 <source>Failed to stop interpreter!</source>
17151715 <translation type="unfinished"></translation>
17161716 </message>
17171717 <message>
1718 <location filename="../core/sc_process.cpp" line="217"/>
1718 <location filename="../core/sc_process.cpp" line="218"/>
17191719 <source>Error when passing data to interpreter!</source>
17201720 <translation type="unfinished"></translation>
17211721 </message>
250250 <translation type="unfinished"></translation>
251251 </message>
252252 <message>
253 <location filename="../core/doc_manager.cpp" line="290"/>
254 <location filename="../core/doc_manager.cpp" line="297"/>
253 <location filename="../core/doc_manager.cpp" line="298"/>
254 <location filename="../core/doc_manager.cpp" line="305"/>
255255 <source>File Extension Changed</source>
256256 <translation type="unfinished"></translation>
257257 </message>
258258 <message>
259 <location filename="../core/doc_manager.cpp" line="291"/>
260 <location filename="../core/doc_manager.cpp" line="298"/>
259 <location filename="../core/doc_manager.cpp" line="299"/>
260 <location filename="../core/doc_manager.cpp" line="306"/>
261261 <source>The extension of the file has changed. Please reopen file to update editor mode</source>
262262 <translation type="unfinished"></translation>
263263 </message>
417417 <context>
418418 <name>ScIDE::HelpBrowserDocklet</name>
419419 <message>
420 <location filename="../widgets/help_browser.cpp" line="378"/>
420 <location filename="../widgets/help_browser.cpp" line="399"/>
421421 <source>Help browser</source>
422422 <translation type="unfinished"></translation>
423423 </message>
425425 <context>
426426 <name>ScIDE::HelpBrowserFindBox</name>
427427 <message>
428 <location filename="../widgets/help_browser.cpp" line="339"/>
428 <location filename="../widgets/help_browser.cpp" line="360"/>
429429 <source>Find...</source>
430430 <translation type="unfinished"></translation>
431431 </message>
441441 <context>
442442 <name>ScIDE::LookupDialog</name>
443443 <message>
444 <location filename="../widgets/lookup_dialog.cpp" line="186"/>
444 <location filename="../widgets/lookup_dialog.cpp" line="180"/>
445445 <source>Look Up Implementations</source>
446446 <translation type="unfinished"></translation>
447447 </message>
448448 <message>
449 <location filename="../widgets/lookup_dialog.cpp" line="188"/>
449 <location filename="../widgets/lookup_dialog.cpp" line="182"/>
450450 <source>Enter class or method name...</source>
451451 <translation type="unfinished"></translation>
452452 </message>
453453 <message>
454 <location filename="../widgets/lookup_dialog.cpp" line="203"/>
454 <location filename="../widgets/lookup_dialog.cpp" line="197"/>
455455 <source>Introspection data not yet available</source>
456456 <translation type="unfinished"></translation>
457457 </message>
458458 <message>
459 <location filename="../widgets/lookup_dialog.cpp" line="365"/>
459 <location filename="../widgets/lookup_dialog.cpp" line="359"/>
460460 <source>No result for query</source>
461461 <translation type="unfinished"></translation>
462462 </message>
464464 <context>
465465 <name>ScIDE::MainWindow</name>
466466 <message>
467 <location filename="../widgets/main_window.cpp" line="78"/>
468 <location filename="../widgets/main_window.cpp" line="822"/>
467 <location filename="../widgets/main_window.cpp" line="94"/>
468 <location filename="../widgets/main_window.cpp" line="855"/>
469469 <source>Inactive</source>
470470 <translation type="unfinished"></translation>
471471 </message>
472472 <message>
473 <location filename="../widgets/main_window.cpp" line="83"/>
473 <location filename="../widgets/main_window.cpp" line="99"/>
474474 <source>Interpreter:</source>
475475 <translation type="unfinished"></translation>
476476 </message>
477477 <message>
478 <location filename="../widgets/main_window.cpp" line="85"/>
478 <location filename="../widgets/main_window.cpp" line="101"/>
479479 <source>Server:</source>
480480 <translation type="unfinished"></translation>
481481 </message>
482482 <message>
483 <location filename="../widgets/main_window.cpp" line="93"/>
483 <location filename="../widgets/main_window.cpp" line="109"/>
484484 <source>Command Line:</source>
485485 <translation type="unfinished"></translation>
486486 </message>
487487 <message>
488 <location filename="../widgets/main_window.cpp" line="219"/>
488 <location filename="../widgets/main_window.cpp" line="235"/>
489489 <source>Text Editor</source>
490490 <translation type="unfinished"></translation>
491491 </message>
492492 <message>
493 <location filename="../widgets/main_window.cpp" line="220"/>
493 <location filename="../widgets/main_window.cpp" line="236"/>
494494 <source>Help</source>
495495 <translation type="unfinished"></translation>
496496 </message>
497497 <message>
498 <location filename="../widgets/main_window.cpp" line="224"/>
498 <location filename="../widgets/main_window.cpp" line="240"/>
499499 <source>&amp;Quit...</source>
500500 <translation type="unfinished"></translation>
501501 </message>
502502 <message>
503 <location filename="../widgets/main_window.cpp" line="225"/>
503 <location filename="../widgets/main_window.cpp" line="241"/>
504504 <source>Ctrl+Q</source>
505505 <comment>Quit application</comment>
506506 <translation type="unfinished"></translation>
507507 </message>
508508 <message>
509 <location filename="../widgets/main_window.cpp" line="226"/>
509 <location filename="../widgets/main_window.cpp" line="242"/>
510510 <source>Quit SuperCollider IDE</source>
511511 <translation type="unfinished"></translation>
512512 </message>
513513 <message>
514 <location filename="../widgets/main_window.cpp" line="231"/>
514 <location filename="../widgets/main_window.cpp" line="247"/>
515515 <source>&amp;New</source>
516516 <translation type="unfinished"></translation>
517517 </message>
518518 <message>
519 <location filename="../widgets/main_window.cpp" line="232"/>
519 <location filename="../widgets/main_window.cpp" line="248"/>
520520 <source>Ctrl+N</source>
521521 <comment>New document</comment>
522522 <translation type="unfinished"></translation>
523523 </message>
524524 <message>
525 <location filename="../widgets/main_window.cpp" line="233"/>
525 <location filename="../widgets/main_window.cpp" line="249"/>
526526 <source>Create a new document</source>
527527 <translation type="unfinished"></translation>
528528 </message>
529529 <message>
530 <location filename="../widgets/main_window.cpp" line="238"/>
530 <location filename="../widgets/main_window.cpp" line="254"/>
531531 <source>&amp;Open...</source>
532532 <translation type="unfinished"></translation>
533533 </message>
534534 <message>
535 <location filename="../widgets/main_window.cpp" line="239"/>
535 <location filename="../widgets/main_window.cpp" line="255"/>
536536 <source>Ctrl+O</source>
537537 <comment>Open document</comment>
538538 <translation type="unfinished"></translation>
539539 </message>
540540 <message>
541 <location filename="../widgets/main_window.cpp" line="240"/>
541 <location filename="../widgets/main_window.cpp" line="256"/>
542542 <source>Open an existing file</source>
543543 <translation type="unfinished"></translation>
544544 </message>
545545 <message>
546 <location filename="../widgets/main_window.cpp" line="245"/>
547 <location filename="../widgets/main_window.cpp" line="246"/>
546 <location filename="../widgets/main_window.cpp" line="261"/>
547 <location filename="../widgets/main_window.cpp" line="262"/>
548548 <source>Open startup file</source>
549549 <translation type="unfinished"></translation>
550550 </message>
551551 <message>
552 <location filename="../widgets/main_window.cpp" line="251"/>
552 <location filename="../widgets/main_window.cpp" line="267"/>
553553 <source>&amp;Save</source>
554554 <translation type="unfinished"></translation>
555555 </message>
556556 <message>
557 <location filename="../widgets/main_window.cpp" line="252"/>
557 <location filename="../widgets/main_window.cpp" line="268"/>
558558 <source>Ctrl+S</source>
559559 <comment>Save document</comment>
560560 <translation type="unfinished"></translation>
561561 </message>
562562 <message>
563 <location filename="../widgets/main_window.cpp" line="253"/>
563 <location filename="../widgets/main_window.cpp" line="269"/>
564564 <source>Save the current document</source>
565565 <translation type="unfinished"></translation>
566566 </message>
567567 <message>
568 <location filename="../widgets/main_window.cpp" line="258"/>
568 <location filename="../widgets/main_window.cpp" line="274"/>
569569 <source>Save &amp;As...</source>
570570 <translation type="unfinished"></translation>
571571 </message>
572572 <message>
573 <location filename="../widgets/main_window.cpp" line="259"/>
573 <location filename="../widgets/main_window.cpp" line="275"/>
574574 <source>Ctrl+Shift+S</source>
575575 <comment>Save &amp;As...</comment>
576576 <translation type="unfinished"></translation>
577577 </message>
578578 <message>
579 <location filename="../widgets/main_window.cpp" line="260"/>
579 <location filename="../widgets/main_window.cpp" line="276"/>
580580 <source>Save the current document into a different file</source>
581581 <translation type="unfinished"></translation>
582582 </message>
583583 <message>
584 <location filename="../widgets/main_window.cpp" line="265"/>
584 <location filename="../widgets/main_window.cpp" line="281"/>
585585 <source>Save All...</source>
586586 <translation type="unfinished"></translation>
587587 </message>
588588 <message>
589 <location filename="../widgets/main_window.cpp" line="266"/>
589 <location filename="../widgets/main_window.cpp" line="282"/>
590590 <source>Ctrl+Alt+S</source>
591591 <comment>Save all documents</comment>
592592 <translation type="unfinished"></translation>
593593 </message>
594594 <message>
595 <location filename="../widgets/main_window.cpp" line="267"/>
595 <location filename="../widgets/main_window.cpp" line="283"/>
596596 <source>Save all open documents</source>
597597 <translation type="unfinished"></translation>
598598 </message>
599599 <message>
600 <location filename="../widgets/main_window.cpp" line="272"/>
600 <location filename="../widgets/main_window.cpp" line="288"/>
601601 <source>&amp;Close</source>
602602 <translation type="unfinished"></translation>
603603 </message>
604604 <message>
605 <location filename="../widgets/main_window.cpp" line="273"/>
605 <location filename="../widgets/main_window.cpp" line="289"/>
606606 <source>Ctrl+W</source>
607607 <comment>Close document</comment>
608608 <translation type="unfinished"></translation>
609609 </message>
610610 <message>
611 <location filename="../widgets/main_window.cpp" line="274"/>
611 <location filename="../widgets/main_window.cpp" line="290"/>
612612 <source>Close the current document</source>
613613 <translation type="unfinished"></translation>
614614 </message>
615615 <message>
616 <location filename="../widgets/main_window.cpp" line="279"/>
616 <location filename="../widgets/main_window.cpp" line="295"/>
617617 <source>Close All...</source>
618618 <translation type="unfinished"></translation>
619619 </message>
620620 <message>
621 <location filename="../widgets/main_window.cpp" line="280"/>
621 <location filename="../widgets/main_window.cpp" line="296"/>
622622 <source>Ctrl+Shift+W</source>
623623 <comment>Close all documents</comment>
624624 <translation type="unfinished"></translation>
625625 </message>
626626 <message>
627 <location filename="../widgets/main_window.cpp" line="281"/>
627 <location filename="../widgets/main_window.cpp" line="297"/>
628628 <source>Close all documents</source>
629629 <translation type="unfinished"></translation>
630630 </message>
631631 <message>
632 <location filename="../widgets/main_window.cpp" line="286"/>
632 <location filename="../widgets/main_window.cpp" line="302"/>
633633 <source>&amp;Reload</source>
634634 <translation type="unfinished"></translation>
635635 </message>
636636 <message>
637 <location filename="../widgets/main_window.cpp" line="287"/>
637 <location filename="../widgets/main_window.cpp" line="303"/>
638638 <source>F5</source>
639639 <comment>Reload document</comment>
640640 <translation type="unfinished"></translation>
641641 </message>
642642 <message>
643 <location filename="../widgets/main_window.cpp" line="288"/>
643 <location filename="../widgets/main_window.cpp" line="304"/>
644644 <source>Reload the current document</source>
645645 <translation type="unfinished"></translation>
646646 </message>
647647 <message>
648 <location filename="../widgets/main_window.cpp" line="292"/>
648 <location filename="../widgets/main_window.cpp" line="308"/>
649649 <source>Clear</source>
650650 <comment>Clear recent documents</comment>
651651 <translation type="unfinished"></translation>
652652 </message>
653653 <message>
654 <location filename="../widgets/main_window.cpp" line="293"/>
654 <location filename="../widgets/main_window.cpp" line="309"/>
655655 <source>Clear list of recent documents</source>
656656 <translation type="unfinished"></translation>
657657 </message>
658658 <message>
659 <location filename="../widgets/main_window.cpp" line="300"/>
659 <location filename="../widgets/main_window.cpp" line="316"/>
660660 <source>&amp;New Session</source>
661661 <translation type="unfinished"></translation>
662662 </message>
663663 <message>
664 <location filename="../widgets/main_window.cpp" line="301"/>
664 <location filename="../widgets/main_window.cpp" line="317"/>
665665 <source>Open a new session</source>
666666 <translation type="unfinished"></translation>
667667 </message>
668668 <message>
669 <location filename="../widgets/main_window.cpp" line="306"/>
669 <location filename="../widgets/main_window.cpp" line="322"/>
670670 <source>Save Session &amp;As...</source>
671671 <translation type="unfinished"></translation>
672672 </message>
673673 <message>
674 <location filename="../widgets/main_window.cpp" line="307"/>
674 <location filename="../widgets/main_window.cpp" line="323"/>
675675 <source>Save the current session with a different name</source>
676676 <translation type="unfinished"></translation>
677677 </message>
678678 <message>
679 <location filename="../widgets/main_window.cpp" line="312"/>
679 <location filename="../widgets/main_window.cpp" line="328"/>
680680 <source>&amp;Manage Sessions...</source>
681681 <translation type="unfinished"></translation>
682682 </message>
683683 <message>
684 <location filename="../widgets/main_window.cpp" line="317"/>
684 <location filename="../widgets/main_window.cpp" line="333"/>
685685 <source>&amp;Switch Session...</source>
686686 <translation type="unfinished"></translation>
687687 </message>
688688 <message>
689 <location filename="../widgets/main_window.cpp" line="319"/>
689 <location filename="../widgets/main_window.cpp" line="335"/>
690690 <source>Ctrl+Shift+Q</source>
691691 <comment>Switch Session</comment>
692692 <translation type="unfinished"></translation>
693693 </message>
694694 <message>
695 <location filename="../widgets/main_window.cpp" line="324"/>
695 <location filename="../widgets/main_window.cpp" line="340"/>
696696 <source>&amp;Find...</source>
697697 <translation type="unfinished"></translation>
698698 </message>
699699 <message>
700 <location filename="../widgets/main_window.cpp" line="325"/>
700 <location filename="../widgets/main_window.cpp" line="341"/>
701701 <source>Ctrl+F</source>
702702 <comment>Find</comment>
703703 <translation type="unfinished"></translation>
704704 </message>
705705 <message>
706 <location filename="../widgets/main_window.cpp" line="326"/>
706 <location filename="../widgets/main_window.cpp" line="342"/>
707707 <source>Find text in document</source>
708708 <translation type="unfinished"></translation>
709709 </message>
710710 <message>
711 <location filename="../widgets/main_window.cpp" line="331"/>
711 <location filename="../widgets/main_window.cpp" line="347"/>
712712 <source>&amp;Replace...</source>
713713 <translation type="unfinished"></translation>
714714 </message>
715715 <message>
716 <location filename="../widgets/main_window.cpp" line="332"/>
716 <location filename="../widgets/main_window.cpp" line="348"/>
717717 <source>Ctrl+R</source>
718718 <comment>Replace</comment>
719719 <translation type="unfinished"></translation>
720720 </message>
721721 <message>
722 <location filename="../widgets/main_window.cpp" line="333"/>
722 <location filename="../widgets/main_window.cpp" line="349"/>
723723 <source>Find and replace text in document</source>
724724 <translation type="unfinished"></translation>
725725 </message>
726726 <message>
727 <location filename="../widgets/main_window.cpp" line="338"/>
727 <location filename="../widgets/main_window.cpp" line="354"/>
728728 <source>&amp;Command Line</source>
729729 <translation type="unfinished"></translation>
730730 </message>
731731 <message>
732 <location filename="../widgets/main_window.cpp" line="339"/>
732 <location filename="../widgets/main_window.cpp" line="355"/>
733733 <source>Command line for quick code evaluation</source>
734734 <translation type="unfinished"></translation>
735735 </message>
736736 <message>
737 <location filename="../widgets/main_window.cpp" line="340"/>
737 <location filename="../widgets/main_window.cpp" line="356"/>
738738 <source>Ctrl+E</source>
739739 <comment>Show command line</comment>
740740 <translation type="unfinished"></translation>
741741 </message>
742742 <message>
743 <location filename="../widgets/main_window.cpp" line="344"/>
743 <location filename="../widgets/main_window.cpp" line="360"/>
744744 <source>&amp;Go To Line</source>
745745 <translation type="unfinished"></translation>
746746 </message>
747747 <message>
748 <location filename="../widgets/main_window.cpp" line="345"/>
748 <location filename="../widgets/main_window.cpp" line="361"/>
749749 <source>Tool to jump to a line by number</source>
750750 <translation type="unfinished"></translation>
751751 </message>
752752 <message>
753 <location filename="../widgets/main_window.cpp" line="346"/>
753 <location filename="../widgets/main_window.cpp" line="362"/>
754754 <source>Ctrl+L</source>
755755 <comment>Show go-to-line tool</comment>
756756 <translation type="unfinished"></translation>
757757 </message>
758758 <message>
759 <location filename="../widgets/main_window.cpp" line="351"/>
759 <location filename="../widgets/main_window.cpp" line="367"/>
760760 <source>&amp;Close Tool Panel</source>
761761 <translation type="unfinished"></translation>
762762 </message>
763763 <message>
764 <location filename="../widgets/main_window.cpp" line="352"/>
764 <location filename="../widgets/main_window.cpp" line="368"/>
765765 <source>Close any open tool panel</source>
766766 <translation type="unfinished"></translation>
767767 </message>
768768 <message>
769 <location filename="../widgets/main_window.cpp" line="353"/>
769 <location filename="../widgets/main_window.cpp" line="369"/>
770770 <source>Esc</source>
771771 <comment>Close tool box</comment>
772772 <translation type="unfinished"></translation>
773773 </message>
774774 <message>
775 <location filename="../widgets/main_window.cpp" line="357"/>
775 <location filename="../widgets/main_window.cpp" line="373"/>
776776 <source>&amp;Full Screen</source>
777777 <translation type="unfinished"></translation>
778778 </message>
779779 <message>
780 <location filename="../widgets/main_window.cpp" line="359"/>
780 <location filename="../widgets/main_window.cpp" line="375"/>
781781 <source>Ctrl+Shift+F</source>
782782 <comment>Show ScIDE in Full Screen</comment>
783783 <translation type="unfinished"></translation>
784784 </message>
785785 <message>
786 <location filename="../widgets/main_window.cpp" line="363"/>
786 <location filename="../widgets/main_window.cpp" line="379"/>
787787 <source>Focus Post Window</source>
788788 <translation type="unfinished"></translation>
789789 </message>
790790 <message>
791 <location filename="../widgets/main_window.cpp" line="364"/>
791 <location filename="../widgets/main_window.cpp" line="380"/>
792792 <source>Focus post window</source>
793793 <translation type="unfinished"></translation>
794794 </message>
795795 <message>
796 <location filename="../widgets/main_window.cpp" line="365"/>
796 <location filename="../widgets/main_window.cpp" line="381"/>
797797 <source>Ctrl+P</source>
798798 <comment>Focus post window</comment>
799799 <translation type="unfinished"></translation>
800800 </message>
801801 <message>
802 <location filename="../widgets/main_window.cpp" line="371"/>
802 <location filename="../widgets/main_window.cpp" line="387"/>
803803 <source>Look Up Implementations...</source>
804804 <translation type="unfinished"></translation>
805805 </message>
806806 <message>
807 <location filename="../widgets/main_window.cpp" line="372"/>
807 <location filename="../widgets/main_window.cpp" line="388"/>
808808 <source>Ctrl+Shift+I</source>
809809 <comment>Look Up Implementations</comment>
810810 <translation type="unfinished"></translation>
811811 </message>
812812 <message>
813 <location filename="../widgets/main_window.cpp" line="373"/>
813 <location filename="../widgets/main_window.cpp" line="389"/>
814814 <source>Open dialog to look up implementations of a class or a method</source>
815815 <translation type="unfinished"></translation>
816816 </message>
817817 <message>
818 <location filename="../widgets/main_window.cpp" line="377"/>
818 <location filename="../widgets/main_window.cpp" line="393"/>
819819 <source>Look Up Implementations for Cursor</source>
820820 <translation type="unfinished"></translation>
821821 </message>
822822 <message>
823 <location filename="../widgets/main_window.cpp" line="378"/>
823 <location filename="../widgets/main_window.cpp" line="394"/>
824824 <source>Ctrl+I</source>
825825 <comment>Look Up Implementations for Cursor</comment>
826826 <translation type="unfinished"></translation>
827827 </message>
828828 <message>
829 <location filename="../widgets/main_window.cpp" line="379"/>
829 <location filename="../widgets/main_window.cpp" line="395"/>
830830 <source>Look up implementations of class or method under cursor</source>
831831 <translation type="unfinished"></translation>
832832 </message>
833833 <message>
834 <location filename="../widgets/main_window.cpp" line="384"/>
834 <location filename="../widgets/main_window.cpp" line="400"/>
835835 <source>Look Up References...</source>
836836 <translation type="unfinished"></translation>
837837 </message>
838838 <message>
839 <location filename="../widgets/main_window.cpp" line="385"/>
839 <location filename="../widgets/main_window.cpp" line="401"/>
840840 <source>Ctrl+Shift+U</source>
841841 <comment>Look Up References</comment>
842842 <translation type="unfinished"></translation>
843843 </message>
844844 <message>
845 <location filename="../widgets/main_window.cpp" line="386"/>
845 <location filename="../widgets/main_window.cpp" line="402"/>
846846 <source>Open dialog to look up references to a class or a method</source>
847847 <translation type="unfinished"></translation>
848848 </message>
849849 <message>
850 <location filename="../widgets/main_window.cpp" line="390"/>
850 <location filename="../widgets/main_window.cpp" line="406"/>
851851 <source>Look Up References for Cursor</source>
852852 <translation type="unfinished"></translation>
853853 </message>
854854 <message>
855 <location filename="../widgets/main_window.cpp" line="391"/>
855 <location filename="../widgets/main_window.cpp" line="407"/>
856856 <source>Ctrl+U</source>
857857 <comment>Look Up References For Selection</comment>
858858 <translation type="unfinished"></translation>
859859 </message>
860860 <message>
861 <location filename="../widgets/main_window.cpp" line="392"/>
861 <location filename="../widgets/main_window.cpp" line="408"/>
862862 <source>Look up references to class or method under cursor</source>
863863 <translation type="unfinished"></translation>
864864 </message>
865865 <message>
866 <location filename="../widgets/main_window.cpp" line="397"/>
866 <location filename="../widgets/main_window.cpp" line="413"/>
867867 <source>&amp;Preferences</source>
868868 <translation type="unfinished"></translation>
869869 </message>
870870 <message>
871 <location filename="../widgets/main_window.cpp" line="399"/>
871 <location filename="../widgets/main_window.cpp" line="415"/>
872872 <source>Ctrl+,</source>
873873 <comment>Show configuration dialog</comment>
874874 <translation type="unfinished"></translation>
875875 </message>
876876 <message>
877 <location filename="../widgets/main_window.cpp" line="401"/>
877 <location filename="../widgets/main_window.cpp" line="417"/>
878878 <source>Show configuration dialog</source>
879879 <translation type="unfinished"></translation>
880880 </message>
881881 <message>
882 <location filename="../widgets/main_window.cpp" line="407"/>
882 <location filename="../widgets/main_window.cpp" line="423"/>
883883 <source>Open &amp;Help Browser</source>
884884 <translation type="unfinished"></translation>
885885 </message>
886886 <message>
887 <location filename="../widgets/main_window.cpp" line="408"/>
887 <location filename="../widgets/main_window.cpp" line="424"/>
888888 <source>Open help</source>
889889 <translation type="unfinished"></translation>
890890 </message>
891891 <message>
892 <location filename="../widgets/main_window.cpp" line="413"/>
892 <location filename="../widgets/main_window.cpp" line="429"/>
893893 <source>Look Up Documentation for Cursor</source>
894894 <translation type="unfinished"></translation>
895895 </message>
896896 <message>
897 <location filename="../widgets/main_window.cpp" line="414"/>
897 <location filename="../widgets/main_window.cpp" line="430"/>
898898 <source>Ctrl+D</source>
899899 <comment>Look Up Documentation for Cursor</comment>
900900 <translation type="unfinished"></translation>
901901 </message>
902902 <message>
903 <location filename="../widgets/main_window.cpp" line="415"/>
903 <location filename="../widgets/main_window.cpp" line="431"/>
904904 <source>Look up documentation for text under cursor</source>
905905 <translation type="unfinished"></translation>
906906 </message>
907907 <message>
908 <location filename="../widgets/main_window.cpp" line="420"/>
908 <location filename="../widgets/main_window.cpp" line="436"/>
909909 <source>Look Up Documentation...</source>
910910 <translation type="unfinished"></translation>
911911 </message>
912912 <message>
913 <location filename="../widgets/main_window.cpp" line="421"/>
913 <location filename="../widgets/main_window.cpp" line="437"/>
914914 <source>Ctrl+Shift+D</source>
915915 <comment>Look Up Documentation</comment>
916916 <translation type="unfinished"></translation>
917917 </message>
918918 <message>
919 <location filename="../widgets/main_window.cpp" line="422"/>
919 <location filename="../widgets/main_window.cpp" line="438"/>
920920 <source>Enter text to look up in documentation</source>
921921 <translation type="unfinished"></translation>
922922 </message>
923923 <message>
924 <location filename="../widgets/main_window.cpp" line="427"/>
924 <location filename="../widgets/main_window.cpp" line="443"/>
925925 <source>&amp;About SuperCollider</source>
926926 <translation type="unfinished"></translation>
927927 </message>
928928 <message>
929 <location filename="../widgets/main_window.cpp" line="432"/>
929 <location filename="../widgets/main_window.cpp" line="448"/>
930930 <source>About &amp;Qt</source>
931931 <translation type="unfinished"></translation>
932932 </message>
933933 <message>
934 <location filename="../widgets/main_window.cpp" line="439"/>
934 <location filename="../widgets/main_window.cpp" line="455"/>
935935 <source>Show/hide Post docklet</source>
936936 <translation type="unfinished"></translation>
937937 </message>
938938 <message>
939 <location filename="../widgets/main_window.cpp" line="445"/>
939 <location filename="../widgets/main_window.cpp" line="461"/>
940940 <source>Show/hide Documents docklet</source>
941941 <translation type="unfinished"></translation>
942942 </message>
943943 <message>
944 <location filename="../widgets/main_window.cpp" line="451"/>
944 <location filename="../widgets/main_window.cpp" line="467"/>
945945 <source>Show/hide Help browser docklet</source>
946946 <translation type="unfinished"></translation>
947947 </message>
948948 <message>
949 <location filename="../widgets/main_window.cpp" line="461"/>
949 <location filename="../widgets/main_window.cpp" line="494"/>
950950 <source>&amp;File</source>
951951 <translation type="unfinished"></translation>
952952 </message>
953953 <message>
954 <location filename="../widgets/main_window.cpp" line="464"/>
954 <location filename="../widgets/main_window.cpp" line="497"/>
955955 <source>Open Recent</source>
956956 <comment>Open a recent document</comment>
957957 <translation type="unfinished"></translation>
958958 </message>
959959 <message>
960 <location filename="../widgets/main_window.cpp" line="481"/>
960 <location filename="../widgets/main_window.cpp" line="514"/>
961961 <source>&amp;Session</source>
962962 <translation type="unfinished"></translation>
963963 </message>
964964 <message>
965 <location filename="../widgets/main_window.cpp" line="484"/>
965 <location filename="../widgets/main_window.cpp" line="517"/>
966966 <source>&amp;Open Session</source>
967967 <translation type="unfinished"></translation>
968968 </message>
969969 <message>
970 <location filename="../widgets/main_window.cpp" line="495"/>
970 <location filename="../widgets/main_window.cpp" line="528"/>
971971 <source>&amp;Edit</source>
972972 <translation type="unfinished"></translation>
973973 </message>
974974 <message>
975 <location filename="../widgets/main_window.cpp" line="519"/>
975 <location filename="../widgets/main_window.cpp" line="552"/>
976976 <source>&amp;View</source>
977977 <translation type="unfinished"></translation>
978978 </message>
979979 <message>
980 <location filename="../widgets/main_window.cpp" line="520"/>
980 <location filename="../widgets/main_window.cpp" line="553"/>
981981 <source>&amp;Docklets</source>
982982 <translation type="unfinished"></translation>
983983 </message>
984984 <message>
985 <location filename="../widgets/main_window.cpp" line="526"/>
985 <location filename="../widgets/main_window.cpp" line="559"/>
986986 <source>&amp;Tool Panels</source>
987987 <translation type="unfinished"></translation>
988988 </message>
989989 <message>
990 <location filename="../widgets/main_window.cpp" line="554"/>
990 <location filename="../widgets/main_window.cpp" line="587"/>
991991 <source>&amp;Language</source>
992992 <translation type="unfinished"></translation>
993993 </message>
994994 <message>
995 <location filename="../widgets/main_window.cpp" line="577"/>
995 <location filename="../widgets/main_window.cpp" line="610"/>
996996 <source>&amp;Help</source>
997997 <translation type="unfinished"></translation>
998998 </message>
999999 <message>
1000 <location filename="../widgets/main_window.cpp" line="697"/>
1000 <location filename="../widgets/main_window.cpp" line="730"/>
10011001 <source>Save Current Session</source>
10021002 <translation type="unfinished"></translation>
10031003 </message>
10041004 <message>
1005 <location filename="../widgets/main_window.cpp" line="698"/>
1005 <location filename="../widgets/main_window.cpp" line="731"/>
10061006 <source>Enter a name for the session:</source>
10071007 <translation type="unfinished"></translation>
10081008 </message>
10091009 <message>
1010 <location filename="../widgets/main_window.cpp" line="827"/>
1010 <location filename="../widgets/main_window.cpp" line="860"/>
10111011 <source>Booting</source>
10121012 <translation type="unfinished"></translation>
10131013 </message>
10141014 <message>
1015 <location filename="../widgets/main_window.cpp" line="834"/>
1015 <location filename="../widgets/main_window.cpp" line="867"/>
10161016 <source>Active</source>
10171017 <translation type="unfinished"></translation>
10181018 </message>
10191019 <message>
1020 <location filename="../widgets/main_window.cpp" line="878"/>
1021 <location filename="../widgets/main_window.cpp" line="910"/>
1020 <location filename="../widgets/main_window.cpp" line="911"/>
1021 <location filename="../widgets/main_window.cpp" line="943"/>
10221022 <source>SuperCollider IDE</source>
10231023 <translation type="unfinished"></translation>
10241024 </message>
10251025 <message>
1026 <location filename="../widgets/main_window.cpp" line="879"/>
1026 <location filename="../widgets/main_window.cpp" line="912"/>
10271027 <source>There are unsaved changes in document &apos;%1&apos;.
10281028
10291029 Do you want to save it?</source>
10301030 <translation type="unfinished"></translation>
10311031 </message>
10321032 <message>
1033 <location filename="../widgets/main_window.cpp" line="911"/>
1033 <location filename="../widgets/main_window.cpp" line="944"/>
10341034 <source>There are unsaved changes in document &apos;%1&apos;.
10351035
10361036 Do you want to reload it?</source>
10371037 <translation type="unfinished"></translation>
10381038 </message>
10391039 <message>
1040 <location filename="../widgets/main_window.cpp" line="938"/>
1040 <location filename="../widgets/main_window.cpp" line="971"/>
10411041 <source>Saving read-only file</source>
10421042 <translation type="unfinished"></translation>
10431043 </message>
10441044 <message>
1045 <location filename="../widgets/main_window.cpp" line="939"/>
1045 <location filename="../widgets/main_window.cpp" line="972"/>
10461046 <source>File is read-only. Please select a new location to save to.</source>
10471047 <translation type="unfinished"></translation>
10481048 </message>
10491049 <message>
1050 <location filename="../widgets/main_window.cpp" line="950"/>
1050 <location filename="../widgets/main_window.cpp" line="983"/>
10511051 <source>SuperCollider Document (*.scd)</source>
10521052 <translation type="unfinished"></translation>
10531053 </message>
10541054 <message>
1055 <location filename="../widgets/main_window.cpp" line="951"/>
1055 <location filename="../widgets/main_window.cpp" line="984"/>
10561056 <source>SuperCollider Class file (*.sc)</source>
10571057 <translation type="unfinished"></translation>
10581058 </message>
10591059 <message>
1060 <location filename="../widgets/main_window.cpp" line="953"/>
1061 <location filename="../widgets/main_window.cpp" line="1002"/>
1060 <location filename="../widgets/main_window.cpp" line="986"/>
1061 <location filename="../widgets/main_window.cpp" line="1035"/>
10621062 <source>All files (*)</source>
10631063 <translation type="unfinished"></translation>
10641064 </message>
10651065 <message>
1066 <location filename="../widgets/main_window.cpp" line="1003"/>
1066 <location filename="../widgets/main_window.cpp" line="1036"/>
10671067 <source>SuperCollider (*.scd *.sc)</source>
10681068 <translation type="unfinished"></translation>
10691069 </message>
10701070 <message>
1071 <location filename="../widgets/main_window.cpp" line="1004"/>
1071 <location filename="../widgets/main_window.cpp" line="1037"/>
10721072 <source>SCDoc (*.schelp)</source>
10731073 <translation type="unfinished"></translation>
10741074 </message>
10751075 <message>
1076 <location filename="../widgets/main_window.cpp" line="1148"/>
1076 <location filename="../widgets/main_window.cpp" line="1181"/>
10771077 <source>Untitled</source>
10781078 <translation type="unfinished"></translation>
10791079 </message>
10801080 <message>
1081 <location filename="../widgets/main_window.cpp" line="1274"/>
1081 <location filename="../widgets/main_window.cpp" line="1311"/>
10821082 <source>About SuperCollider IDE</source>
10831083 <translation type="unfinished"></translation>
10841084 </message>
10851085 <message>
1086 <location filename="../widgets/main_window.cpp" line="1356"/>
1086 <location filename="../widgets/main_window.cpp" line="1393"/>
10871087 <source>Look up Documentation For</source>
10881088 <translation type="unfinished"></translation>
10891089 </message>
10901090 <message>
1091 <location filename="../widgets/main_window.cpp" line="1405"/>
1091 <location filename="../widgets/main_window.cpp" line="1448"/>
10921092 <source>Open binary file?</source>
10931093 <translation type="unfinished"></translation>
10941094 </message>
10951095 <message>
1096 <location filename="../widgets/main_window.cpp" line="1406"/>
1096 <location filename="../widgets/main_window.cpp" line="1449"/>
10971097 <source>
10981098
10991099 The file has an unrecognized extension. It may be a binary file. Would you still like to open it?</source>
15531553 <context>
15541554 <name>ScIDE::PostDocklet</name>
15551555 <message>
1556 <location filename="../widgets/post_window.cpp" line="294"/>
1556 <location filename="../widgets/post_window.cpp" line="304"/>
15571557 <source>Post window</source>
15581558 <translation type="unfinished"></translation>
15591559 </message>
15611561 <context>
15621562 <name>ScIDE::PostWindow</name>
15631563 <message>
1564 <location filename="../widgets/post_window.cpp" line="64"/>
1564 <location filename="../widgets/post_window.cpp" line="65"/>
15651565 <source>Post Window</source>
15661566 <translation type="unfinished"></translation>
15671567 </message>
15681568 <message>
1569 <location filename="../widgets/post_window.cpp" line="66"/>
1569 <location filename="../widgets/post_window.cpp" line="67"/>
15701570 <source>Copy</source>
15711571 <translation type="unfinished"></translation>
15721572 </message>
15731573 <message>
1574 <location filename="../widgets/post_window.cpp" line="74"/>
1574 <location filename="../widgets/post_window.cpp" line="75"/>
15751575 <source>Clear</source>
15761576 <translation type="unfinished"></translation>
15771577 </message>
15781578 <message>
1579 <location filename="../widgets/post_window.cpp" line="75"/>
1579 <location filename="../widgets/post_window.cpp" line="76"/>
15801580 <source>Clear post window</source>
15811581 <translation type="unfinished"></translation>
15821582 </message>
15831583 <message>
1584 <location filename="../widgets/post_window.cpp" line="77"/>
1584 <location filename="../widgets/post_window.cpp" line="78"/>
15851585 <source>Ctrl+Shift+P</source>
15861586 <comment>Clear post window</comment>
15871587 <translation type="unfinished"></translation>
15881588 </message>
15891589 <message>
1590 <location filename="../widgets/post_window.cpp" line="86"/>
1590 <location filename="../widgets/post_window.cpp" line="87"/>
15911591 <source>Enlarge Font</source>
15921592 <translation type="unfinished"></translation>
15931593 </message>
15941594 <message>
1595 <location filename="../widgets/post_window.cpp" line="88"/>
1595 <location filename="../widgets/post_window.cpp" line="89"/>
15961596 <source>Enlarge post window font</source>
15971597 <translation type="unfinished"></translation>
15981598 </message>
15991599 <message>
1600 <location filename="../widgets/post_window.cpp" line="92"/>
1600 <location filename="../widgets/post_window.cpp" line="93"/>
16011601 <source>Shrink Font</source>
16021602 <translation type="unfinished"></translation>
16031603 </message>
16041604 <message>
1605 <location filename="../widgets/post_window.cpp" line="94"/>
1605 <location filename="../widgets/post_window.cpp" line="95"/>
16061606 <source>Shrink post window font</source>
16071607 <translation type="unfinished"></translation>
16081608 </message>
16091609 <message>
1610 <location filename="../widgets/post_window.cpp" line="102"/>
1610 <location filename="../widgets/post_window.cpp" line="103"/>
16111611 <source>Wrap Text</source>
16121612 <translation type="unfinished"></translation>
16131613 </message>
16141614 <message>
1615 <location filename="../widgets/post_window.cpp" line="103"/>
1615 <location filename="../widgets/post_window.cpp" line="104"/>
16161616 <source>Wrap lines wider than the post window</source>
16171617 <translation type="unfinished"></translation>
16181618 </message>
16191619 <message>
1620 <location filename="../widgets/post_window.cpp" line="109"/>
1620 <location filename="../widgets/post_window.cpp" line="110"/>
16211621 <source>Auto Scroll</source>
16221622 <translation type="unfinished"></translation>
16231623 </message>
16241624 <message>
1625 <location filename="../widgets/post_window.cpp" line="110"/>
1625 <location filename="../widgets/post_window.cpp" line="111"/>
16261626 <source>Scroll to bottom on new posts</source>
16271627 <translation type="unfinished"></translation>
16281628 </message>
16301630 <context>
16311631 <name>ScIDE::ReferencesDialog</name>
16321632 <message>
1633 <location filename="../widgets/lookup_dialog.cpp" line="431"/>
1633 <location filename="../widgets/lookup_dialog.cpp" line="425"/>
16341634 <source>Look Up References</source>
16351635 <translation type="unfinished"></translation>
16361636 </message>
16371637 <message>
1638 <location filename="../widgets/lookup_dialog.cpp" line="433"/>
1638 <location filename="../widgets/lookup_dialog.cpp" line="427"/>
16391639 <source>Enter class or method name...</source>
16401640 <translation type="unfinished"></translation>
16411641 </message>
16421642 <message>
1643 <location filename="../widgets/lookup_dialog.cpp" line="469"/>
1643 <location filename="../widgets/lookup_dialog.cpp" line="463"/>
16441644 <source>Introspection data not yet available</source>
16451645 <translation type="unfinished"></translation>
16461646 </message>
16551655 <message>
16561656 <location filename="../core/sc_process.cpp" line="67"/>
16571657 <location filename="../core/sc_process.cpp" line="71"/>
1658 <location filename="../core/sc_process.cpp" line="265"/>
1658 <location filename="../core/sc_process.cpp" line="266"/>
16591659 <source>Boot Interpreter</source>
16601660 <translation type="unfinished"></translation>
16611661 </message>
16621662 <message>
16631663 <location filename="../core/sc_process.cpp" line="75"/>
1664 <location filename="../core/sc_process.cpp" line="248"/>
1664 <location filename="../core/sc_process.cpp" line="249"/>
16651665 <source>Quit Interpreter</source>
16661666 <translation type="unfinished"></translation>
16671667 </message>
16931693 <translation type="unfinished"></translation>
16941694 </message>
16951695 <message>
1696 <location filename="../core/sc_process.cpp" line="113"/>
1696 <location filename="../core/sc_process.cpp" line="114"/>
16971697 <source>Interpreter is already running.</source>
16981698 <translation type="unfinished"></translation>
16991699 </message>
17001700 <message>
1701 <location filename="../core/sc_process.cpp" line="146"/>
1701 <location filename="../core/sc_process.cpp" line="147"/>
17021702 <source>Failed to start interpreter!</source>
17031703 <translation type="unfinished"></translation>
17041704 </message>
17051705 <message>
1706 <location filename="../core/sc_process.cpp" line="152"/>
1707 <location filename="../core/sc_process.cpp" line="163"/>
1708 <location filename="../core/sc_process.cpp" line="210"/>
1706 <location filename="../core/sc_process.cpp" line="153"/>
1707 <location filename="../core/sc_process.cpp" line="164"/>
1708 <location filename="../core/sc_process.cpp" line="211"/>
17091709 <source>Interpreter is not running!</source>
17101710 <translation type="unfinished"></translation>
17111711 </message>
17121712 <message>
1713 <location filename="../core/sc_process.cpp" line="181"/>
1713 <location filename="../core/sc_process.cpp" line="182"/>
17141714 <source>Failed to stop interpreter!</source>
17151715 <translation type="unfinished"></translation>
17161716 </message>
17171717 <message>
1718 <location filename="../core/sc_process.cpp" line="217"/>
1718 <location filename="../core/sc_process.cpp" line="218"/>
17191719 <source>Error when passing data to interpreter!</source>
17201720 <translation type="unfinished"></translation>
17211721 </message>
250250 <translation type="unfinished"></translation>
251251 </message>
252252 <message>
253 <location filename="../core/doc_manager.cpp" line="290"/>
254 <location filename="../core/doc_manager.cpp" line="297"/>
253 <location filename="../core/doc_manager.cpp" line="298"/>
254 <location filename="../core/doc_manager.cpp" line="305"/>
255255 <source>File Extension Changed</source>
256256 <translation type="unfinished"></translation>
257257 </message>
258258 <message>
259 <location filename="../core/doc_manager.cpp" line="291"/>
260 <location filename="../core/doc_manager.cpp" line="298"/>
259 <location filename="../core/doc_manager.cpp" line="299"/>
260 <location filename="../core/doc_manager.cpp" line="306"/>
261261 <source>The extension of the file has changed. Please reopen file to update editor mode</source>
262262 <translation type="unfinished"></translation>
263263 </message>
417417 <context>
418418 <name>ScIDE::HelpBrowserDocklet</name>
419419 <message>
420 <location filename="../widgets/help_browser.cpp" line="378"/>
420 <location filename="../widgets/help_browser.cpp" line="399"/>
421421 <source>Help browser</source>
422422 <translation type="unfinished"></translation>
423423 </message>
425425 <context>
426426 <name>ScIDE::HelpBrowserFindBox</name>
427427 <message>
428 <location filename="../widgets/help_browser.cpp" line="339"/>
428 <location filename="../widgets/help_browser.cpp" line="360"/>
429429 <source>Find...</source>
430430 <translation type="unfinished"></translation>
431431 </message>
441441 <context>
442442 <name>ScIDE::LookupDialog</name>
443443 <message>
444 <location filename="../widgets/lookup_dialog.cpp" line="186"/>
444 <location filename="../widgets/lookup_dialog.cpp" line="180"/>
445445 <source>Look Up Implementations</source>
446446 <translation type="unfinished"></translation>
447447 </message>
448448 <message>
449 <location filename="../widgets/lookup_dialog.cpp" line="188"/>
449 <location filename="../widgets/lookup_dialog.cpp" line="182"/>
450450 <source>Enter class or method name...</source>
451451 <translation type="unfinished"></translation>
452452 </message>
453453 <message>
454 <location filename="../widgets/lookup_dialog.cpp" line="203"/>
454 <location filename="../widgets/lookup_dialog.cpp" line="197"/>
455455 <source>Introspection data not yet available</source>
456456 <translation type="unfinished"></translation>
457457 </message>
458458 <message>
459 <location filename="../widgets/lookup_dialog.cpp" line="365"/>
459 <location filename="../widgets/lookup_dialog.cpp" line="359"/>
460460 <source>No result for query</source>
461461 <translation type="unfinished"></translation>
462462 </message>
464464 <context>
465465 <name>ScIDE::MainWindow</name>
466466 <message>
467 <location filename="../widgets/main_window.cpp" line="78"/>
468 <location filename="../widgets/main_window.cpp" line="822"/>
467 <location filename="../widgets/main_window.cpp" line="94"/>
468 <location filename="../widgets/main_window.cpp" line="855"/>
469469 <source>Inactive</source>
470470 <translation type="unfinished"></translation>
471471 </message>
472472 <message>
473 <location filename="../widgets/main_window.cpp" line="83"/>
473 <location filename="../widgets/main_window.cpp" line="99"/>
474474 <source>Interpreter:</source>
475475 <translation type="unfinished"></translation>
476476 </message>
477477 <message>
478 <location filename="../widgets/main_window.cpp" line="85"/>
478 <location filename="../widgets/main_window.cpp" line="101"/>
479479 <source>Server:</source>
480480 <translation type="unfinished"></translation>
481481 </message>
482482 <message>
483 <location filename="../widgets/main_window.cpp" line="93"/>
483 <location filename="../widgets/main_window.cpp" line="109"/>
484484 <source>Command Line:</source>
485485 <translation type="unfinished"></translation>
486486 </message>
487487 <message>
488 <location filename="../widgets/main_window.cpp" line="219"/>
488 <location filename="../widgets/main_window.cpp" line="235"/>
489489 <source>Text Editor</source>
490490 <translation type="unfinished"></translation>
491491 </message>
492492 <message>
493 <location filename="../widgets/main_window.cpp" line="220"/>
493 <location filename="../widgets/main_window.cpp" line="236"/>
494494 <source>Help</source>
495495 <translation type="unfinished"></translation>
496496 </message>
497497 <message>
498 <location filename="../widgets/main_window.cpp" line="224"/>
498 <location filename="../widgets/main_window.cpp" line="240"/>
499499 <source>&amp;Quit...</source>
500500 <translation type="unfinished"></translation>
501501 </message>
502502 <message>
503 <location filename="../widgets/main_window.cpp" line="225"/>
503 <location filename="../widgets/main_window.cpp" line="241"/>
504504 <source>Ctrl+Q</source>
505505 <comment>Quit application</comment>
506506 <translation type="unfinished"></translation>
507507 </message>
508508 <message>
509 <location filename="../widgets/main_window.cpp" line="226"/>
509 <location filename="../widgets/main_window.cpp" line="242"/>
510510 <source>Quit SuperCollider IDE</source>
511511 <translation type="unfinished"></translation>
512512 </message>
513513 <message>
514 <location filename="../widgets/main_window.cpp" line="231"/>
514 <location filename="../widgets/main_window.cpp" line="247"/>
515515 <source>&amp;New</source>
516516 <translation type="unfinished"></translation>
517517 </message>
518518 <message>
519 <location filename="../widgets/main_window.cpp" line="232"/>
519 <location filename="../widgets/main_window.cpp" line="248"/>
520520 <source>Ctrl+N</source>
521521 <comment>New document</comment>
522522 <translation type="unfinished"></translation>
523523 </message>
524524 <message>
525 <location filename="../widgets/main_window.cpp" line="233"/>
525 <location filename="../widgets/main_window.cpp" line="249"/>
526526 <source>Create a new document</source>
527527 <translation type="unfinished"></translation>
528528 </message>
529529 <message>
530 <location filename="../widgets/main_window.cpp" line="238"/>
530 <location filename="../widgets/main_window.cpp" line="254"/>
531531 <source>&amp;Open...</source>
532532 <translation type="unfinished"></translation>
533533 </message>
534534 <message>
535 <location filename="../widgets/main_window.cpp" line="239"/>
535 <location filename="../widgets/main_window.cpp" line="255"/>
536536 <source>Ctrl+O</source>
537537 <comment>Open document</comment>
538538 <translation type="unfinished"></translation>
539539 </message>
540540 <message>
541 <location filename="../widgets/main_window.cpp" line="240"/>
541 <location filename="../widgets/main_window.cpp" line="256"/>
542542 <source>Open an existing file</source>
543543 <translation type="unfinished"></translation>
544544 </message>
545545 <message>
546 <location filename="../widgets/main_window.cpp" line="245"/>
547 <location filename="../widgets/main_window.cpp" line="246"/>
546 <location filename="../widgets/main_window.cpp" line="261"/>
547 <location filename="../widgets/main_window.cpp" line="262"/>
548548 <source>Open startup file</source>
549549 <translation type="unfinished"></translation>
550550 </message>
551551 <message>
552 <location filename="../widgets/main_window.cpp" line="251"/>
552 <location filename="../widgets/main_window.cpp" line="267"/>
553553 <source>&amp;Save</source>
554554 <translation type="unfinished"></translation>
555555 </message>
556556 <message>
557 <location filename="../widgets/main_window.cpp" line="252"/>
557 <location filename="../widgets/main_window.cpp" line="268"/>
558558 <source>Ctrl+S</source>
559559 <comment>Save document</comment>
560560 <translation type="unfinished"></translation>
561561 </message>
562562 <message>
563 <location filename="../widgets/main_window.cpp" line="253"/>
563 <location filename="../widgets/main_window.cpp" line="269"/>
564564 <source>Save the current document</source>
565565 <translation type="unfinished"></translation>
566566 </message>
567567 <message>
568 <location filename="../widgets/main_window.cpp" line="258"/>
568 <location filename="../widgets/main_window.cpp" line="274"/>
569569 <source>Save &amp;As...</source>
570570 <translation type="unfinished"></translation>
571571 </message>
572572 <message>
573 <location filename="../widgets/main_window.cpp" line="259"/>
573 <location filename="../widgets/main_window.cpp" line="275"/>
574574 <source>Ctrl+Shift+S</source>
575575 <comment>Save &amp;As...</comment>
576576 <translation type="unfinished"></translation>
577577 </message>
578578 <message>
579 <location filename="../widgets/main_window.cpp" line="260"/>
579 <location filename="../widgets/main_window.cpp" line="276"/>
580580 <source>Save the current document into a different file</source>
581581 <translation type="unfinished"></translation>
582582 </message>
583583 <message>
584 <location filename="../widgets/main_window.cpp" line="265"/>
584 <location filename="../widgets/main_window.cpp" line="281"/>
585585 <source>Save All...</source>
586586 <translation type="unfinished"></translation>
587587 </message>
588588 <message>
589 <location filename="../widgets/main_window.cpp" line="266"/>
589 <location filename="../widgets/main_window.cpp" line="282"/>
590590 <source>Ctrl+Alt+S</source>
591591 <comment>Save all documents</comment>
592592 <translation type="unfinished"></translation>
593593 </message>
594594 <message>
595 <location filename="../widgets/main_window.cpp" line="267"/>
595 <location filename="../widgets/main_window.cpp" line="283"/>
596596 <source>Save all open documents</source>
597597 <translation type="unfinished"></translation>
598598 </message>
599599 <message>
600 <location filename="../widgets/main_window.cpp" line="272"/>
600 <location filename="../widgets/main_window.cpp" line="288"/>
601601 <source>&amp;Close</source>
602602 <translation type="unfinished"></translation>
603603 </message>
604604 <message>
605 <location filename="../widgets/main_window.cpp" line="273"/>
605 <location filename="../widgets/main_window.cpp" line="289"/>
606606 <source>Ctrl+W</source>
607607 <comment>Close document</comment>
608608 <translation type="unfinished"></translation>
609609 </message>
610610 <message>
611 <location filename="../widgets/main_window.cpp" line="274"/>
611 <location filename="../widgets/main_window.cpp" line="290"/>
612612 <source>Close the current document</source>
613613 <translation type="unfinished"></translation>
614614 </message>
615615 <message>
616 <location filename="../widgets/main_window.cpp" line="279"/>
616 <location filename="../widgets/main_window.cpp" line="295"/>
617617 <source>Close All...</source>
618618 <translation type="unfinished"></translation>
619619 </message>
620620 <message>
621 <location filename="../widgets/main_window.cpp" line="280"/>
621 <location filename="../widgets/main_window.cpp" line="296"/>
622622 <source>Ctrl+Shift+W</source>
623623 <comment>Close all documents</comment>
624624 <translation type="unfinished"></translation>
625625 </message>
626626 <message>
627 <location filename="../widgets/main_window.cpp" line="281"/>
627 <location filename="../widgets/main_window.cpp" line="297"/>
628628 <source>Close all documents</source>
629629 <translation type="unfinished"></translation>
630630 </message>
631631 <message>
632 <location filename="../widgets/main_window.cpp" line="286"/>
632 <location filename="../widgets/main_window.cpp" line="302"/>
633633 <source>&amp;Reload</source>
634634 <translation type="unfinished"></translation>
635635 </message>
636636 <message>
637 <location filename="../widgets/main_window.cpp" line="287"/>
637 <location filename="../widgets/main_window.cpp" line="303"/>
638638 <source>F5</source>
639639 <comment>Reload document</comment>
640640 <translation type="unfinished"></translation>
641641 </message>
642642 <message>
643 <location filename="../widgets/main_window.cpp" line="288"/>
643 <location filename="../widgets/main_window.cpp" line="304"/>
644644 <source>Reload the current document</source>
645645 <translation type="unfinished"></translation>
646646 </message>
647647 <message>
648 <location filename="../widgets/main_window.cpp" line="292"/>
648 <location filename="../widgets/main_window.cpp" line="308"/>
649649 <source>Clear</source>
650650 <comment>Clear recent documents</comment>
651651 <translation type="unfinished"></translation>
652652 </message>
653653 <message>
654 <location filename="../widgets/main_window.cpp" line="293"/>
654 <location filename="../widgets/main_window.cpp" line="309"/>
655655 <source>Clear list of recent documents</source>
656656 <translation type="unfinished"></translation>
657657 </message>
658658 <message>
659 <location filename="../widgets/main_window.cpp" line="300"/>
659 <location filename="../widgets/main_window.cpp" line="316"/>
660660 <source>&amp;New Session</source>
661661 <translation type="unfinished"></translation>
662662 </message>
663663 <message>
664 <location filename="../widgets/main_window.cpp" line="301"/>
664 <location filename="../widgets/main_window.cpp" line="317"/>
665665 <source>Open a new session</source>
666666 <translation type="unfinished"></translation>
667667 </message>
668668 <message>
669 <location filename="../widgets/main_window.cpp" line="306"/>
669 <location filename="../widgets/main_window.cpp" line="322"/>
670670 <source>Save Session &amp;As...</source>
671671 <translation type="unfinished"></translation>
672672 </message>
673673 <message>
674 <location filename="../widgets/main_window.cpp" line="307"/>
674 <location filename="../widgets/main_window.cpp" line="323"/>
675675 <source>Save the current session with a different name</source>
676676 <translation type="unfinished"></translation>
677677 </message>
678678 <message>
679 <location filename="../widgets/main_window.cpp" line="312"/>
679 <location filename="../widgets/main_window.cpp" line="328"/>
680680 <source>&amp;Manage Sessions...</source>
681681 <translation type="unfinished"></translation>
682682 </message>
683683 <message>
684 <location filename="../widgets/main_window.cpp" line="317"/>
684 <location filename="../widgets/main_window.cpp" line="333"/>
685685 <source>&amp;Switch Session...</source>
686686 <translation type="unfinished"></translation>
687687 </message>
688688 <message>
689 <location filename="../widgets/main_window.cpp" line="319"/>
689 <location filename="../widgets/main_window.cpp" line="335"/>
690690 <source>Ctrl+Shift+Q</source>
691691 <comment>Switch Session</comment>
692692 <translation type="unfinished"></translation>
693693 </message>
694694 <message>
695 <location filename="../widgets/main_window.cpp" line="324"/>
695 <location filename="../widgets/main_window.cpp" line="340"/>
696696 <source>&amp;Find...</source>
697697 <translation type="unfinished"></translation>
698698 </message>
699699 <message>
700 <location filename="../widgets/main_window.cpp" line="325"/>
700 <location filename="../widgets/main_window.cpp" line="341"/>
701701 <source>Ctrl+F</source>
702702 <comment>Find</comment>
703703 <translation type="unfinished"></translation>
704704 </message>
705705 <message>
706 <location filename="../widgets/main_window.cpp" line="326"/>
706 <location filename="../widgets/main_window.cpp" line="342"/>
707707 <source>Find text in document</source>
708708 <translation type="unfinished"></translation>
709709 </message>
710710 <message>
711 <location filename="../widgets/main_window.cpp" line="331"/>
711 <location filename="../widgets/main_window.cpp" line="347"/>
712712 <source>&amp;Replace...</source>
713713 <translation type="unfinished"></translation>
714714 </message>
715715 <message>
716 <location filename="../widgets/main_window.cpp" line="332"/>
716 <location filename="../widgets/main_window.cpp" line="348"/>
717717 <source>Ctrl+R</source>
718718 <comment>Replace</comment>
719719 <translation type="unfinished"></translation>
720720 </message>
721721 <message>
722 <location filename="../widgets/main_window.cpp" line="333"/>
722 <location filename="../widgets/main_window.cpp" line="349"/>
723723 <source>Find and replace text in document</source>
724724 <translation type="unfinished"></translation>
725725 </message>
726726 <message>
727 <location filename="../widgets/main_window.cpp" line="338"/>
727 <location filename="../widgets/main_window.cpp" line="354"/>
728728 <source>&amp;Command Line</source>
729729 <translation type="unfinished"></translation>
730730 </message>
731731 <message>
732 <location filename="../widgets/main_window.cpp" line="339"/>
732 <location filename="../widgets/main_window.cpp" line="355"/>
733733 <source>Command line for quick code evaluation</source>
734734 <translation type="unfinished"></translation>
735735 </message>
736736 <message>
737 <location filename="../widgets/main_window.cpp" line="340"/>
737 <location filename="../widgets/main_window.cpp" line="356"/>
738738 <source>Ctrl+E</source>
739739 <comment>Show command line</comment>
740740 <translation type="unfinished"></translation>
741741 </message>
742742 <message>
743 <location filename="../widgets/main_window.cpp" line="344"/>
743 <location filename="../widgets/main_window.cpp" line="360"/>
744744 <source>&amp;Go To Line</source>
745745 <translation type="unfinished"></translation>
746746 </message>
747747 <message>
748 <location filename="../widgets/main_window.cpp" line="345"/>
748 <location filename="../widgets/main_window.cpp" line="361"/>
749749 <source>Tool to jump to a line by number</source>
750750 <translation type="unfinished"></translation>
751751 </message>
752752 <message>
753 <location filename="../widgets/main_window.cpp" line="346"/>
753 <location filename="../widgets/main_window.cpp" line="362"/>
754754 <source>Ctrl+L</source>
755755 <comment>Show go-to-line tool</comment>
756756 <translation type="unfinished"></translation>
757757 </message>
758758 <message>
759 <location filename="../widgets/main_window.cpp" line="351"/>
759 <location filename="../widgets/main_window.cpp" line="367"/>
760760 <source>&amp;Close Tool Panel</source>
761761 <translation type="unfinished"></translation>
762762 </message>
763763 <message>
764 <location filename="../widgets/main_window.cpp" line="352"/>
764 <location filename="../widgets/main_window.cpp" line="368"/>
765765 <source>Close any open tool panel</source>
766766 <translation type="unfinished"></translation>
767767 </message>
768768 <message>
769 <location filename="../widgets/main_window.cpp" line="353"/>
769 <location filename="../widgets/main_window.cpp" line="369"/>
770770 <source>Esc</source>
771771 <comment>Close tool box</comment>
772772 <translation type="unfinished"></translation>
773773 </message>
774774 <message>
775 <location filename="../widgets/main_window.cpp" line="357"/>
775 <location filename="../widgets/main_window.cpp" line="373"/>
776776 <source>&amp;Full Screen</source>
777777 <translation type="unfinished"></translation>
778778 </message>
779779 <message>
780 <location filename="../widgets/main_window.cpp" line="359"/>
780 <location filename="../widgets/main_window.cpp" line="375"/>
781781 <source>Ctrl+Shift+F</source>
782782 <comment>Show ScIDE in Full Screen</comment>
783783 <translation type="unfinished"></translation>
784784 </message>
785785 <message>
786 <location filename="../widgets/main_window.cpp" line="363"/>
786 <location filename="../widgets/main_window.cpp" line="379"/>
787787 <source>Focus Post Window</source>
788788 <translation type="unfinished"></translation>
789789 </message>
790790 <message>
791 <location filename="../widgets/main_window.cpp" line="364"/>
791 <location filename="../widgets/main_window.cpp" line="380"/>
792792 <source>Focus post window</source>
793793 <translation type="unfinished"></translation>
794794 </message>
795795 <message>
796 <location filename="../widgets/main_window.cpp" line="365"/>
796 <location filename="../widgets/main_window.cpp" line="381"/>
797797 <source>Ctrl+P</source>
798798 <comment>Focus post window</comment>
799799 <translation type="unfinished"></translation>
800800 </message>
801801 <message>
802 <location filename="../widgets/main_window.cpp" line="371"/>
802 <location filename="../widgets/main_window.cpp" line="387"/>
803803 <source>Look Up Implementations...</source>
804804 <translation type="unfinished"></translation>
805805 </message>
806806 <message>
807 <location filename="../widgets/main_window.cpp" line="372"/>
807 <location filename="../widgets/main_window.cpp" line="388"/>
808808 <source>Ctrl+Shift+I</source>
809809 <comment>Look Up Implementations</comment>
810810 <translation type="unfinished"></translation>
811811 </message>
812812 <message>
813 <location filename="../widgets/main_window.cpp" line="373"/>
813 <location filename="../widgets/main_window.cpp" line="389"/>
814814 <source>Open dialog to look up implementations of a class or a method</source>
815815 <translation type="unfinished"></translation>
816816 </message>
817817 <message>
818 <location filename="../widgets/main_window.cpp" line="377"/>
818 <location filename="../widgets/main_window.cpp" line="393"/>
819819 <source>Look Up Implementations for Cursor</source>
820820 <translation type="unfinished"></translation>
821821 </message>
822822 <message>
823 <location filename="../widgets/main_window.cpp" line="378"/>
823 <location filename="../widgets/main_window.cpp" line="394"/>
824824 <source>Ctrl+I</source>
825825 <comment>Look Up Implementations for Cursor</comment>
826826 <translation type="unfinished"></translation>
827827 </message>
828828 <message>
829 <location filename="../widgets/main_window.cpp" line="379"/>
829 <location filename="../widgets/main_window.cpp" line="395"/>
830830 <source>Look up implementations of class or method under cursor</source>
831831 <translation type="unfinished"></translation>
832832 </message>
833833 <message>
834 <location filename="../widgets/main_window.cpp" line="384"/>
834 <location filename="../widgets/main_window.cpp" line="400"/>
835835 <source>Look Up References...</source>
836836 <translation type="unfinished"></translation>
837837 </message>
838838 <message>
839 <location filename="../widgets/main_window.cpp" line="385"/>
839 <location filename="../widgets/main_window.cpp" line="401"/>
840840 <source>Ctrl+Shift+U</source>
841841 <comment>Look Up References</comment>
842842 <translation type="unfinished"></translation>
843843 </message>
844844 <message>
845 <location filename="../widgets/main_window.cpp" line="386"/>
845 <location filename="../widgets/main_window.cpp" line="402"/>
846846 <source>Open dialog to look up references to a class or a method</source>
847847 <translation type="unfinished"></translation>
848848 </message>
849849 <message>
850 <location filename="../widgets/main_window.cpp" line="390"/>
850 <location filename="../widgets/main_window.cpp" line="406"/>
851851 <source>Look Up References for Cursor</source>
852852 <translation type="unfinished"></translation>
853853 </message>
854854 <message>
855 <location filename="../widgets/main_window.cpp" line="391"/>
855 <location filename="../widgets/main_window.cpp" line="407"/>
856856 <source>Ctrl+U</source>
857857 <comment>Look Up References For Selection</comment>
858858 <translation type="unfinished"></translation>
859859 </message>
860860 <message>
861 <location filename="../widgets/main_window.cpp" line="392"/>
861 <location filename="../widgets/main_window.cpp" line="408"/>
862862 <source>Look up references to class or method under cursor</source>
863863 <translation type="unfinished"></translation>
864864 </message>
865865 <message>
866 <location filename="../widgets/main_window.cpp" line="397"/>
866 <location filename="../widgets/main_window.cpp" line="413"/>
867867 <source>&amp;Preferences</source>
868868 <translation type="unfinished"></translation>
869869 </message>
870870 <message>
871 <location filename="../widgets/main_window.cpp" line="399"/>
871 <location filename="../widgets/main_window.cpp" line="415"/>
872872 <source>Ctrl+,</source>
873873 <comment>Show configuration dialog</comment>
874874 <translation type="unfinished"></translation>
875875 </message>
876876 <message>
877 <location filename="../widgets/main_window.cpp" line="401"/>
877 <location filename="../widgets/main_window.cpp" line="417"/>
878878 <source>Show configuration dialog</source>
879879 <translation type="unfinished"></translation>
880880 </message>
881881 <message>
882 <location filename="../widgets/main_window.cpp" line="407"/>
882 <location filename="../widgets/main_window.cpp" line="423"/>
883883 <source>Open &amp;Help Browser</source>
884884 <translation type="unfinished"></translation>
885885 </message>
886886 <message>
887 <location filename="../widgets/main_window.cpp" line="408"/>
887 <location filename="../widgets/main_window.cpp" line="424"/>
888888 <source>Open help</source>
889889 <translation type="unfinished"></translation>
890890 </message>
891891 <message>
892 <location filename="../widgets/main_window.cpp" line="413"/>
892 <location filename="../widgets/main_window.cpp" line="429"/>
893893 <source>Look Up Documentation for Cursor</source>
894894 <translation type="unfinished"></translation>
895895 </message>
896896 <message>
897 <location filename="../widgets/main_window.cpp" line="414"/>
897 <location filename="../widgets/main_window.cpp" line="430"/>
898898 <source>Ctrl+D</source>
899899 <comment>Look Up Documentation for Cursor</comment>
900900 <translation type="unfinished"></translation>
901901 </message>
902902 <message>
903 <location filename="../widgets/main_window.cpp" line="415"/>
903 <location filename="../widgets/main_window.cpp" line="431"/>
904904 <source>Look up documentation for text under cursor</source>
905905 <translation type="unfinished"></translation>
906906 </message>
907907 <message>
908 <location filename="../widgets/main_window.cpp" line="420"/>
908 <location filename="../widgets/main_window.cpp" line="436"/>
909909 <source>Look Up Documentation...</source>
910910 <translation type="unfinished"></translation>
911911 </message>
912912 <message>
913 <location filename="../widgets/main_window.cpp" line="421"/>
913 <location filename="../widgets/main_window.cpp" line="437"/>
914914 <source>Ctrl+Shift+D</source>
915915 <comment>Look Up Documentation</comment>
916916 <translation type="unfinished"></translation>
917917 </message>
918918 <message>
919 <location filename="../widgets/main_window.cpp" line="422"/>
919 <location filename="../widgets/main_window.cpp" line="438"/>
920920 <source>Enter text to look up in documentation</source>
921921 <translation type="unfinished"></translation>
922922 </message>
923923 <message>
924 <location filename="../widgets/main_window.cpp" line="427"/>
924 <location filename="../widgets/main_window.cpp" line="443"/>
925925 <source>&amp;About SuperCollider</source>
926926 <translation type="unfinished"></translation>
927927 </message>
928928 <message>
929 <location filename="../widgets/main_window.cpp" line="432"/>
929 <location filename="../widgets/main_window.cpp" line="448"/>
930930 <source>About &amp;Qt</source>
931931 <translation type="unfinished"></translation>
932932 </message>
933933 <message>
934 <location filename="../widgets/main_window.cpp" line="439"/>
934 <location filename="../widgets/main_window.cpp" line="455"/>
935935 <source>Show/hide Post docklet</source>
936936 <translation type="unfinished"></translation>
937937 </message>
938938 <message>
939 <location filename="../widgets/main_window.cpp" line="445"/>
939 <location filename="../widgets/main_window.cpp" line="461"/>
940940 <source>Show/hide Documents docklet</source>
941941 <translation type="unfinished"></translation>
942942 </message>
943943 <message>
944 <location filename="../widgets/main_window.cpp" line="451"/>
944 <location filename="../widgets/main_window.cpp" line="467"/>
945945 <source>Show/hide Help browser docklet</source>
946946 <translation type="unfinished"></translation>
947947 </message>
948948 <message>
949 <location filename="../widgets/main_window.cpp" line="461"/>
949 <location filename="../widgets/main_window.cpp" line="494"/>
950950 <source>&amp;File</source>
951951 <translation type="unfinished"></translation>
952952 </message>
953953 <message>
954 <location filename="../widgets/main_window.cpp" line="464"/>
954 <location filename="../widgets/main_window.cpp" line="497"/>
955955 <source>Open Recent</source>
956956 <comment>Open a recent document</comment>
957957 <translation type="unfinished"></translation>
958958 </message>
959959 <message>
960 <location filename="../widgets/main_window.cpp" line="481"/>
960 <location filename="../widgets/main_window.cpp" line="514"/>
961961 <source>&amp;Session</source>
962962 <translation type="unfinished"></translation>
963963 </message>
964964 <message>
965 <location filename="../widgets/main_window.cpp" line="484"/>
965 <location filename="../widgets/main_window.cpp" line="517"/>
966966 <source>&amp;Open Session</source>
967967 <translation type="unfinished"></translation>
968968 </message>
969969 <message>
970 <location filename="../widgets/main_window.cpp" line="495"/>
970 <location filename="../widgets/main_window.cpp" line="528"/>
971971 <source>&amp;Edit</source>
972972 <translation type="unfinished"></translation>
973973 </message>
974974 <message>
975 <location filename="../widgets/main_window.cpp" line="519"/>
975 <location filename="../widgets/main_window.cpp" line="552"/>
976976 <source>&amp;View</source>
977977 <translation type="unfinished"></translation>
978978 </message>
979979 <message>
980 <location filename="../widgets/main_window.cpp" line="520"/>
980 <location filename="../widgets/main_window.cpp" line="553"/>
981981 <source>&amp;Docklets</source>
982982 <translation type="unfinished"></translation>
983983 </message>
984984 <message>
985 <location filename="../widgets/main_window.cpp" line="526"/>
985 <location filename="../widgets/main_window.cpp" line="559"/>
986986 <source>&amp;Tool Panels</source>
987987 <translation type="unfinished"></translation>
988988 </message>
989989 <message>
990 <location filename="../widgets/main_window.cpp" line="554"/>
990 <location filename="../widgets/main_window.cpp" line="587"/>
991991 <source>&amp;Language</source>
992992 <translation type="unfinished"></translation>
993993 </message>
994994 <message>
995 <location filename="../widgets/main_window.cpp" line="577"/>
995 <location filename="../widgets/main_window.cpp" line="610"/>
996996 <source>&amp;Help</source>
997997 <translation type="unfinished"></translation>
998998 </message>
999999 <message>
1000 <location filename="../widgets/main_window.cpp" line="697"/>
1000 <location filename="../widgets/main_window.cpp" line="730"/>
10011001 <source>Save Current Session</source>
10021002 <translation type="unfinished"></translation>
10031003 </message>
10041004 <message>
1005 <location filename="../widgets/main_window.cpp" line="698"/>
1005 <location filename="../widgets/main_window.cpp" line="731"/>
10061006 <source>Enter a name for the session:</source>
10071007 <translation type="unfinished"></translation>
10081008 </message>
10091009 <message>
1010 <location filename="../widgets/main_window.cpp" line="827"/>
1010 <location filename="../widgets/main_window.cpp" line="860"/>
10111011 <source>Booting</source>
10121012 <translation type="unfinished"></translation>
10131013 </message>
10141014 <message>
1015 <location filename="../widgets/main_window.cpp" line="834"/>
1015 <location filename="../widgets/main_window.cpp" line="867"/>
10161016 <source>Active</source>
10171017 <translation type="unfinished"></translation>
10181018 </message>
10191019 <message>
1020 <location filename="../widgets/main_window.cpp" line="878"/>
1021 <location filename="../widgets/main_window.cpp" line="910"/>
1020 <location filename="../widgets/main_window.cpp" line="911"/>
1021 <location filename="../widgets/main_window.cpp" line="943"/>
10221022 <source>SuperCollider IDE</source>
10231023 <translation type="unfinished"></translation>
10241024 </message>
10251025 <message>
1026 <location filename="../widgets/main_window.cpp" line="879"/>
1026 <location filename="../widgets/main_window.cpp" line="912"/>
10271027 <source>There are unsaved changes in document &apos;%1&apos;.
10281028
10291029 Do you want to save it?</source>
10301030 <translation type="unfinished"></translation>
10311031 </message>
10321032 <message>
1033 <location filename="../widgets/main_window.cpp" line="911"/>
1033 <location filename="../widgets/main_window.cpp" line="944"/>
10341034 <source>There are unsaved changes in document &apos;%1&apos;.
10351035
10361036 Do you want to reload it?</source>
10371037 <translation type="unfinished"></translation>
10381038 </message>
10391039 <message>
1040 <location filename="../widgets/main_window.cpp" line="938"/>
1040 <location filename="../widgets/main_window.cpp" line="971"/>
10411041 <source>Saving read-only file</source>
10421042 <translation type="unfinished"></translation>
10431043 </message>
10441044 <message>
1045 <location filename="../widgets/main_window.cpp" line="939"/>
1045 <location filename="../widgets/main_window.cpp" line="972"/>
10461046 <source>File is read-only. Please select a new location to save to.</source>
10471047 <translation type="unfinished"></translation>
10481048 </message>
10491049 <message>
1050 <location filename="../widgets/main_window.cpp" line="950"/>
1050 <location filename="../widgets/main_window.cpp" line="983"/>
10511051 <source>SuperCollider Document (*.scd)</source>
10521052 <translation type="unfinished"></translation>
10531053 </message>
10541054 <message>
1055 <location filename="../widgets/main_window.cpp" line="951"/>
1055 <location filename="../widgets/main_window.cpp" line="984"/>
10561056 <source>SuperCollider Class file (*.sc)</source>
10571057 <translation type="unfinished"></translation>
10581058 </message>
10591059 <message>
1060 <location filename="../widgets/main_window.cpp" line="953"/>
1061 <location filename="../widgets/main_window.cpp" line="1002"/>
1060 <location filename="../widgets/main_window.cpp" line="986"/>
1061 <location filename="../widgets/main_window.cpp" line="1035"/>
10621062 <source>All files (*)</source>
10631063 <translation type="unfinished"></translation>
10641064 </message>
10651065 <message>
1066 <location filename="../widgets/main_window.cpp" line="1003"/>
1066 <location filename="../widgets/main_window.cpp" line="1036"/>
10671067 <source>SuperCollider (*.scd *.sc)</source>
10681068 <translation type="unfinished"></translation>
10691069 </message>
10701070 <message>
1071 <location filename="../widgets/main_window.cpp" line="1004"/>
1071 <location filename="../widgets/main_window.cpp" line="1037"/>
10721072 <source>SCDoc (*.schelp)</source>
10731073 <translation type="unfinished"></translation>
10741074 </message>
10751075 <message>
1076 <location filename="../widgets/main_window.cpp" line="1148"/>
1076 <location filename="../widgets/main_window.cpp" line="1181"/>
10771077 <source>Untitled</source>
10781078 <translation type="unfinished"></translation>
10791079 </message>
10801080 <message>
1081 <location filename="../widgets/main_window.cpp" line="1274"/>
1081 <location filename="../widgets/main_window.cpp" line="1311"/>
10821082 <source>About SuperCollider IDE</source>
10831083 <translation type="unfinished"></translation>
10841084 </message>
10851085 <message>
1086 <location filename="../widgets/main_window.cpp" line="1356"/>
1086 <location filename="../widgets/main_window.cpp" line="1393"/>
10871087 <source>Look up Documentation For</source>
10881088 <translation type="unfinished"></translation>
10891089 </message>
10901090 <message>
1091 <location filename="../widgets/main_window.cpp" line="1405"/>
1091 <location filename="../widgets/main_window.cpp" line="1448"/>
10921092 <source>Open binary file?</source>
10931093 <translation type="unfinished"></translation>
10941094 </message>
10951095 <message>
1096 <location filename="../widgets/main_window.cpp" line="1406"/>
1096 <location filename="../widgets/main_window.cpp" line="1449"/>
10971097 <source>
10981098
10991099 The file has an unrecognized extension. It may be a binary file. Would you still like to open it?</source>
15531553 <context>
15541554 <name>ScIDE::PostDocklet</name>
15551555 <message>
1556 <location filename="../widgets/post_window.cpp" line="294"/>
1556 <location filename="../widgets/post_window.cpp" line="304"/>
15571557 <source>Post window</source>
15581558 <translation type="unfinished"></translation>
15591559 </message>
15611561 <context>
15621562 <name>ScIDE::PostWindow</name>
15631563 <message>
1564 <location filename="../widgets/post_window.cpp" line="64"/>
1564 <location filename="../widgets/post_window.cpp" line="65"/>
15651565 <source>Post Window</source>
15661566 <translation type="unfinished"></translation>
15671567 </message>
15681568 <message>
1569 <location filename="../widgets/post_window.cpp" line="66"/>
1569 <location filename="../widgets/post_window.cpp" line="67"/>
15701570 <source>Copy</source>
15711571 <translation type="unfinished"></translation>
15721572 </message>
15731573 <message>
1574 <location filename="../widgets/post_window.cpp" line="74"/>
1574 <location filename="../widgets/post_window.cpp" line="75"/>
15751575 <source>Clear</source>
15761576 <translation type="unfinished"></translation>
15771577 </message>
15781578 <message>
1579 <location filename="../widgets/post_window.cpp" line="75"/>
1579 <location filename="../widgets/post_window.cpp" line="76"/>
15801580 <source>Clear post window</source>
15811581 <translation type="unfinished"></translation>
15821582 </message>
15831583 <message>
1584 <location filename="../widgets/post_window.cpp" line="77"/>
1584 <location filename="../widgets/post_window.cpp" line="78"/>
15851585 <source>Ctrl+Shift+P</source>
15861586 <comment>Clear post window</comment>
15871587 <translation type="unfinished"></translation>
15881588 </message>
15891589 <message>
1590 <location filename="../widgets/post_window.cpp" line="86"/>
1590 <location filename="../widgets/post_window.cpp" line="87"/>
15911591 <source>Enlarge Font</source>
15921592 <translation type="unfinished"></translation>
15931593 </message>
15941594 <message>
1595 <location filename="../widgets/post_window.cpp" line="88"/>
1595 <location filename="../widgets/post_window.cpp" line="89"/>
15961596 <source>Enlarge post window font</source>
15971597 <translation type="unfinished"></translation>
15981598 </message>
15991599 <message>
1600 <location filename="../widgets/post_window.cpp" line="92"/>
1600 <location filename="../widgets/post_window.cpp" line="93"/>
16011601 <source>Shrink Font</source>
16021602 <translation type="unfinished"></translation>
16031603 </message>
16041604 <message>
1605 <location filename="../widgets/post_window.cpp" line="94"/>
1605 <location filename="../widgets/post_window.cpp" line="95"/>
16061606 <source>Shrink post window font</source>
16071607 <translation type="unfinished"></translation>
16081608 </message>
16091609 <message>
1610 <location filename="../widgets/post_window.cpp" line="102"/>
1610 <location filename="../widgets/post_window.cpp" line="103"/>
16111611 <source>Wrap Text</source>
16121612 <translation type="unfinished"></translation>
16131613 </message>
16141614 <message>
1615 <location filename="../widgets/post_window.cpp" line="103"/>
1615 <location filename="../widgets/post_window.cpp" line="104"/>
16161616 <source>Wrap lines wider than the post window</source>
16171617 <translation type="unfinished"></translation>
16181618 </message>
16191619 <message>
1620 <location filename="../widgets/post_window.cpp" line="109"/>
1620 <location filename="../widgets/post_window.cpp" line="110"/>
16211621 <source>Auto Scroll</source>
16221622 <translation type="unfinished"></translation>
16231623 </message>
16241624 <message>
1625 <location filename="../widgets/post_window.cpp" line="110"/>
1625 <location filename="../widgets/post_window.cpp" line="111"/>
16261626 <source>Scroll to bottom on new posts</source>
16271627 <translation type="unfinished"></translation>
16281628 </message>
16301630 <context>
16311631 <name>ScIDE::ReferencesDialog</name>
16321632 <message>
1633 <location filename="../widgets/lookup_dialog.cpp" line="431"/>
1633 <location filename="../widgets/lookup_dialog.cpp" line="425"/>
16341634 <source>Look Up References</source>
16351635 <translation type="unfinished"></translation>
16361636 </message>
16371637 <message>
1638 <location filename="../widgets/lookup_dialog.cpp" line="433"/>
1638 <location filename="../widgets/lookup_dialog.cpp" line="427"/>
16391639 <source>Enter class or method name...</source>
16401640 <translation type="unfinished"></translation>
16411641 </message>
16421642 <message>
1643 <location filename="../widgets/lookup_dialog.cpp" line="469"/>
1643 <location filename="../widgets/lookup_dialog.cpp" line="463"/>
16441644 <source>Introspection data not yet available</source>
16451645 <translation type="unfinished"></translation>
16461646 </message>
16551655 <message>
16561656 <location filename="../core/sc_process.cpp" line="67"/>
16571657 <location filename="../core/sc_process.cpp" line="71"/>
1658 <location filename="../core/sc_process.cpp" line="265"/>
1658 <location filename="../core/sc_process.cpp" line="266"/>
16591659 <source>Boot Interpreter</source>
16601660 <translation type="unfinished"></translation>
16611661 </message>
16621662 <message>
16631663 <location filename="../core/sc_process.cpp" line="75"/>
1664 <location filename="../core/sc_process.cpp" line="248"/>
1664 <location filename="../core/sc_process.cpp" line="249"/>
16651665 <source>Quit Interpreter</source>
16661666 <translation type="unfinished"></translation>
16671667 </message>
16931693 <translation type="unfinished"></translation>
16941694 </message>
16951695 <message>
1696 <location filename="../core/sc_process.cpp" line="113"/>
1696 <location filename="../core/sc_process.cpp" line="114"/>
16971697 <source>Interpreter is already running.</source>
16981698 <translation type="unfinished"></translation>
16991699 </message>
17001700 <message>
1701 <location filename="../core/sc_process.cpp" line="146"/>
1701 <location filename="../core/sc_process.cpp" line="147"/>
17021702 <source>Failed to start interpreter!</source>
17031703 <translation type="unfinished"></translation>
17041704 </message>
17051705 <message>
1706 <location filename="../core/sc_process.cpp" line="152"/>
1707 <location filename="../core/sc_process.cpp" line="163"/>
1708 <location filename="../core/sc_process.cpp" line="210"/>
1706 <location filename="../core/sc_process.cpp" line="153"/>
1707 <location filename="../core/sc_process.cpp" line="164"/>
1708 <location filename="../core/sc_process.cpp" line="211"/>
17091709 <source>Interpreter is not running!</source>
17101710 <translation type="unfinished"></translation>
17111711 </message>
17121712 <message>
1713 <location filename="../core/sc_process.cpp" line="181"/>
1713 <location filename="../core/sc_process.cpp" line="182"/>
17141714 <source>Failed to stop interpreter!</source>
17151715 <translation type="unfinished"></translation>
17161716 </message>
17171717 <message>
1718 <location filename="../core/sc_process.cpp" line="217"/>
1718 <location filename="../core/sc_process.cpp" line="218"/>
17191719 <source>Error when passing data to interpreter!</source>
17201720 <translation type="unfinished"></translation>
17211721 </message>
250250 <translation type="unfinished"></translation>
251251 </message>
252252 <message>
253 <location filename="../core/doc_manager.cpp" line="290"/>
254 <location filename="../core/doc_manager.cpp" line="297"/>
253 <location filename="../core/doc_manager.cpp" line="298"/>
254 <location filename="../core/doc_manager.cpp" line="305"/>
255255 <source>File Extension Changed</source>
256256 <translation type="unfinished"></translation>
257257 </message>
258258 <message>
259 <location filename="../core/doc_manager.cpp" line="291"/>
260 <location filename="../core/doc_manager.cpp" line="298"/>
259 <location filename="../core/doc_manager.cpp" line="299"/>
260 <location filename="../core/doc_manager.cpp" line="306"/>
261261 <source>The extension of the file has changed. Please reopen file to update editor mode</source>
262262 <translation type="unfinished"></translation>
263263 </message>
417417 <context>
418418 <name>ScIDE::HelpBrowserDocklet</name>
419419 <message>
420 <location filename="../widgets/help_browser.cpp" line="378"/>
420 <location filename="../widgets/help_browser.cpp" line="399"/>
421421 <source>Help browser</source>
422422 <translation type="unfinished"></translation>
423423 </message>
425425 <context>
426426 <name>ScIDE::HelpBrowserFindBox</name>
427427 <message>
428 <location filename="../widgets/help_browser.cpp" line="339"/>
428 <location filename="../widgets/help_browser.cpp" line="360"/>
429429 <source>Find...</source>
430430 <translation type="unfinished"></translation>
431431 </message>
441441 <context>
442442 <name>ScIDE::LookupDialog</name>
443443 <message>
444 <location filename="../widgets/lookup_dialog.cpp" line="186"/>
444 <location filename="../widgets/lookup_dialog.cpp" line="180"/>
445445 <source>Look Up Implementations</source>
446446 <translation type="unfinished"></translation>
447447 </message>
448448 <message>
449 <location filename="../widgets/lookup_dialog.cpp" line="188"/>
449 <location filename="../widgets/lookup_dialog.cpp" line="182"/>
450450 <source>Enter class or method name...</source>
451451 <translation type="unfinished"></translation>
452452 </message>
453453 <message>
454 <location filename="../widgets/lookup_dialog.cpp" line="203"/>
454 <location filename="../widgets/lookup_dialog.cpp" line="197"/>
455455 <source>Introspection data not yet available</source>
456456 <translation type="unfinished"></translation>
457457 </message>
458458 <message>
459 <location filename="../widgets/lookup_dialog.cpp" line="365"/>
459 <location filename="../widgets/lookup_dialog.cpp" line="359"/>
460460 <source>No result for query</source>
461461 <translation type="unfinished"></translation>
462462 </message>
464464 <context>
465465 <name>ScIDE::MainWindow</name>
466466 <message>
467 <location filename="../widgets/main_window.cpp" line="78"/>
468 <location filename="../widgets/main_window.cpp" line="822"/>
467 <location filename="../widgets/main_window.cpp" line="94"/>
468 <location filename="../widgets/main_window.cpp" line="855"/>
469469 <source>Inactive</source>
470470 <translation type="unfinished"></translation>
471471 </message>
472472 <message>
473 <location filename="../widgets/main_window.cpp" line="83"/>
473 <location filename="../widgets/main_window.cpp" line="99"/>
474474 <source>Interpreter:</source>
475475 <translation type="unfinished"></translation>
476476 </message>
477477 <message>
478 <location filename="../widgets/main_window.cpp" line="85"/>
478 <location filename="../widgets/main_window.cpp" line="101"/>
479479 <source>Server:</source>
480480 <translation type="unfinished"></translation>
481481 </message>
482482 <message>
483 <location filename="../widgets/main_window.cpp" line="93"/>
483 <location filename="../widgets/main_window.cpp" line="109"/>
484484 <source>Command Line:</source>
485485 <translation type="unfinished"></translation>
486486 </message>
487487 <message>
488 <location filename="../widgets/main_window.cpp" line="219"/>
488 <location filename="../widgets/main_window.cpp" line="235"/>
489489 <source>Text Editor</source>
490490 <translation type="unfinished"></translation>
491491 </message>
492492 <message>
493 <location filename="../widgets/main_window.cpp" line="220"/>
493 <location filename="../widgets/main_window.cpp" line="236"/>
494494 <source>Help</source>
495495 <translation type="unfinished"></translation>
496496 </message>
497497 <message>
498 <location filename="../widgets/main_window.cpp" line="224"/>
498 <location filename="../widgets/main_window.cpp" line="240"/>
499499 <source>&amp;Quit...</source>
500500 <translation type="unfinished"></translation>
501501 </message>
502502 <message>
503 <location filename="../widgets/main_window.cpp" line="225"/>
503 <location filename="../widgets/main_window.cpp" line="241"/>
504504 <source>Ctrl+Q</source>
505505 <comment>Quit application</comment>
506506 <translation type="unfinished"></translation>
507507 </message>
508508 <message>
509 <location filename="../widgets/main_window.cpp" line="226"/>
509 <location filename="../widgets/main_window.cpp" line="242"/>
510510 <source>Quit SuperCollider IDE</source>
511511 <translation type="unfinished"></translation>
512512 </message>
513513 <message>
514 <location filename="../widgets/main_window.cpp" line="231"/>
514 <location filename="../widgets/main_window.cpp" line="247"/>
515515 <source>&amp;New</source>
516516 <translation type="unfinished"></translation>
517517 </message>
518518 <message>
519 <location filename="../widgets/main_window.cpp" line="232"/>
519 <location filename="../widgets/main_window.cpp" line="248"/>
520520 <source>Ctrl+N</source>
521521 <comment>New document</comment>
522522 <translation type="unfinished"></translation>
523523 </message>
524524 <message>
525 <location filename="../widgets/main_window.cpp" line="233"/>
525 <location filename="../widgets/main_window.cpp" line="249"/>
526526 <source>Create a new document</source>
527527 <translation type="unfinished"></translation>
528528 </message>
529529 <message>
530 <location filename="../widgets/main_window.cpp" line="238"/>
530 <location filename="../widgets/main_window.cpp" line="254"/>
531531 <source>&amp;Open...</source>
532532 <translation type="unfinished"></translation>
533533 </message>
534534 <message>
535 <location filename="../widgets/main_window.cpp" line="239"/>
535 <location filename="../widgets/main_window.cpp" line="255"/>
536536 <source>Ctrl+O</source>
537537 <comment>Open document</comment>
538538 <translation type="unfinished"></translation>
539539 </message>
540540 <message>
541 <location filename="../widgets/main_window.cpp" line="240"/>
541 <location filename="../widgets/main_window.cpp" line="256"/>
542542 <source>Open an existing file</source>
543543 <translation type="unfinished"></translation>
544544 </message>
545545 <message>
546 <location filename="../widgets/main_window.cpp" line="245"/>
547 <location filename="../widgets/main_window.cpp" line="246"/>
546 <location filename="../widgets/main_window.cpp" line="261"/>
547 <location filename="../widgets/main_window.cpp" line="262"/>
548548 <source>Open startup file</source>
549549 <translation type="unfinished"></translation>
550550 </message>
551551 <message>
552 <location filename="../widgets/main_window.cpp" line="251"/>
552 <location filename="../widgets/main_window.cpp" line="267"/>
553553 <source>&amp;Save</source>
554554 <translation type="unfinished"></translation>
555555 </message>
556556 <message>
557 <location filename="../widgets/main_window.cpp" line="252"/>
557 <location filename="../widgets/main_window.cpp" line="268"/>
558558 <source>Ctrl+S</source>
559559 <comment>Save document</comment>
560560 <translation type="unfinished"></translation>
561561 </message>
562562 <message>
563 <location filename="../widgets/main_window.cpp" line="253"/>
563 <location filename="../widgets/main_window.cpp" line="269"/>
564564 <source>Save the current document</source>
565565 <translation type="unfinished"></translation>
566566 </message>
567567 <message>
568 <location filename="../widgets/main_window.cpp" line="258"/>
568 <location filename="../widgets/main_window.cpp" line="274"/>
569569 <source>Save &amp;As...</source>
570570 <translation type="unfinished"></translation>
571571 </message>
572572 <message>
573 <location filename="../widgets/main_window.cpp" line="259"/>
573 <location filename="../widgets/main_window.cpp" line="275"/>
574574 <source>Ctrl+Shift+S</source>
575575 <comment>Save &amp;As...</comment>
576576 <translation type="unfinished"></translation>
577577 </message>
578578 <message>
579 <location filename="../widgets/main_window.cpp" line="260"/>
579 <location filename="../widgets/main_window.cpp" line="276"/>
580580 <source>Save the current document into a different file</source>
581581 <translation type="unfinished"></translation>
582582 </message>
583583 <message>
584 <location filename="../widgets/main_window.cpp" line="265"/>
584 <location filename="../widgets/main_window.cpp" line="281"/>
585585 <source>Save All...</source>
586586 <translation type="unfinished"></translation>
587587 </message>
588588 <message>
589 <location filename="../widgets/main_window.cpp" line="266"/>
589 <location filename="../widgets/main_window.cpp" line="282"/>
590590 <source>Ctrl+Alt+S</source>
591591 <comment>Save all documents</comment>
592592 <translation type="unfinished"></translation>
593593 </message>
594594 <message>
595 <location filename="../widgets/main_window.cpp" line="267"/>
595 <location filename="../widgets/main_window.cpp" line="283"/>
596596 <source>Save all open documents</source>
597597 <translation type="unfinished"></translation>
598598 </message>
599599 <message>
600 <location filename="../widgets/main_window.cpp" line="272"/>
600 <location filename="../widgets/main_window.cpp" line="288"/>
601601 <source>&amp;Close</source>
602602 <translation type="unfinished"></translation>
603603 </message>
604604 <message>
605 <location filename="../widgets/main_window.cpp" line="273"/>
605 <location filename="../widgets/main_window.cpp" line="289"/>
606606 <source>Ctrl+W</source>
607607 <comment>Close document</comment>
608608 <translation type="unfinished"></translation>
609609 </message>
610610 <message>
611 <location filename="../widgets/main_window.cpp" line="274"/>
611 <location filename="../widgets/main_window.cpp" line="290"/>
612612 <source>Close the current document</source>
613613 <translation type="unfinished"></translation>
614614 </message>
615615 <message>
616 <location filename="../widgets/main_window.cpp" line="279"/>
616 <location filename="../widgets/main_window.cpp" line="295"/>
617617 <source>Close All...</source>
618618 <translation type="unfinished"></translation>
619619 </message>
620620 <message>
621 <location filename="../widgets/main_window.cpp" line="280"/>
621 <location filename="../widgets/main_window.cpp" line="296"/>
622622 <source>Ctrl+Shift+W</source>
623623 <comment>Close all documents</comment>
624624 <translation type="unfinished"></translation>
625625 </message>
626626 <message>
627 <location filename="../widgets/main_window.cpp" line="281"/>
627 <location filename="../widgets/main_window.cpp" line="297"/>
628628 <source>Close all documents</source>
629629 <translation type="unfinished"></translation>
630630 </message>
631631 <message>
632 <location filename="../widgets/main_window.cpp" line="286"/>
632 <location filename="../widgets/main_window.cpp" line="302"/>
633633 <source>&amp;Reload</source>
634634 <translation type="unfinished"></translation>
635635 </message>
636636 <message>
637 <location filename="../widgets/main_window.cpp" line="287"/>
637 <location filename="../widgets/main_window.cpp" line="303"/>
638638 <source>F5</source>
639639 <comment>Reload document</comment>
640640 <translation type="unfinished"></translation>
641641 </message>
642642 <message>
643 <location filename="../widgets/main_window.cpp" line="288"/>
643 <location filename="../widgets/main_window.cpp" line="304"/>
644644 <source>Reload the current document</source>
645645 <translation type="unfinished"></translation>
646646 </message>
647647 <message>
648 <location filename="../widgets/main_window.cpp" line="292"/>
648 <location filename="../widgets/main_window.cpp" line="308"/>
649649 <source>Clear</source>
650650 <comment>Clear recent documents</comment>
651651 <translation type="unfinished"></translation>
652652 </message>
653653 <message>
654 <location filename="../widgets/main_window.cpp" line="293"/>
654 <location filename="../widgets/main_window.cpp" line="309"/>
655655 <source>Clear list of recent documents</source>
656656 <translation type="unfinished"></translation>
657657 </message>
658658 <message>
659 <location filename="../widgets/main_window.cpp" line="300"/>
659 <location filename="../widgets/main_window.cpp" line="316"/>
660660 <source>&amp;New Session</source>
661661 <translation type="unfinished"></translation>
662662 </message>
663663 <message>
664 <location filename="../widgets/main_window.cpp" line="301"/>
664 <location filename="../widgets/main_window.cpp" line="317"/>
665665 <source>Open a new session</source>
666666 <translation type="unfinished"></translation>
667667 </message>
668668 <message>
669 <location filename="../widgets/main_window.cpp" line="306"/>
669 <location filename="../widgets/main_window.cpp" line="322"/>
670670 <source>Save Session &amp;As...</source>
671671 <translation type="unfinished"></translation>
672672 </message>
673673 <message>
674 <location filename="../widgets/main_window.cpp" line="307"/>
674 <location filename="../widgets/main_window.cpp" line="323"/>
675675 <source>Save the current session with a different name</source>
676676 <translation type="unfinished"></translation>
677677 </message>
678678 <message>
679 <location filename="../widgets/main_window.cpp" line="312"/>
679 <location filename="../widgets/main_window.cpp" line="328"/>
680680 <source>&amp;Manage Sessions...</source>
681681 <translation type="unfinished"></translation>
682682 </message>
683683 <message>
684 <location filename="../widgets/main_window.cpp" line="317"/>
684 <location filename="../widgets/main_window.cpp" line="333"/>
685685 <source>&amp;Switch Session...</source>
686686 <translation type="unfinished"></translation>
687687 </message>
688688 <message>
689 <location filename="../widgets/main_window.cpp" line="319"/>
689 <location filename="../widgets/main_window.cpp" line="335"/>
690690 <source>Ctrl+Shift+Q</source>
691691 <comment>Switch Session</comment>
692692 <translation type="unfinished"></translation>
693693 </message>
694694 <message>
695 <location filename="../widgets/main_window.cpp" line="324"/>
695 <location filename="../widgets/main_window.cpp" line="340"/>
696696 <source>&amp;Find...</source>
697697 <translation type="unfinished"></translation>
698698 </message>
699699 <message>
700 <location filename="../widgets/main_window.cpp" line="325"/>
700 <location filename="../widgets/main_window.cpp" line="341"/>
701701 <source>Ctrl+F</source>
702702 <comment>Find</comment>
703703 <translation type="unfinished"></translation>
704704 </message>
705705 <message>
706 <location filename="../widgets/main_window.cpp" line="326"/>
706 <location filename="../widgets/main_window.cpp" line="342"/>
707707 <source>Find text in document</source>
708708 <translation type="unfinished"></translation>
709709 </message>
710710 <message>
711 <location filename="../widgets/main_window.cpp" line="331"/>
711 <location filename="../widgets/main_window.cpp" line="347"/>
712712 <source>&amp;Replace...</source>
713713 <translation type="unfinished"></translation>
714714 </message>
715715 <message>
716 <location filename="../widgets/main_window.cpp" line="332"/>
716 <location filename="../widgets/main_window.cpp" line="348"/>
717717 <source>Ctrl+R</source>
718718 <comment>Replace</comment>
719719 <translation type="unfinished"></translation>
720720 </message>
721721 <message>
722 <location filename="../widgets/main_window.cpp" line="333"/>
722 <location filename="../widgets/main_window.cpp" line="349"/>
723723 <source>Find and replace text in document</source>
724724 <translation type="unfinished"></translation>
725725 </message>
726726 <message>
727 <location filename="../widgets/main_window.cpp" line="338"/>
727 <location filename="../widgets/main_window.cpp" line="354"/>
728728 <source>&amp;Command Line</source>
729729 <translation type="unfinished"></translation>
730730 </message>
731731 <message>
732 <location filename="../widgets/main_window.cpp" line="339"/>
732 <location filename="../widgets/main_window.cpp" line="355"/>
733733 <source>Command line for quick code evaluation</source>
734734 <translation type="unfinished"></translation>
735735 </message>
736736 <message>
737 <location filename="../widgets/main_window.cpp" line="340"/>
737 <location filename="../widgets/main_window.cpp" line="356"/>
738738 <source>Ctrl+E</source>
739739 <comment>Show command line</comment>
740740 <translation type="unfinished"></translation>
741741 </message>
742742 <message>
743 <location filename="../widgets/main_window.cpp" line="344"/>
743 <location filename="../widgets/main_window.cpp" line="360"/>
744744 <source>&amp;Go To Line</source>
745745 <translation type="unfinished"></translation>
746746 </message>
747747 <message>
748 <location filename="../widgets/main_window.cpp" line="345"/>
748 <location filename="../widgets/main_window.cpp" line="361"/>
749749 <source>Tool to jump to a line by number</source>
750750 <translation type="unfinished"></translation>
751751 </message>
752752 <message>
753 <location filename="../widgets/main_window.cpp" line="346"/>
753 <location filename="../widgets/main_window.cpp" line="362"/>
754754 <source>Ctrl+L</source>
755755 <comment>Show go-to-line tool</comment>
756756 <translation type="unfinished"></translation>
757757 </message>
758758 <message>
759 <location filename="../widgets/main_window.cpp" line="351"/>
759 <location filename="../widgets/main_window.cpp" line="367"/>
760760 <source>&amp;Close Tool Panel</source>
761761 <translation type="unfinished"></translation>
762762 </message>
763763 <message>
764 <location filename="../widgets/main_window.cpp" line="352"/>
764 <location filename="../widgets/main_window.cpp" line="368"/>
765765 <source>Close any open tool panel</source>
766766 <translation type="unfinished"></translation>
767767 </message>
768768 <message>
769 <location filename="../widgets/main_window.cpp" line="353"/>
769 <location filename="../widgets/main_window.cpp" line="369"/>
770770 <source>Esc</source>
771771 <comment>Close tool box</comment>
772772 <translation type="unfinished"></translation>
773773 </message>
774774 <message>
775 <location filename="../widgets/main_window.cpp" line="357"/>
775 <location filename="../widgets/main_window.cpp" line="373"/>
776776 <source>&amp;Full Screen</source>
777777 <translation type="unfinished"></translation>
778778 </message>
779779 <message>
780 <location filename="../widgets/main_window.cpp" line="359"/>
780 <location filename="../widgets/main_window.cpp" line="375"/>
781781 <source>Ctrl+Shift+F</source>
782782 <comment>Show ScIDE in Full Screen</comment>
783783 <translation type="unfinished"></translation>
784784 </message>
785785 <message>
786 <location filename="../widgets/main_window.cpp" line="363"/>
786 <location filename="../widgets/main_window.cpp" line="379"/>
787787 <source>Focus Post Window</source>
788788 <translation type="unfinished"></translation>
789789 </message>
790790 <message>
791 <location filename="../widgets/main_window.cpp" line="364"/>
791 <location filename="../widgets/main_window.cpp" line="380"/>
792792 <source>Focus post window</source>
793793 <translation type="unfinished"></translation>
794794 </message>
795795 <message>
796 <location filename="../widgets/main_window.cpp" line="365"/>
796 <location filename="../widgets/main_window.cpp" line="381"/>
797797 <source>Ctrl+P</source>
798798 <comment>Focus post window</comment>
799799 <translation type="unfinished"></translation>
800800 </message>
801801 <message>
802 <location filename="../widgets/main_window.cpp" line="371"/>
802 <location filename="../widgets/main_window.cpp" line="387"/>
803803 <source>Look Up Implementations...</source>
804804 <translation type="unfinished"></translation>
805805 </message>
806806 <message>
807 <location filename="../widgets/main_window.cpp" line="372"/>
807 <location filename="../widgets/main_window.cpp" line="388"/>
808808 <source>Ctrl+Shift+I</source>
809809 <comment>Look Up Implementations</comment>
810810 <translation type="unfinished"></translation>
811811 </message>
812812 <message>
813 <location filename="../widgets/main_window.cpp" line="373"/>
813 <location filename="../widgets/main_window.cpp" line="389"/>
814814 <source>Open dialog to look up implementations of a class or a method</source>
815815 <translation type="unfinished"></translation>
816816 </message>
817817 <message>
818 <location filename="../widgets/main_window.cpp" line="377"/>
818 <location filename="../widgets/main_window.cpp" line="393"/>
819819 <source>Look Up Implementations for Cursor</source>
820820 <translation type="unfinished"></translation>
821821 </message>
822822 <message>
823 <location filename="../widgets/main_window.cpp" line="378"/>
823 <location filename="../widgets/main_window.cpp" line="394"/>
824824 <source>Ctrl+I</source>
825825 <comment>Look Up Implementations for Cursor</comment>
826826 <translation type="unfinished"></translation>
827827 </message>
828828 <message>
829 <location filename="../widgets/main_window.cpp" line="379"/>
829 <location filename="../widgets/main_window.cpp" line="395"/>
830830 <source>Look up implementations of class or method under cursor</source>
831831 <translation type="unfinished"></translation>
832832 </message>
833833 <message>
834 <location filename="../widgets/main_window.cpp" line="384"/>
834 <location filename="../widgets/main_window.cpp" line="400"/>
835835 <source>Look Up References...</source>
836836 <translation type="unfinished"></translation>
837837 </message>
838838 <message>
839 <location filename="../widgets/main_window.cpp" line="385"/>
839 <location filename="../widgets/main_window.cpp" line="401"/>
840840 <source>Ctrl+Shift+U</source>
841841 <comment>Look Up References</comment>
842842 <translation type="unfinished"></translation>
843843 </message>
844844 <message>
845 <location filename="../widgets/main_window.cpp" line="386"/>
845 <location filename="../widgets/main_window.cpp" line="402"/>
846846 <source>Open dialog to look up references to a class or a method</source>
847847 <translation type="unfinished"></translation>
848848 </message>
849849 <message>
850 <location filename="../widgets/main_window.cpp" line="390"/>
850 <location filename="../widgets/main_window.cpp" line="406"/>
851851 <source>Look Up References for Cursor</source>
852852 <translation type="unfinished"></translation>
853853 </message>
854854 <message>
855 <location filename="../widgets/main_window.cpp" line="391"/>
855 <location filename="../widgets/main_window.cpp" line="407"/>
856856 <source>Ctrl+U</source>
857857 <comment>Look Up References For Selection</comment>
858858 <translation type="unfinished"></translation>
859859 </message>
860860 <message>
861 <location filename="../widgets/main_window.cpp" line="392"/>
861 <location filename="../widgets/main_window.cpp" line="408"/>
862862 <source>Look up references to class or method under cursor</source>
863863 <translation type="unfinished"></translation>
864864 </message>
865865 <message>
866 <location filename="../widgets/main_window.cpp" line="397"/>
866 <location filename="../widgets/main_window.cpp" line="413"/>
867867 <source>&amp;Preferences</source>
868868 <translation type="unfinished"></translation>
869869 </message>
870870 <message>
871 <location filename="../widgets/main_window.cpp" line="399"/>
871 <location filename="../widgets/main_window.cpp" line="415"/>
872872 <source>Ctrl+,</source>
873873 <comment>Show configuration dialog</comment>
874874 <translation type="unfinished"></translation>
875875 </message>
876876 <message>
877 <location filename="../widgets/main_window.cpp" line="401"/>
877 <location filename="../widgets/main_window.cpp" line="417"/>
878878 <source>Show configuration dialog</source>
879879 <translation type="unfinished"></translation>
880880 </message>
881881 <message>
882 <location filename="../widgets/main_window.cpp" line="407"/>
882 <location filename="../widgets/main_window.cpp" line="423"/>
883883 <source>Open &amp;Help Browser</source>
884884 <translation type="unfinished"></translation>
885885 </message>
886886 <message>
887 <location filename="../widgets/main_window.cpp" line="408"/>
887 <location filename="../widgets/main_window.cpp" line="424"/>
888888 <source>Open help</source>
889889 <translation type="unfinished"></translation>
890890 </message>
891891 <message>
892 <location filename="../widgets/main_window.cpp" line="413"/>
892 <location filename="../widgets/main_window.cpp" line="429"/>
893893 <source>Look Up Documentation for Cursor</source>
894894 <translation type="unfinished"></translation>
895895 </message>
896896 <message>
897 <location filename="../widgets/main_window.cpp" line="414"/>
897 <location filename="../widgets/main_window.cpp" line="430"/>
898898 <source>Ctrl+D</source>
899899 <comment>Look Up Documentation for Cursor</comment>
900900 <translation type="unfinished"></translation>
901901 </message>
902902 <message>
903 <location filename="../widgets/main_window.cpp" line="415"/>
903 <location filename="../widgets/main_window.cpp" line="431"/>
904904 <source>Look up documentation for text under cursor</source>
905905 <translation type="unfinished"></translation>
906906 </message>
907907 <message>
908 <location filename="../widgets/main_window.cpp" line="420"/>
908 <location filename="../widgets/main_window.cpp" line="436"/>
909909 <source>Look Up Documentation...</source>
910910 <translation type="unfinished"></translation>
911911 </message>
912912 <message>
913 <location filename="../widgets/main_window.cpp" line="421"/>
913 <location filename="../widgets/main_window.cpp" line="437"/>
914914 <source>Ctrl+Shift+D</source>
915915 <comment>Look Up Documentation</comment>
916916 <translation type="unfinished"></translation>
917917 </message>
918918 <message>
919 <location filename="../widgets/main_window.cpp" line="422"/>
919 <location filename="../widgets/main_window.cpp" line="438"/>
920920 <source>Enter text to look up in documentation</source>
921921 <translation type="unfinished"></translation>
922922 </message>
923923 <message>
924 <location filename="../widgets/main_window.cpp" line="427"/>
924 <location filename="../widgets/main_window.cpp" line="443"/>
925925 <source>&amp;About SuperCollider</source>
926926 <translation type="unfinished"></translation>
927927 </message>
928928 <message>
929 <location filename="../widgets/main_window.cpp" line="432"/>
929 <location filename="../widgets/main_window.cpp" line="448"/>
930930 <source>About &amp;Qt</source>
931931 <translation type="unfinished"></translation>
932932 </message>
933933 <message>
934 <location filename="../widgets/main_window.cpp" line="439"/>
934 <location filename="../widgets/main_window.cpp" line="455"/>
935935 <source>Show/hide Post docklet</source>
936936 <translation type="unfinished"></translation>
937937 </message>
938938 <message>
939 <location filename="../widgets/main_window.cpp" line="445"/>
939 <location filename="../widgets/main_window.cpp" line="461"/>
940940 <source>Show/hide Documents docklet</source>
941941 <translation type="unfinished"></translation>
942942 </message>
943943 <message>
944 <location filename="../widgets/main_window.cpp" line="451"/>
944 <location filename="../widgets/main_window.cpp" line="467"/>
945945 <source>Show/hide Help browser docklet</source>
946946 <translation type="unfinished"></translation>
947947 </message>
948948 <message>
949 <location filename="../widgets/main_window.cpp" line="461"/>
949 <location filename="../widgets/main_window.cpp" line="494"/>
950950 <source>&amp;File</source>
951951 <translation type="unfinished"></translation>
952952 </message>
953953 <message>
954 <location filename="../widgets/main_window.cpp" line="464"/>
954 <location filename="../widgets/main_window.cpp" line="497"/>
955955 <source>Open Recent</source>
956956 <comment>Open a recent document</comment>
957957 <translation type="unfinished"></translation>
958958 </message>
959959 <message>
960 <location filename="../widgets/main_window.cpp" line="481"/>
960 <location filename="../widgets/main_window.cpp" line="514"/>
961961 <source>&amp;Session</source>
962962 <translation type="unfinished"></translation>
963963 </message>
964964 <message>
965 <location filename="../widgets/main_window.cpp" line="484"/>
965 <location filename="../widgets/main_window.cpp" line="517"/>
966966 <source>&amp;Open Session</source>
967967 <translation type="unfinished"></translation>
968968 </message>
969969 <message>
970 <location filename="../widgets/main_window.cpp" line="495"/>
970 <location filename="../widgets/main_window.cpp" line="528"/>
971971 <source>&amp;Edit</source>
972972 <translation type="unfinished"></translation>
973973 </message>
974974 <message>
975 <location filename="../widgets/main_window.cpp" line="519"/>
975 <location filename="../widgets/main_window.cpp" line="552"/>
976976 <source>&amp;View</source>
977977 <translation type="unfinished"></translation>
978978 </message>
979979 <message>
980 <location filename="../widgets/main_window.cpp" line="520"/>
980 <location filename="../widgets/main_window.cpp" line="553"/>
981981 <source>&amp;Docklets</source>
982982 <translation type="unfinished"></translation>
983983 </message>
984984 <message>
985 <location filename="../widgets/main_window.cpp" line="526"/>
985 <location filename="../widgets/main_window.cpp" line="559"/>
986986 <source>&amp;Tool Panels</source>
987987 <translation type="unfinished"></translation>
988988 </message>
989989 <message>
990 <location filename="../widgets/main_window.cpp" line="554"/>
990 <location filename="../widgets/main_window.cpp" line="587"/>
991991 <source>&amp;Language</source>
992992 <translation type="unfinished"></translation>
993993 </message>
994994 <message>
995 <location filename="../widgets/main_window.cpp" line="577"/>
995 <location filename="../widgets/main_window.cpp" line="610"/>
996996 <source>&amp;Help</source>
997997 <translation type="unfinished"></translation>
998998 </message>
999999 <message>
1000 <location filename="../widgets/main_window.cpp" line="697"/>
1000 <location filename="../widgets/main_window.cpp" line="730"/>
10011001 <source>Save Current Session</source>
10021002 <translation type="unfinished"></translation>
10031003 </message>
10041004 <message>
1005 <location filename="../widgets/main_window.cpp" line="698"/>
1005 <location filename="../widgets/main_window.cpp" line="731"/>
10061006 <source>Enter a name for the session:</source>
10071007 <translation type="unfinished"></translation>
10081008 </message>
10091009 <message>
1010 <location filename="../widgets/main_window.cpp" line="827"/>
1010 <location filename="../widgets/main_window.cpp" line="860"/>
10111011 <source>Booting</source>
10121012 <translation type="unfinished"></translation>
10131013 </message>
10141014 <message>
1015 <location filename="../widgets/main_window.cpp" line="834"/>
1015 <location filename="../widgets/main_window.cpp" line="867"/>
10161016 <source>Active</source>
10171017 <translation type="unfinished"></translation>
10181018 </message>
10191019 <message>
1020 <location filename="../widgets/main_window.cpp" line="878"/>
1021 <location filename="../widgets/main_window.cpp" line="910"/>
1020 <location filename="../widgets/main_window.cpp" line="911"/>
1021 <location filename="../widgets/main_window.cpp" line="943"/>
10221022 <source>SuperCollider IDE</source>
10231023 <translation type="unfinished"></translation>
10241024 </message>
10251025 <message>
1026 <location filename="../widgets/main_window.cpp" line="879"/>
1026 <location filename="../widgets/main_window.cpp" line="912"/>
10271027 <source>There are unsaved changes in document &apos;%1&apos;.
10281028
10291029 Do you want to save it?</source>
10301030 <translation type="unfinished"></translation>
10311031 </message>
10321032 <message>
1033 <location filename="../widgets/main_window.cpp" line="911"/>
1033 <location filename="../widgets/main_window.cpp" line="944"/>
10341034 <source>There are unsaved changes in document &apos;%1&apos;.
10351035
10361036 Do you want to reload it?</source>
10371037 <translation type="unfinished"></translation>
10381038 </message>
10391039 <message>
1040 <location filename="../widgets/main_window.cpp" line="938"/>
1040 <location filename="../widgets/main_window.cpp" line="971"/>
10411041 <source>Saving read-only file</source>
10421042 <translation type="unfinished"></translation>
10431043 </message>
10441044 <message>
1045 <location filename="../widgets/main_window.cpp" line="939"/>
1045 <location filename="../widgets/main_window.cpp" line="972"/>
10461046 <source>File is read-only. Please select a new location to save to.</source>
10471047 <translation type="unfinished"></translation>
10481048 </message>
10491049 <message>
1050 <location filename="../widgets/main_window.cpp" line="950"/>
1050 <location filename="../widgets/main_window.cpp" line="983"/>
10511051 <source>SuperCollider Document (*.scd)</source>
10521052 <translation type="unfinished"></translation>
10531053 </message>
10541054 <message>
1055 <location filename="../widgets/main_window.cpp" line="951"/>
1055 <location filename="../widgets/main_window.cpp" line="984"/>
10561056 <source>SuperCollider Class file (*.sc)</source>
10571057 <translation type="unfinished"></translation>
10581058 </message>
10591059 <message>
1060 <location filename="../widgets/main_window.cpp" line="953"/>
1061 <location filename="../widgets/main_window.cpp" line="1002"/>
1060 <location filename="../widgets/main_window.cpp" line="986"/>
1061 <location filename="../widgets/main_window.cpp" line="1035"/>
10621062 <source>All files (*)</source>
10631063 <translation type="unfinished"></translation>
10641064 </message>
10651065 <message>
1066 <location filename="../widgets/main_window.cpp" line="1003"/>
1066 <location filename="../widgets/main_window.cpp" line="1036"/>
10671067 <source>SuperCollider (*.scd *.sc)</source>
10681068 <translation type="unfinished"></translation>
10691069 </message>
10701070 <message>
1071 <location filename="../widgets/main_window.cpp" line="1004"/>
1071 <location filename="../widgets/main_window.cpp" line="1037"/>
10721072 <source>SCDoc (*.schelp)</source>
10731073 <translation type="unfinished"></translation>
10741074 </message>
10751075 <message>
1076 <location filename="../widgets/main_window.cpp" line="1148"/>
1076 <location filename="../widgets/main_window.cpp" line="1181"/>
10771077 <source>Untitled</source>
10781078 <translation type="unfinished"></translation>
10791079 </message>
10801080 <message>
1081 <location filename="../widgets/main_window.cpp" line="1274"/>
1081 <location filename="../widgets/main_window.cpp" line="1311"/>
10821082 <source>About SuperCollider IDE</source>
10831083 <translation type="unfinished"></translation>
10841084 </message>
10851085 <message>
1086 <location filename="../widgets/main_window.cpp" line="1356"/>
1086 <location filename="../widgets/main_window.cpp" line="1393"/>
10871087 <source>Look up Documentation For</source>
10881088 <translation type="unfinished"></translation>
10891089 </message>
10901090 <message>
1091 <location filename="../widgets/main_window.cpp" line="1405"/>
1091 <location filename="../widgets/main_window.cpp" line="1448"/>
10921092 <source>Open binary file?</source>
10931093 <translation type="unfinished"></translation>
10941094 </message>
10951095 <message>
1096 <location filename="../widgets/main_window.cpp" line="1406"/>
1096 <location filename="../widgets/main_window.cpp" line="1449"/>
10971097 <source>
10981098
10991099 The file has an unrecognized extension. It may be a binary file. Would you still like to open it?</source>
15531553 <context>
15541554 <name>ScIDE::PostDocklet</name>
15551555 <message>
1556 <location filename="../widgets/post_window.cpp" line="294"/>
1556 <location filename="../widgets/post_window.cpp" line="304"/>
15571557 <source>Post window</source>
15581558 <translation type="unfinished"></translation>
15591559 </message>
15611561 <context>
15621562 <name>ScIDE::PostWindow</name>
15631563 <message>
1564 <location filename="../widgets/post_window.cpp" line="64"/>
1564 <location filename="../widgets/post_window.cpp" line="65"/>
15651565 <source>Post Window</source>
15661566 <translation type="unfinished"></translation>
15671567 </message>
15681568 <message>
1569 <location filename="../widgets/post_window.cpp" line="66"/>
1569 <location filename="../widgets/post_window.cpp" line="67"/>
15701570 <source>Copy</source>
15711571 <translation type="unfinished"></translation>
15721572 </message>
15731573 <message>
1574 <location filename="../widgets/post_window.cpp" line="74"/>
1574 <location filename="../widgets/post_window.cpp" line="75"/>
15751575 <source>Clear</source>
15761576 <translation type="unfinished"></translation>
15771577 </message>
15781578 <message>
1579 <location filename="../widgets/post_window.cpp" line="75"/>
1579 <location filename="../widgets/post_window.cpp" line="76"/>
15801580 <source>Clear post window</source>
15811581 <translation type="unfinished"></translation>
15821582 </message>
15831583 <message>
1584 <location filename="../widgets/post_window.cpp" line="77"/>
1584 <location filename="../widgets/post_window.cpp" line="78"/>
15851585 <source>Ctrl+Shift+P</source>
15861586 <comment>Clear post window</comment>
15871587 <translation type="unfinished"></translation>
15881588 </message>
15891589 <message>
1590 <location filename="../widgets/post_window.cpp" line="86"/>
1590 <location filename="../widgets/post_window.cpp" line="87"/>
15911591 <source>Enlarge Font</source>
15921592 <translation type="unfinished"></translation>
15931593 </message>
15941594 <message>
1595 <location filename="../widgets/post_window.cpp" line="88"/>
1595 <location filename="../widgets/post_window.cpp" line="89"/>
15961596 <source>Enlarge post window font</source>
15971597 <translation type="unfinished"></translation>
15981598 </message>
15991599 <message>
1600 <location filename="../widgets/post_window.cpp" line="92"/>
1600 <location filename="../widgets/post_window.cpp" line="93"/>
16011601 <source>Shrink Font</source>
16021602 <translation type="unfinished"></translation>
16031603 </message>
16041604 <message>
1605 <location filename="../widgets/post_window.cpp" line="94"/>
1605 <location filename="../widgets/post_window.cpp" line="95"/>
16061606 <source>Shrink post window font</source>
16071607 <translation type="unfinished"></translation>
16081608 </message>
16091609 <message>
1610 <location filename="../widgets/post_window.cpp" line="102"/>
1610 <location filename="../widgets/post_window.cpp" line="103"/>
16111611 <source>Wrap Text</source>
16121612 <translation type="unfinished"></translation>
16131613 </message>
16141614 <message>
1615 <location filename="../widgets/post_window.cpp" line="103"/>
1615 <location filename="../widgets/post_window.cpp" line="104"/>
16161616 <source>Wrap lines wider than the post window</source>
16171617 <translation type="unfinished"></translation>
16181618 </message>
16191619 <message>
1620 <location filename="../widgets/post_window.cpp" line="109"/>
1620 <location filename="../widgets/post_window.cpp" line="110"/>
16211621 <source>Auto Scroll</source>
16221622 <translation type="unfinished"></translation>
16231623 </message>
16241624 <message>
1625 <location filename="../widgets/post_window.cpp" line="110"/>
1625 <location filename="../widgets/post_window.cpp" line="111"/>
16261626 <source>Scroll to bottom on new posts</source>
16271627 <translation type="unfinished"></translation>
16281628 </message>
16301630 <context>
16311631 <name>ScIDE::ReferencesDialog</name>
16321632 <message>
1633 <location filename="../widgets/lookup_dialog.cpp" line="431"/>
1633 <location filename="../widgets/lookup_dialog.cpp" line="425"/>
16341634 <source>Look Up References</source>
16351635 <translation type="unfinished"></translation>
16361636 </message>
16371637 <message>
1638 <location filename="../widgets/lookup_dialog.cpp" line="433"/>
1638 <location filename="../widgets/lookup_dialog.cpp" line="427"/>
16391639 <source>Enter class or method name...</source>
16401640 <translation type="unfinished"></translation>
16411641 </message>
16421642 <message>
1643 <location filename="../widgets/lookup_dialog.cpp" line="469"/>
1643 <location filename="../widgets/lookup_dialog.cpp" line="463"/>
16441644 <source>Introspection data not yet available</source>
16451645 <translation type="unfinished"></translation>
16461646 </message>
16551655 <message>
16561656 <location filename="../core/sc_process.cpp" line="67"/>
16571657 <location filename="../core/sc_process.cpp" line="71"/>
1658 <location filename="../core/sc_process.cpp" line="265"/>
1658 <location filename="../core/sc_process.cpp" line="266"/>
16591659 <source>Boot Interpreter</source>
16601660 <translation type="unfinished"></translation>
16611661 </message>
16621662 <message>
16631663 <location filename="../core/sc_process.cpp" line="75"/>
1664 <location filename="../core/sc_process.cpp" line="248"/>
1664 <location filename="../core/sc_process.cpp" line="249"/>
16651665 <source>Quit Interpreter</source>
16661666 <translation type="unfinished"></translation>
16671667 </message>
16931693 <translation type="unfinished"></translation>
16941694 </message>
16951695 <message>
1696 <location filename="../core/sc_process.cpp" line="113"/>
1696 <location filename="../core/sc_process.cpp" line="114"/>
16971697 <source>Interpreter is already running.</source>
16981698 <translation type="unfinished"></translation>
16991699 </message>
17001700 <message>
1701 <location filename="../core/sc_process.cpp" line="146"/>
1701 <location filename="../core/sc_process.cpp" line="147"/>
17021702 <source>Failed to start interpreter!</source>
17031703 <translation type="unfinished"></translation>
17041704 </message>
17051705 <message>
1706 <location filename="../core/sc_process.cpp" line="152"/>
1707 <location filename="../core/sc_process.cpp" line="163"/>
1708 <location filename="../core/sc_process.cpp" line="210"/>
1706 <location filename="../core/sc_process.cpp" line="153"/>
1707 <location filename="../core/sc_process.cpp" line="164"/>
1708 <location filename="../core/sc_process.cpp" line="211"/>
17091709 <source>Interpreter is not running!</source>
17101710 <translation type="unfinished"></translation>
17111711 </message>
17121712 <message>
1713 <location filename="../core/sc_process.cpp" line="181"/>
1713 <location filename="../core/sc_process.cpp" line="182"/>
17141714 <source>Failed to stop interpreter!</source>
17151715 <translation type="unfinished"></translation>
17161716 </message>
17171717 <message>
1718 <location filename="../core/sc_process.cpp" line="217"/>
1718 <location filename="../core/sc_process.cpp" line="218"/>
17191719 <source>Error when passing data to interpreter!</source>
17201720 <translation type="unfinished"></translation>
17211721 </message>
3333 #include <QTextBlock>
3434 #include <QTextDocumentFragment>
3535 #include <QUrl>
36 #include <QMimeData>
3637 #include <QScrollBar>
3738
3839 namespace ScIDE {
4445 Q_ASSERT(mDoc != 0);
4546
4647 setFrameShape( QFrame::NoFrame );
48
49 viewport()->setAttribute( Qt::WA_MacNoClickThrough, true );
4750
4851 mLineIndicator = new LineIndicator(this);
4952 mLineIndicator->move( contentsRect().topLeft() );
538541
539542 void GenericCodeEditor::wheelEvent( QWheelEvent * e )
540543 {
544 // FIXME: Disable zooming for now, to avoid nasty effect when Ctrl
545 // is unintentionally pressed while inertial scrolling is going on.
546
547 // Moreover, Ctrl|Shift + Wheel scrolls by pages, which is also
548 // rather annoying.
549
550 // So rather just forward the event without modifiers.
551
552 QWheelEvent modifiedEvent( e->pos(), e->globalPos(), e->delta(),
553 e->buttons(), 0, e->orientation() );
554 QPlainTextEdit::wheelEvent( &modifiedEvent );
555 return;
556
557 #if 0
541558 if (e->modifiers() == Qt::ControlModifier) {
542559 if (e->delta() > 0)
543560 zoomIn();
547564 }
548565
549566 QPlainTextEdit::wheelEvent(e);
567 #endif
550568 }
551569
552570 void GenericCodeEditor::dragEnterEvent( QDragEnterEvent * event )
155155 {
156156 Token token(tokenType, tokenPosition, tokenLength);
157157 if (token.length == 1)
158 token.character = lexer.text()[tokenPosition].toAscii();
158 token.character = lexer.text()[tokenPosition].toLatin1();
159159 blockData->tokens.push_back( token );
160160 }
161161
332332 menu.exec( mWebView->mapToGlobal(pos) );
333333 }
334334
335 QString HelpBrowser::symbolUnderCursor()
336 {
337 return mWebView->selectedText();
338 // FIXME: should parse out word under cursor if no selection
339 }
340
341 bool HelpBrowser::openDocumentation()
342 {
343 return Main::openDocumentation(symbolUnderCursor());
344 }
345
346 void HelpBrowser::openDefinition()
347 {
348 return Main::openDefinition(symbolUnderCursor(), window());
349 }
350
351 void HelpBrowser::findReferences()
352 {
353 return Main::findReferences(symbolUnderCursor(), window());
354 }
355
335356 HelpBrowserFindBox::HelpBrowserFindBox( QWidget * parent ):
336357 QLineEdit(parent)
337358 {
106106 void zoomOut();
107107 void evaluateSelection();
108108 void findText( const QString & text, bool backwards = false );
109 bool openDocumentation();
110 void openDefinition();
111 void findReferences();
109112
110113 signals:
111114 void urlChanged();
123126 void createActions();
124127 bool eventFilter( QObject * object, QEvent * event);
125128 void sendRequest( const QString &code );
129 QString symbolUnderCursor();
126130
127131 QWebView *mWebView;
128132 LoadProgressIndicator *mLoadProgressIndicator;
3434
3535 namespace ScIDE {
3636
37 bool LookupDialogTreeView::openDocumentation()
38 {
39 GenericLookupDialog * parent = qobject_cast<GenericLookupDialog*>(parentWidget());
40 parent->openDocumentation();
41
42 return true;
43 }
44
4537 GenericLookupDialog::GenericLookupDialog( QWidget * parent ):
4638 QDialog(parent)
4739 {
4941
5042 mQueryEdit = new QLineEdit(this);
5143
52 mResult = new LookupDialogTreeView(this);
44 mResult = new QTreeView(this);
5345 mResult->setRootIsDecorated(false);
5446 mResult->setAllColumnsShowFocus(true);
5547 mResult->setHeaderHidden(true);
8274 mQueryEdit->setFocus( Qt::OtherFocusReason );
8375 }
8476
85 void GenericLookupDialog::openDocumentation()
77 bool GenericLookupDialog::openDocumentation()
8678 {
8779 QModelIndex currentIndex = mResult->currentIndex();
8880 QStandardItemModel * model = qobject_cast<QStandardItemModel*>(mResult->model());
8981 if (!model)
90 return;
82 return true;
9183
9284 currentIndex = currentIndex.sibling(currentIndex.row(), 0);
9385 QStandardItem *currentItem = model->itemFromIndex(currentIndex);
9486 if (!currentItem)
95 return;
87 return true;
9688
9789 bool isClass = currentItem->data(IsClassRole).toBool();
9890 if (isClass) {
9991 Main::openDocumentation(currentItem->text());
100 return;
92 return true;
10193 } else {
10294 QString className = currentItem->data(ClassNameRole).toString();
10395 QString methodName = currentItem->data(MethodNameRole).toString();
10496 Main::openDocumentationForMethod(className, methodName);
10597 }
10698 accept();
99
100 return true;
107101 }
108102
109103 void GenericLookupDialog::onAccepted(QModelIndex currentIndex)
2929
3030 namespace ScIDE {
3131
32 class LookupDialogTreeView : public QTreeView
33 {
34 Q_OBJECT
35
36 public:
37 LookupDialogTreeView(QWidget * parent): QTreeView(parent) {}
38
39 public Q_SLOTS:
40 bool openDocumentation();
41 };
42
4332 class GenericLookupDialog: public QDialog
4433 {
4534 Q_OBJECT
5645 void clearQuery() { mQueryEdit->clear(); }
5746
5847 public Q_SLOTS:
59 void openDocumentation();
48 bool openDocumentation();
6049
6150 protected Q_SLOTS:
6251 virtual void onAccepted(QModelIndex);
7564 QString const & className, QString const & methodName,
7665 bool isClassItem);
7766
78 LookupDialogTreeView *mResult;
67 QTreeView *mResult;
7968 QLineEdit *mQueryEdit;
8069 };
8170
4141 #include "settings/dialog.hpp"
4242
4343 #include "SC_DirUtils.h"
44 #include "SC_Version.hpp"
4445
4546 #include <QAction>
4647 #include <QApplication>
48 #include <QDesktopServices>
49 #include <QDesktopWidget>
4750 #include <QFileDialog>
4851 #include <QFileInfo>
4952 #include <QGridLayout>
5659 #include <QStatusBar>
5760 #include <QVBoxLayout>
5861 #include <QUrl>
62 #include <QMimeData>
63 #include <QMetaMethod>
5964
6065 namespace ScIDE {
66
67 static QWidget * findFirstResponder
68 ( QWidget *widget, const char * methodSignature, int & methodIndex )
69 {
70 methodIndex = -1;
71 while ( widget ) {
72 methodIndex = widget->metaObject()->indexOfMethod( methodSignature );
73 if (methodIndex != -1)
74 break;
75 if (widget->isWindow())
76 break;
77 widget = widget->parentWidget();
78 }
79 return widget;
80 }
6181
6282 MainWindow * MainWindow::mInstance = 0;
6383
246266 connect(action, SIGNAL(triggered()), this, SLOT(openStartupFile()));
247267 settings->addAction( action, "ide-document-open-startup", ideCategory);
248268
269 mActions[DocOpenSupportDir] = action = new QAction(
270 QIcon::fromTheme("document-open"), tr("Open user support directory"), this);
271 action->setStatusTip(tr("Open user support directory"));
272 connect(action, SIGNAL(triggered()), this, SLOT(openUserSupportDirectory()));
273 settings->addAction( action, "ide-document-open-support-directory", ideCategory);
274
249275 mActions[DocSave] = action = new QAction(
250276 QIcon::fromTheme("document-save"), tr("&Save"), this);
251277 action->setShortcut(tr("Ctrl+S", "Save document"));
402428 settings->addAction( action, "ide-settings-dialog", ideCategory);
403429
404430 // Help
405 mActions[Help] = action = new QAction(
406 QIcon::fromTheme("system-help"), tr("Open &Help Browser"), this);
407 action->setStatusTip(tr("Open help"));
431 mActions[Help] = action = new QAction(tr("Show &Help Browser"), this);
432 action->setStatusTip(tr("Show and focus the Help Browser"));
408433 connect(action, SIGNAL(triggered()), this, SLOT(openHelp()));
409 settings->addAction( action, "help-show", helpCategory);
410
411 mActions[LookupDocumentationForCursor] = action = new QAction(
412 QIcon::fromTheme("system-help"), tr("Look Up Documentation for Cursor"), this);
434 settings->addAction( action, "help-browser", helpCategory);
435
436 mActions[HelpAboutIDE] = action =
437 new QAction(QIcon::fromTheme("system-help"), tr("How to Use SuperCollider IDE"), this);
438 action->setStatusTip(tr("Open the SuperCollider IDE guide"));
439 connect(action, SIGNAL(triggered()), this, SLOT(openHelpAboutIDE()));
440
441 mActions[LookupDocumentationForCursor] = action =
442 new QAction(tr("Look Up Documentation for Cursor"), this);
413443 action->setShortcut(tr("Ctrl+D", "Look Up Documentation for Cursor"));
414444 action->setStatusTip(tr("Look up documentation for text under cursor"));
415445 connect(action, SIGNAL(triggered()), this, SLOT(lookupDocumentationForCursor()));
416446 settings->addAction( action, "help-lookup-for-cursor", helpCategory);
417447
418 mActions[LookupDocumentation] = action = new QAction(
419 QIcon::fromTheme("system-help"), tr("Look Up Documentation..."), this);
448 mActions[LookupDocumentation] = action =
449 new QAction(tr("Look Up Documentation..."), this);
420450 action->setShortcut(tr("Ctrl+Shift+D", "Look Up Documentation"));
421451 action->setStatusTip(tr("Enter text to look up in documentation"));
422452 connect(action, SIGNAL(triggered()), this, SLOT(lookupDocumentation()));
423453 settings->addAction( action, "help-lookup", helpCategory);
424454
425455 mActions[ShowAbout] = action = new QAction(
426 QIcon::fromTheme("show-about"), tr("&About SuperCollider"), this);
456 QIcon::fromTheme("help-about"), tr("&About SuperCollider"), this);
427457 connect(action, SIGNAL(triggered()), this, SLOT(showAbout()));
428458 settings->addAction( action, "ide-about", ideCategory);
429459
450480 action->setStatusTip(tr("Show/hide Help browser docklet"));
451481 settings->addAction( mHelpBrowserDocklet->toggleViewAction(),
452482 "ide-docklet-help", ideCategory );
483
484 // Add actions to docklets, so shortcuts work when docklets detached:
485
486 mPostDocklet->widget()->addAction(mActions[LookupDocumentation]);
487 mPostDocklet->widget()->addAction(mActions[LookupDocumentationForCursor]);
488 mPostDocklet->widget()->addAction(mActions[LookupImplementation]);
489 mPostDocklet->widget()->addAction(mActions[LookupImplementationForCursor]);
490 mPostDocklet->widget()->addAction(mActions[LookupReferences]);
491 mPostDocklet->widget()->addAction(mActions[LookupReferencesForCursor]);
492
493 mHelpBrowserDocklet->widget()->addAction(mActions[LookupDocumentation]);
494 mHelpBrowserDocklet->widget()->addAction(mActions[LookupDocumentationForCursor]);
495 mHelpBrowserDocklet->widget()->addAction(mActions[LookupImplementation]);
496 mHelpBrowserDocklet->widget()->addAction(mActions[LookupImplementationForCursor]);
497 mHelpBrowserDocklet->widget()->addAction(mActions[LookupReferences]);
498 mHelpBrowserDocklet->widget()->addAction(mActions[LookupReferencesForCursor]);
499
453500 }
454501
455502 void MainWindow::createMenus()
464511 connect(mRecentDocsMenu, SIGNAL(triggered(QAction*)),
465512 this, SLOT(onRecentDocAction(QAction*)));
466513 menu->addAction( mActions[DocOpenStartup] );
514 menu->addAction( mActions[DocOpenSupportDir] );
467515 menu->addAction( mActions[DocSave] );
468516 menu->addAction( mActions[DocSaveAs] );
469517 menu->addAction( mActions[DocSaveAll] );
574622 menuBar()->addMenu(menu);
575623
576624 menu = new QMenu(tr("&Help"), this);
625 menu->addAction( mActions[HelpAboutIDE] );
626 menu->addSeparator();
577627 menu->addAction( mActions[Help] );
578628 menu->addAction( mActions[LookupDocumentationForCursor] );
579629 menu->addAction( mActions[LookupDocumentation] );
582632 menu->addAction( mActions[ShowAboutQT] );
583633
584634 menuBar()->addMenu(menu);
635
636 mLangStatus->addAction( mMain->scProcess()->action(ScProcess::ToggleRunning) );
637 mLangStatus->addAction( mMain->scProcess()->action(ScProcess::Restart) );
638 mLangStatus->addAction( mMain->scProcess()->action(ScProcess::RecompileClassLibrary) );
585639
586640 mServerStatus->addAction( mMain->scServer()->action(ScServer::ToggleRunning) );
587641 mServerStatus->addAction( mMain->scServer()->action(ScServer::Reboot) );
9581012 }else{
9591013 QString fp = doc->filePath();
9601014 if(fp.endsWith(".scd"))
961 dialog.setFilter(filters[0]);
1015 dialog.setNameFilter(filters[0]);
9621016 else if(fp.endsWith(".sc"))
963 dialog.setFilter(filters[1]);
1017 dialog.setNameFilter(filters[1]);
9641018 else if(fp.endsWith(".schelp"))
965 dialog.setFilter(filters[2]);
1019 dialog.setNameFilter(filters[2]);
9661020 else
967 dialog.setFilter(filters[3]);
1021 dialog.setNameFilter(filters[3]);
9681022 dialog.selectFile(fp);
1023
9691024 }
9701025
9711026 if (dialog.exec() == QDialog::Accepted)
10391094 mMain->documentManager()->open( filePath );
10401095 }
10411096
1097 void MainWindow::openUserSupportDirectory()
1098 {
1099 char appSupportDir[PATH_MAX];
1100 sc_GetUserAppSupportDirectory(appSupportDir, PATH_MAX);
1101
1102 QUrl dirUrl = QUrl::fromLocalFile(QString(appSupportDir));
1103 QDesktopServices::openUrl(dirUrl);
1104 }
1105
10421106 void MainWindow::saveDocument()
10431107 {
10441108 GenericCodeEditor *editor = mEditors->currentEditor();
11941258
11951259 void MainWindow::lookupImplementationForCursor()
11961260 {
1197 QWidget * focussedWidget = QApplication::focusWidget();
1198
1199 int indexOfMethod = focussedWidget->metaObject()->indexOfMethod("openDefinition()");
1200 if (indexOfMethod != -1)
1201 QMetaObject::invokeMethod( focussedWidget, "openDefinition", Qt::DirectConnection );
1261 static const QByteArray signature = QMetaObject::normalizedSignature("openDefinition()");
1262
1263 int methodIdx = -1;
1264 QWidget * widget = findFirstResponder(
1265 QApplication::focusWidget(), signature.constData(), methodIdx );
1266 if (widget && methodIdx != -1)
1267 widget->metaObject()->method(methodIdx).invoke( widget, Qt::DirectConnection );
12021268 }
12031269
12041270 void MainWindow::lookupImplementation()
12051271 {
1206 LookupDialog dialog(mEditors);
1272 LookupDialog dialog( QApplication::activeWindow() );
12071273 dialog.exec();
12081274 }
12091275
12101276 void MainWindow::lookupReferencesForCursor()
12111277 {
1212 QWidget * focussedWidget = QApplication::focusWidget();
1213
1214 int indexOfMethod = focussedWidget->metaObject()->indexOfMethod("findReferences()");
1215 if (indexOfMethod != -1)
1216 QMetaObject::invokeMethod( focussedWidget, "findReferences", Qt::DirectConnection );
1278 static const QByteArray signature = QMetaObject::normalizedSignature("findReferences()");
1279
1280 int methodIdx = -1;
1281 QWidget * widget = findFirstResponder(
1282 QApplication::focusWidget(), signature.constData(), methodIdx );
1283 if (widget && methodIdx != -1)
1284 widget->metaObject()->method(methodIdx).invoke( widget, Qt::DirectConnection );
12171285 }
12181286
12191287 void MainWindow::lookupReferences()
12201288 {
1221 ReferencesDialog dialog(parentWidget());
1289 ReferencesDialog dialog( QApplication::activeWindow() );
12221290 dialog.exec();
12231291 }
12241292
12681336 "&copy; Jakob Leben, Tim Blechmann and others.<br>"
12691337 "Development partially funded by Kiberpipa."
12701338 ;
1271 aboutString = aboutString.arg("3.6");
1339 aboutString = aboutString.arg(SC_VersionString().c_str());
12721340
12731341 QMessageBox::about(this, tr("About SuperCollider IDE"), aboutString);
12741342 }
13521420
13531421 void MainWindow::lookupDocumentation()
13541422 {
1355 PopupTextInput * dialog = new PopupTextInput(tr("Look up Documentation For"), this);
1423 PopupTextInput * dialog = new PopupTextInput(tr("Look up Documentation For"),
1424 QApplication::activeWindow());
13561425
13571426 bool success = dialog->exec();
13581427 if (success)
13631432
13641433 void MainWindow::lookupDocumentationForCursor()
13651434 {
1366 QWidget * focussedWidget = QApplication::focusWidget();
1435 static const QByteArray signature = QMetaObject::normalizedSignature("openDocumentation()");
13671436
13681437 bool documentationOpened = false;
1369
1370 int indexOfMethod = focussedWidget->metaObject()->indexOfMethod("openDocumentation()");
1371 if (indexOfMethod != -1)
1372 QMetaObject::invokeMethod( focussedWidget, "openDocumentation", Qt::DirectConnection,
1373 Q_RETURN_ARG(bool, documentationOpened) );
1438 QWidget * widget = QApplication::focusWidget();
1439 int methodIdx = -1;
1440
1441 widget = findFirstResponder( widget, signature.constData(), methodIdx );
1442
1443 if (widget && methodIdx != -1) {
1444 widget->metaObject()->method(methodIdx).invoke(
1445 widget, Qt::DirectConnection,
1446 Q_RETURN_ARG(bool, documentationOpened) );
1447 };
13741448
13751449 if (!documentationOpened)
13761450 openHelp();
13801454 {
13811455 if (mHelpBrowserDocklet->browser()->url().isEmpty())
13821456 mHelpBrowserDocklet->browser()->goHome();
1457 mHelpBrowserDocklet->raiseAndFocus();
1458 }
1459
1460 void MainWindow::openHelpAboutIDE()
1461 {
1462 mHelpBrowserDocklet->browser()->gotoHelpFor("Guides/SCIde");
1463
1464 mHelpBrowserDocklet->setDetached(true);
1465
1466 QRect availableGeometry = QApplication::desktop()->availableGeometry(mHelpBrowserDocklet->window());
1467 QRect geometry;
1468 geometry.setWidth( qMin(700, availableGeometry.width()) );
1469 geometry.setHeight( availableGeometry.height() - 150 );
1470 geometry.moveCenter( availableGeometry.center() );
1471
1472 mHelpBrowserDocklet->window()->setGeometry( geometry );
13831473 mHelpBrowserDocklet->raiseAndFocus();
13841474 }
13851475
14541544 setPalette(plt);
14551545 }
14561546
1547 void StatusLabel::showContextMenu()
1548 {
1549 QList<QAction*> actions = this->actions();
1550 if (actions.count()) {
1551 QMenu menu;
1552 foreach( QAction *action, actions )
1553 menu.addAction(action);
1554 menu.exec( mapToGlobal(QPoint(0, -menu.sizeHint().height() - 2)) );
1555 }
1556 }
1557
1558 void StatusLabel::mousePressEvent( QMouseEvent * )
1559 {
1560 showContextMenu();
1561 }
1562
14571563 //////////////////////////// StatusClockLabel ////////////////////////////
14581564
14591565 StatusClockLabel::StatusClockLabel(QWidget * parent):
5757 DocNew,
5858 DocOpen,
5959 DocOpenStartup,
60 DocOpenSupportDir,
6061 DocSave,
6162 DocSaveAs,
6263 DocSaveAll,
9394
9495 // Help
9596 Help,
97 HelpAboutIDE,
9698 LookupDocumentationForCursor,
9799 LookupDocumentation,
98100 ShowAbout,
127129
128130 void newDocument();
129131 void openDocument();
130 void openStartupFile();
131132 void saveDocument();
132133 void saveDocumentAs();
133134 void saveAllDocuments();
150151 void showStatusMessage( QString const & string );
151152
152153 private Q_SLOTS:
154 void openStartupFile();
155 void openUserSupportDirectory();
156
153157 void switchSession( Session *session );
154158 void saveSession( Session *session );
155159 void onInterpreterStateChanged( QProcess::ProcessState );
169173 void lookupReferences();
170174 void lookupReferencesForCursor();
171175 void openHelp();
176 void openHelpAboutIDE();
172177 void lookupDocumentationForCursor();
173178 void lookupDocumentation();
174179 void applySettings( Settings::Manager * );
230235 StatusLabel(QWidget *parent = 0);
231236 void setBackground(const QBrush &);
232237 void setTextColor(const QColor &);
238 protected:
239 void showContextMenu();
240 virtual void mousePressEvent( QMouseEvent * );
233241 };
234242
235243 class StatusClockLabel : public StatusLabel
392392
393393 mActions[GotoPreviousRegion] = action = new QAction(
394394 QIcon::fromTheme("edit-gotopreviousregion"), tr("Go to Previous Region"), this);
395 action->setShortcut(tr("Alt+[", "Go to Previous Region"));
395 action->setShortcut(tr("Ctrl+Alt+[", "Go to Previous Region"));
396396 action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
397397 mEditorSigMux->connect(action, SIGNAL(triggered()), SLOT(gotoPreviousRegion()),
398398 SignalMultiplexer::ConnectionOptional);
400400
401401 mActions[GotoNextRegion] = action = new QAction(
402402 QIcon::fromTheme("edit-gotonextregion"), tr("Go to Next Region"), this);
403 action->setShortcut(tr("Alt+]", "Go to Next Region"));
403 action->setShortcut(tr("Ctrl+Alt+]", "Go to Next Region"));
404404 action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
405405 mEditorSigMux->connect(action, SIGNAL(triggered()), SLOT(gotoNextRegion()),
406406 SignalMultiplexer::ConnectionOptional);
3333 #include <QShortcut>
3434 #include <QKeyEvent>
3535 #include <QTextDocumentFragment>
36 #include <QMimeData>
3637
3738 namespace ScIDE {
3839
4243 setReadOnly(true);
4344 setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
4445 setFrameShape( QFrame::NoFrame );
46
47 viewport()->setAttribute( Qt::WA_MacNoClickThrough, true );
4548
4649 QRect availableScreenRect = qApp->desktop()->availableGeometry(this);
4750 mSizeHint = QSize( availableScreenRect.width() * 0.4, availableScreenRect.height() * 0.3 );
238241
239242 void PostWindow::wheelEvent( QWheelEvent * e )
240243 {
244 // FIXME: Disable zooming for now, to avoid nasty effect when Ctrl
245 // is unintentionally pressed while inertial scrolling is going on.
246
247 // Moreover, Ctrl|Shift + Wheel scrolls by pages, which is also
248 // rather annoying.
249
250 // So rather just forward the event without modifiers.
251
252 QWheelEvent modifiedEvent( e->pos(), e->globalPos(), e->delta(),
253 e->buttons(), 0, e->orientation() );
254 QPlainTextEdit::wheelEvent( &modifiedEvent );
255 return;
256
257 #if 0
241258 if (e->modifiers() == Qt::ControlModifier) {
242259 if (e->delta() > 0)
243260 zoomIn();
247264 }
248265
249266 QPlainTextEdit::wheelEvent(e);
267 #endif
250268 }
251269
252270 void PostWindow::focusOutEvent( QFocusEvent * event )
284302
285303 void PostWindow::openDefinition()
286304 {
287 Main::openDefinition(symbolUnderCursor(), MainWindow::instance());
305 Main::openDefinition(symbolUnderCursor(), window());
288306 }
289307
290308 void PostWindow::findReferences()
291309 {
292 Main::findReferences(symbolUnderCursor(), MainWindow::instance());
310 Main::findReferences(symbolUnderCursor(), window());
293311 }
294312
295313 void PostWindow::setLineWrap(bool lineWrapOn)
168168
169169 if (undock) {
170170 qDebug() << "dock: set geom (toggleFloating):" << undockedGeom << this;
171 mDockWidget->setGeometry( undockedGeom );
171 if (undockedGeom.isNull()) {
172 // Looks like resize or move event does not always occur,
173 // so store the undocked geometry here.
174 mUndockedGeom = mDockWidget->geometry();
175 }
176 else {
177 mDockWidget->setGeometry( undockedGeom );
178 }
172179 }
173180
174181 updateDockAction();
2424 #include <stdio.h>
2525 #include <winsock2.h>
2626 #include <pthread.h>
27 #include <shlobj.h>
2728
2829 // wrappers for unix replacements
2930 #define gettimeofday win32_gettimeofday
4142 void win32_ExtractContainingFolder(char* folder,const char* pattern,int maxChars);
4243 void win32_synctimes();
4344 void win32_gettimeofday(timeval* tv, void*);
45 void win32_GetKnownFolderPath(int folderId, char *dest, int size);
4446 void win32_GetHomeFolder(char* homeFolder, int bufLen);
4547 char* win32_basename(char* path);
4648 char* win32_dirname(char* path);
177177 list(APPEND sclang_sources ${SCDOC_SRCS})
178178
179179 if(SC_IDE)
180 add_definitions(-DSC_IDE)
181180 list(APPEND sclang_sources ../editors/sc-ide/primitives/sc_ipc_client.cpp)
182181 endif()
183182
283282 target_link_libraries(libsclang ${QT_COLLIDER_LIBS})
284283 endif()
285284
285 if(SC_IDE)
286 add_definitions(-DSC_IDE -DQT_NO_KEYWORDS)
287 find_package( Qt4 4.7 REQUIRED QtCore QtNetwork )
288 include( ${QT_USE_FILE} )
289 target_link_libraries( libsclang ${QT_LIBRARIES} )
290 endif()
291
286292 add_executable(sclang LangSource/cmdLineFuncs.cpp)
287293
288294 if (Boost_FOUND)
2525 #include "SC_DirUtils.h"
2626 #include "PyrPrimitive.h"
2727 #include "PyrKernel.h"
28 #ifdef _WIN32
29 # include "SC_Win32Utils.h"
30 #endif
2831
2932 #define PATH_CONSTANT_PRIM_BODY(func) \
3033 PyrSlot *a = g->sp; \
6972 PATH_CONSTANT_PRIM_BODY(sc_GetResourceDirectory);
7073 }
7174
75 #ifdef _WIN32
76 static int prWinPlatform_myDocumentsDir(struct VMGlobals *g, int numArgsPushed)
77 {
78 PyrSlot *a = g->sp;
79 char path[PATH_MAX];
80 win32_GetKnownFolderPath(CSIDL_PERSONAL, path, PATH_MAX); \
81 PyrString* string = newPyrString(g->gc, path, 0, true); \
82 SetObject(a, string);
83 return errNone;
84 }
85 #endif
86
7287 static int prPlatform_ideName(struct VMGlobals *g, int numArgsPushed)
7388 {
7489 PyrSlot *a = g->sp;
92107 definePrimitive(base, index++, "_Platform_userConfigDir", prPlatform_userConfigDir, 1, 0);
93108 definePrimitive(base, index++, "_Platform_resourceDir", prPlatform_resourceDir, 1, 0);
94109 definePrimitive(base, index++, "_Platform_ideName", prPlatform_ideName, 1, 0);
110 #ifdef _WIN32
111 definePrimitive(base, index++, "_WinPlatform_myDocumentsDir", prWinPlatform_myDocumentsDir, 1, 0);
112 #endif
95113 }
96114
97115 // EOF
4646 #include "InitAlloc.h"
4747 #include "../LangSource/SC_LanguageConfig.hpp"
4848 #include "SC_DirUtils.h"
49
49 #include "SC_Version.hpp"
5050
5151 #ifdef SC_WIN32
5252 # include <direct.h>
35533553 }
35543554
35553555
3556 static int prVersionMajor(struct VMGlobals * g, int numArgsPushed)
3557 {
3558 PyrSlot *result = g->sp;
3559 SetInt(result, SC_VersionMajor);
3560 return errNone;
3561 }
3562
3563 static int prVersionMinor(struct VMGlobals * g, int numArgsPushed)
3564 {
3565 PyrSlot *result = g->sp;
3566 SetInt(result, SC_VersionMinor);
3567 return errNone;
3568 }
3569
3570 static int prVersionPatch(struct VMGlobals * g, int numArgsPushed)
3571 {
3572 PyrSlot *result = g->sp;
3573 SetObject(result, newPyrString(g->gc, SC_VersionPatch, 0, 1));
3574 return errNone;
3575 }
3576
3577
35563578 #define PRIMGROWSIZE 480
35573579 PrimitiveTable gPrimitiveTable;
35583580
41174139 definePrimitive(base, index++, "_LanguageConfig_getPostInlineWarnings", prLanguageConfig_getPostInlineWarnings, 1, 0);
41184140 definePrimitive(base, index++, "_LanguageConfig_setPostInlineWarnings", prLanguageConfig_setPostInlineWarnings, 2, 0);
41194141
4142 definePrimitive(base, index++, "_SC_VersionMajor", prVersionMajor, 1, 0);
4143 definePrimitive(base, index++, "_SC_VersionMinor", prVersionMinor, 1, 0);
4144 definePrimitive(base, index++, "_SC_VersionPatch", prVersionPatch, 1, 0);
4145
41204146 //void initOscilPrimitives();
41214147 //void initControllerPrimitives();
41224148
21052105 compiledOK = false;
21062106
21072107 pthread_mutex_unlock (&gLangMutex);
2108
2109 SC_LanguageConfig::freeLibraryConfig();
21082110 }
21092111
21102112 SC_DLLEXPORT_C bool compileLibrary()
21162118 gNumCompiledFiles = 0;
21172119 compiledOK = false;
21182120
2119 SC_LanguageConfig::readDefaultLibraryConfig();
2121 SC_LanguageConfig::readLibraryConfig();
21202122
21212123 compileStartTime = elapsedTime();
21222124
4646 using namespace std;
4747
4848 SC_LanguageConfig *gLanguageConfig = 0;
49 string SC_LanguageConfig::gConfigFile;
4950
5051 static bool findPath( SC_LanguageConfig::DirVector & vec, const char * path, bool addIfMissing)
5152 {
258259 return file_exists(fileName.c_str());
259260 }
260261
261 bool SC_LanguageConfig::readDefaultLibraryConfig()
262 {
262 bool SC_LanguageConfig::readLibraryConfig()
263 {
264 bool configured = false;
265
266 if (!gConfigFile.empty() && file_exists(gConfigFile)) {
267 configured = readLibraryConfigYAML(gConfigFile.c_str());
268 if (configured)
269 return true;
270 }
271
263272 char config_dir[PATH_MAX];
264 bool configured = false;
265273 sc_GetUserConfigDirectory(config_dir, PATH_MAX);
266274
267275 std::string user_yaml_config_file = std::string(config_dir) + SC_PATH_DELIMITER + "sclang_conf.yaml";
4646 void removeExcludedDirectory(const char *name);
4747
4848 // convenience functions to access the global library config
49 static void setConfigFile(std::string const & fileName)
50 {
51 gConfigFile = fileName;
52 }
53
4954 static bool readLibraryConfigYAML(const char* fileName);
5055 static bool writeLibraryConfigYAML(const char* fileName);
5156 static void freeLibraryConfig();
5257 static bool defaultLibraryConfig(void);
53 static bool readDefaultLibraryConfig();
58 static bool readLibraryConfig();
5459
5560 private:
5661 DirVector mIncludedDirectories;
5762 DirVector mExcludedDirectories;
5863 DirVector mDefaultClassLibraryDirectories;
64 static std::string gConfigFile;
5965 };
6066
6167 extern SC_LanguageConfig* gLanguageConfig;
246246 opt.mArgv = argv;
247247
248248 // read library configuration file
249 if (opt.mLibraryConfigFile) {
250 int argLength = strlen(opt.mLibraryConfigFile);
251 SC_LanguageConfig::readLibraryConfigYAML(opt.mLibraryConfigFile);
252 } else
253 SC_LanguageConfig::readDefaultLibraryConfig();
249 if (opt.mLibraryConfigFile)
250 SC_LanguageConfig::setConfigFile(opt.mLibraryConfigFile);
251
252 SC_LanguageConfig::readLibraryConfig();
254253
255254 // initialize runtime
256255 initRuntime(opt);
389388
390389 while ( mSignals ) {
391390 int sig = mSignals;
391 mSignals = 0;
392392
393393 unlockSignal();
394394
396396 //postfl("input\n");
397397 lockInput();
398398 interpretInput();
399 // clear input signal, as we've processed anything signalled so far.
400 lockSignal();
401 mSignals &= ~sig_input;
402 unlockSignal();
403399 unlockInput();
404400 }
405401
408404 double secs;
409405 lock();
410406 haveNext = tickLocked( &secs );
411 // clear scheduler signal, as we've processed all items scheduled up to this time.
412 // and will enter the wait according to schedule.
413 lockSignal();
414 mSignals &= ~sig_sched;
415 unlockSignal();
416407 unlock();
417408
418409 flush();
423414
424415 if (sig & sig_stop) {
425416 stopMain();
426 lockSignal();
427 mSignals &= ~sig_stop;
428 unlockSignal();
429417 }
430418
431419 if (sig & sig_recompile) {
432420 recompileLibrary();
433 lockSignal();
434 mSignals &= ~sig_recompile;
435 unlockSignal();
436421 }
437422
438423 lockSignal();
+0
-7
platform/SCVersion.sc.in less more
0 // Do not edit this file manually, it's configured by CMake. The version numbers are set in SCVersion.txt
1 + Main {
2 *scVersionMajor { ^@PROJECT_VERSION_MAJOR@ }
3 *scVersionMinor { ^@PROJECT_VERSION_MINOR@ }
4 *scVersionPostfix { ^"@PROJECT_VERSION_PATCH@" }
5 }
6
21632163 } else {
21642164 float slope = CALCSLOPE(next_a, xa);
21652165 nova::over_vec_simd(OUT(0), slope_argument(xa, slope), IN(1), inNumSamples);
2166 unit->mPrevA = xa;
2166 unit->mPrevA = next_a;
21672167 }
21682168 }
21692169
12381238 unit->m_writepos = (int32)ZIN0(1) * numInputs;
12391239 unit->m_recLevel = ZIN0(2);
12401240 unit->m_preLevel = ZIN0(3);
1241 unit->m_prevtrig = 0.f;
12411242
12421243 if (INRATE(2) == calc_ScalarRate && INRATE(3) == calc_ScalarRate
12431244 && unit->m_recLevel == 1.0 && unit->m_preLevel == 0.0)
13651366 }
13661367 if (run > 0.f) {
13671368 int nsmps = bufSamples - writepos;
1368 nsmps = sc_clip(nsmps, 0, inNumSamples);
1369 nsmps = sc_clip(nsmps, 0, inNumSamples * bufChannels);
13691370 if (bufChannels == 1) {
13701371 for (int32 k=0; k<nsmps; ++k) {
13711372 float* table0 = bufData + writepos;
13761377 preLevel += preLevel_slope;
13771378 }
13781379 } else if (bufChannels == 2 && numInputs == 2) {
1380 nsmps = nsmps/2;
13791381 for (int32 k=0; k<nsmps; ++k) {
13801382 float* table0 = bufData + writepos;
13811383 table0[0] = *++(in[0]) * recLevel + table0[0] * preLevel;
13861388 preLevel += preLevel_slope;
13871389 }
13881390 } else {
1391 nsmps = nsmps/bufChannels;
13891392 for (int32 k=0; k<nsmps; ++k) {
13901393 float* table0 = bufData + writepos;
13911394 for (uint32 i=0; i<numInputs; ++i) {
14001403 }
14011404 } else if (run < 0.f) {
14021405 int nsmps = writepos;
1403 nsmps = sc_clip(nsmps, 0, inNumSamples);
1406 nsmps = sc_clip(nsmps, 0, inNumSamples * bufChannels);
14041407 if (bufChannels == 1) {
1405 for (int32 k=0; k<inNumSamples; ++k) {
1408 for (int32 k=0; k<nsmps; ++k) {
14061409 float* table0 = bufData + writepos;
14071410 table0[0] = *++(in[0]) * recLevel + table0[0] * preLevel;
14081411 writepos -= bufChannels;
14111414 preLevel += preLevel_slope;
14121415 }
14131416 } else if (bufChannels == 2 && numInputs == 2) {
1414 for (int32 k=0; k<inNumSamples; ++k) {
1417 nsmps = nsmps/2;
1418 for (int32 k=0; k<nsmps; ++k) {
14151419 float* table0 = bufData + writepos;
14161420 table0[0] = *++(in[0]) * recLevel + table0[0] * preLevel;
14171421 table0[1] = *++(in[1]) * recLevel + table0[1] * preLevel;
14211425 preLevel += preLevel_slope;
14221426 }
14231427 } else {
1424 for (int32 k=0; k<inNumSamples; ++k) {
1428 nsmps = nsmps/bufChannels;
1429 for (int32 k=0; k<nsmps; ++k) {
14251430 float* table0 = bufData + writepos;
14261431 for (uint32 i=0; i<numInputs; ++i) {
14271432 float *samp = table0 + i;
15281533 }
15291534 if (run > 0.f) {
15301535 int nsmps = bufSamples - writepos;
1531 nsmps = sc_clip(nsmps, 0, inNumSamples);
1536 nsmps = sc_clip(nsmps, 0, inNumSamples * bufChannels);
15321537 if (bufChannels == 1) {
15331538 for (int32 k=0; k<nsmps; ++k) {
15341539 float* table0 = bufData + writepos;
15361541 writepos += 1;
15371542 }
15381543 } else if (bufChannels == 2) {
1544 nsmps = nsmps/2;
15391545 for (int32 k=0; k<nsmps; ++k) {
15401546 float* table0 = bufData + writepos;
15411547 table0[0] = *++(in[0]);
15421548 table0[1] = *++(in[1]);
15431549 writepos += 2;
1544 if (writepos >= (int32)bufSamples) writepos = (int32)bufSamples - 2; // added by jrhb
15451550 }
15461551 } else {
1552 nsmps = nsmps/bufChannels;
15471553 for (int32 k=0; k<nsmps; ++k) {
15481554 float* table0 = bufData + writepos;
15491555 for (uint32 i=0; i<bufChannels; ++i) {
15511557 *samp = *++(in[i]);
15521558 }
15531559 writepos += bufChannels;
1554 if (writepos >= (int32)bufSamples) writepos = (int32)bufSamples - bufChannels; // added by jrhb
15551560 }
15561561 }
15571562 } else if (run < 0.f) {
15581563 int nsmps = writepos;
1559 nsmps = sc_clip(nsmps, 0, inNumSamples);
1564 nsmps = sc_clip(nsmps, 0, inNumSamples * bufChannels);
15601565 if (bufChannels == 1) {
1561 for (int32 k=0; k<inNumSamples; ++k) {
1566 for (int32 k=0; k<nsmps; ++k) {
15621567 float* table0 = bufData + writepos;
15631568 table0[0] = *++(in[0]);
15641569 writepos -= 1;
15651570 }
15661571 } else if (bufChannels == 2) {
1567 for (int32 k=0; k<inNumSamples; ++k) {
1572 nsmps = nsmps/2;
1573 for (int32 k=0; k<nsmps; ++k) {
15681574 float* table0 = bufData + writepos;
15691575 table0[0] = *++(in[0]);
15701576 table0[1] = *++(in[1]);
15711577 writepos -= 2;
15721578 }
15731579 } else {
1574 for (int32 k=0; k<inNumSamples; ++k) {
1580 nsmps = nsmps/bufChannels;
1581 for (int32 k=0; k<nsmps; ++k) {
15751582 float* table0 = bufData + writepos;
15761583 for (uint32 i=0; i<bufChannels; ++i) {
15771584 float *samp = table0 + i;
15811588 }
15821589 }
15831590 }
1591
15841592 if (writepos >= (int32)bufSamples){
15851593 unit->mDone = true;
15861594 DoneAction(IN0(7), unit);
10801080
10811081 static inline bool GrainBuf_grain_cleanup(GrainBuf * unit, GrainBufG * grain)
10821082 {
1083 if (grain->counter <= 0)
1084 {
1083 if (grain->counter <= 0) {
10851084 *grain = unit->mGrains[--unit->mNumActive]; // remove grain
10861085 return true;
1087 }
1088 else
1086 } else
10891087 return false;
10901088 }
10911089
11711169 float bufRateScale = bufSampleRate * SAMPLEDUR;
11721170 double loopMax = (double)bufFrames;
11731171
1174 double counter = grain_in_at<full_rate>(unit, 1, position) * SAMPLERATE;
1175 counter = sc_max(4., counter);
1176 grain->counter = (int)counter;
1177
11781172 double rate = grain->rate = grain_in_at<full_rate>(unit, 3, position) * bufRateScale;
11791173 double phase = grain_in_at<full_rate>(unit, 4, position) * bufFrames;
11801174 if (sc_isnan(phase)) {
11811175 GrainBuf_grain_cleanup(unit, grain);
11821176 return;
11831177 }
1178
1179 double counter = grain_in_at<full_rate>(unit, 1, position) * SAMPLERATE;
1180 counter = sc_max(4., counter);
1181 grain->counter = (int)counter;
11841182
11851183 grain->interp = (int)grain_in_at<full_rate>(unit, 5, position);
11861184 grain->winType = winType;
392392
393393 //////////////////////////////////////////////////////////////////////////////////////////////////
394394
395 #ifdef NOVA_SIMD
396 FLATTEN void In_next_a_nova(IOUnit *unit, int inNumSamples)
397 {
398 World *world = unit->mWorld;
399 int bufLength = world->mBufLength;
400 int numChannels = unit->mNumOutputs;
401
402 float fbusChannel = ZIN0(0);
395
396 static inline void IO_a_update_channels(IOUnit * unit, World * world, float fbusChannel,
397 int numChannels, int bufLength)
398 {
403399 if (fbusChannel != unit->m_fbusChannel) {
404400 unit->m_fbusChannel = fbusChannel;
405401 int busChannel = (uint32)fbusChannel;
410406 unit->m_busTouched = world->mAudioBusTouched + busChannel;
411407 }
412408 }
409 }
410
411 template <bool LockShared>
412 struct AudioBusGuard
413 {
414 AudioBusGuard(const Unit * unit, int32 currentChannel, int32 maxChannel):
415 unit(unit),
416 mCurrentChannel(currentChannel),
417 isValid(currentChannel < maxChannel)
418 {
419 if (isValid)
420 lock();
421 }
422
423 ~AudioBusGuard()
424 {
425 if (isValid)
426 unlock();
427 }
428
429 void lock()
430 {
431 if (LockShared)
432 ACQUIRE_BUS_AUDIO_SHARED(mCurrentChannel);
433 else
434 ACQUIRE_BUS_AUDIO(mCurrentChannel);
435 }
436
437 void unlock()
438 {
439 if (LockShared)
440 RELEASE_BUS_AUDIO_SHARED(mCurrentChannel);
441 else
442 RELEASE_BUS_AUDIO(mCurrentChannel);
443 }
444
445 const Unit * unit;
446 const int32 mCurrentChannel;
447 const bool isValid;
448 };
449
450 #ifdef NOVA_SIMD
451 FLATTEN void In_next_a_nova(IOUnit *unit, int inNumSamples)
452 {
453 World *world = unit->mWorld;
454 int bufLength = world->mBufLength;
455 int numChannels = unit->mNumOutputs;
456
457 float fbusChannel = ZIN0(0);
458 IO_a_update_channels(unit, world, fbusChannel, numChannels, bufLength);
413459
414460 float *in = unit->m_bus;
415461 int32 *touched = unit->m_busTouched;
416 int32 bufCounter = unit->mWorld->mBufCounter;
462 const int32 bufCounter = unit->mWorld->mBufCounter;
463 const int32 maxChannel = world->mNumAudioBusChannels;
417464
418465 for (int i=0; i<numChannels; ++i, in += bufLength) {
419 ACQUIRE_BUS_AUDIO_SHARED((int32)fbusChannel + i);
466 AudioBusGuard<true> guard (unit, fbusChannel + i, maxChannel);
467
420468 float *out = OUT(i);
421 if (touched[i] == bufCounter)
469
470 if (guard.isValid && (touched[i] == bufCounter))
422471 nova::copyvec_simd(out, in, inNumSamples);
423472 else
424473 nova::zerovec_simd(out, inNumSamples);
425 RELEASE_BUS_AUDIO_SHARED((int32)fbusChannel + i);
426474 }
427475 }
428476
433481 int numChannels = unit->mNumOutputs;
434482
435483 float fbusChannel = ZIN0(0);
436 if (fbusChannel != unit->m_fbusChannel) {
437 unit->m_fbusChannel = fbusChannel;
438 int busChannel = (uint32)fbusChannel;
439 int lastChannel = busChannel + numChannels;
440
441 if (!(busChannel < 0 || lastChannel > (int)world->mNumAudioBusChannels)) {
442 unit->m_bus = world->mAudioBus + (busChannel * bufLength);
443 unit->m_busTouched = world->mAudioBusTouched + busChannel;
444 }
445 }
484 IO_a_update_channels(unit, world, fbusChannel, numChannels, bufLength);
446485
447486 float *in = unit->m_bus;
448487 int32 *touched = unit->m_busTouched;
449 int32 bufCounter = unit->mWorld->mBufCounter;
488 const int32 bufCounter = unit->mWorld->mBufCounter;
489 const int32 maxChannel = world->mNumAudioBusChannels;
450490
451491 for (int i=0; i<numChannels; ++i, in += bufLength) {
452 ACQUIRE_BUS_AUDIO_SHARED((int32)fbusChannel + i);
492 AudioBusGuard<true> guard (unit, fbusChannel + i, maxChannel);
493
453494 float *out = OUT(i);
454 if (touched[i] == bufCounter)
495 if (guard.isValid && (touched[i] == bufCounter))
455496 nova::copyvec_simd<64>(out, in);
456497 else
457498 nova::zerovec_simd<64>(out);
458 RELEASE_BUS_AUDIO_SHARED((int32)fbusChannel + i);
459499 }
460500 }
461501
466506 World *world = unit->mWorld;
467507 int bufLength = world->mBufLength;
468508 int numChannels = unit->mNumOutputs;
509
510 float fbusChannel = ZIN0(0);
511 IO_a_update_channels(unit, world, fbusChannel, numChannels, bufLength);
512
513 float *in = unit->m_bus;
514 int32 *touched = unit->m_busTouched;
515 const int32 bufCounter = unit->mWorld->mBufCounter;
516 const int32 maxChannel = world->mNumAudioBusChannels;
517
518 for (int i=0; i<numChannels; ++i, in += bufLength) {
519 AudioBusGuard<true> guard (unit, fbusChannel + i, maxChannel);
520
521 float *out = OUT(i);
522 if (guard.isValid && (touched[i] == bufCounter)) Copy(inNumSamples, out, in);
523 else Fill(inNumSamples, out, 0.f);
524 }
525 }
526
527 #ifdef IPHONE_VEC
528 void vIn_next_a(IOUnit *unit, int inNumSamples)
529 {
530 World *world = unit->mWorld;
531 int bufLength = world->mBufLength;
532 int numChannels = unit->mNumOutputs;
533
534 float fbusChannel = ZIN0(0);
535 IO_a_update_channels(unit, world, fbusChannel, numChannels, bufLength);
536
537 float *in = unit->m_bus;
538 int32 *touched = unit->m_busTouched;
539 const int32 bufCounter = unit->mWorld->mBufCounter;
540 const int32 maxChannel = world->mNumAudioBusChannels;
541
542 for (int i=0; i<numChannels; ++i, in += bufLength) {
543 AudioBusGuard<true> guard (unit, fbusChannel + i, maxChannel);
544
545 float *out = OUT(i);
546 if (guard.isValid && (touched[i] == bufCounter))
547 vcopy(out, in, inNumSamples);
548 else
549 vfill(out, 0.f, inNumSamples);
550 }
551 }
552 #endif
553
554 // FIXME: add safety checks for control bus access
555
556 void In_next_k(IOUnit *unit, int inNumSamples)
557 {
558 //Print("->In_next_k\n");
559 World *world = unit->mWorld;
560 uint32 numChannels = unit->mNumOutputs;
469561
470562 float fbusChannel = ZIN0(0);
471563 if (fbusChannel != unit->m_fbusChannel) {
473565 uint32 busChannel = (uint32)fbusChannel;
474566 uint32 lastChannel = busChannel + numChannels;
475567
476 if (!(lastChannel > world->mNumAudioBusChannels)) {
477 unit->m_bus = world->mAudioBus + (busChannel * bufLength);
478 unit->m_busTouched = world->mAudioBusTouched + busChannel;
479 }
480 }
481
482 float *in = unit->m_bus;
483 int32 *touched = unit->m_busTouched;
484 int32 bufCounter = unit->mWorld->mBufCounter;
485
486 for (int i=0; i<numChannels; ++i, in += bufLength) {
487 ACQUIRE_BUS_AUDIO_SHARED((int32)fbusChannel + i);
488 float *out = OUT(i);
489 if (touched[i] == bufCounter) Copy(inNumSamples, out, in);
490 else Fill(inNumSamples, out, 0.f);
491 RELEASE_BUS_AUDIO_SHARED((int32)fbusChannel + i);
492 }
493 }
494
495 #ifdef IPHONE_VEC
496 void vIn_next_a(IOUnit *unit, int inNumSamples)
497 {
498 World *world = unit->mWorld;
499 int bufLength = world->mBufLength;
500 int numChannels = unit->mNumOutputs;
501
502 float fbusChannel = ZIN0(0);
503 if (fbusChannel != unit->m_fbusChannel) {
504 unit->m_fbusChannel = fbusChannel;
505 int busChannel = (uint32)fbusChannel;
506 int lastChannel = busChannel + numChannels;
507
508 if (!(busChannel < 0 || lastChannel > (int)world->mNumAudioBusChannels)) {
509 unit->m_bus = world->mAudioBus + (busChannel * bufLength);
510 unit->m_busTouched = world->mAudioBusTouched + busChannel;
511 }
512 }
513
514 float *in = unit->m_bus;
515 int32 *touched = unit->m_busTouched;
516 int32 bufCounter = unit->mWorld->mBufCounter;
517
518 for (int i=0; i<numChannels; ++i, in += bufLength) {
519 ACQUIRE_BUS_AUDIO_SHARED((int32)fbusChannel + i);
520 float *out = OUT(i);
521 if (touched[i] == bufCounter)
522 {
523 vcopy(out, in, inNumSamples);
524 }
525 else
526 {
527 vfill(out, 0.f, inNumSamples);
528 }
529 RELEASE_BUS_AUDIO_SHARED((int32)fbusChannel + i);
530 }
531 }
532 #endif
533
534 void In_next_k(IOUnit *unit, int inNumSamples)
535 {
536 //Print("->In_next_k\n");
537 World *world = unit->mWorld;
538 uint32 numChannels = unit->mNumOutputs;
539
540 float fbusChannel = ZIN0(0);
541 if (fbusChannel != unit->m_fbusChannel) {
542 unit->m_fbusChannel = fbusChannel;
543 uint32 busChannel = (uint32)fbusChannel;
544 uint32 lastChannel = busChannel + numChannels;
545
546568 if (!(lastChannel > world->mNumControlBusChannels)) {
547569 unit->m_bus = world->mControlBus + busChannel;
548570 }
560582 {
561583 //Print("->In_Ctor\n");
562584 World *world = unit->mWorld;
563 unit->m_fbusChannel = -1.;
585 unit->m_fbusChannel = std::numeric_limits<float>::quiet_NaN();
564586
565587 if (unit->mCalcRate == calc_FullRate) {
566588 #ifdef NOVA_SIMD
671693 int numChannels = unit->mNumOutputs;
672694
673695 float fbusChannel = ZIN0(0);
674 if (fbusChannel != unit->m_fbusChannel) {
675 unit->m_fbusChannel = fbusChannel;
676 uint32 busChannel = (uint32)fbusChannel;
677 uint32 lastChannel = busChannel + numChannels;
678
679 if (!(lastChannel > world->mNumAudioBusChannels)) {
680 unit->m_bus = world->mAudioBus + (busChannel * bufLength);
681 unit->m_busTouched = world->mAudioBusTouched + busChannel;
682 }
683 }
696 IO_a_update_channels(unit, world, fbusChannel, numChannels, bufLength);
684697
685698 float *in = unit->m_bus;
686699 int32 *touched = unit->m_busTouched;
687 int32 bufCounter = unit->mWorld->mBufCounter;
700 const int32 bufCounter = unit->mWorld->mBufCounter;
701 const int32 maxChannel = world->mNumAudioBusChannels;
688702
689703 for (int i=0; i<numChannels; ++i, in += bufLength) {
690 ACQUIRE_BUS_AUDIO_SHARED((int32)fbusChannel + i);
704 AudioBusGuard<true> guard (unit, fbusChannel + i, maxChannel);
705
691706 float *out = OUT(i);
692707 int diff = bufCounter - touched[i];
693 if (diff == 1 || diff == 0) Copy(inNumSamples, out, in);
694 else Fill(inNumSamples, out, 0.f);
695 RELEASE_BUS_AUDIO_SHARED((int32)fbusChannel + i);
708 if (guard.isValid && (diff == 1 || diff == 0))
709 Copy(inNumSamples, out, in);
710 else
711 Fill(inNumSamples, out, 0.f);
696712 }
697713 }
698714
765781 int numChannels = unit->mNumInputs - 1;
766782
767783 float fbusChannel = ZIN0(0);
768 if (fbusChannel != unit->m_fbusChannel) {
769 unit->m_fbusChannel = fbusChannel;
770 uint32 busChannel = (uint32)fbusChannel;
771 uint32 lastChannel = busChannel + numChannels;
772
773 if (!(lastChannel > world->mNumAudioBusChannels)) {
774 unit->m_bus = world->mAudioBus + (busChannel * bufLength);
775 unit->m_busTouched = world->mAudioBusTouched + busChannel;
776 }
777 }
784 IO_a_update_channels(unit, world, fbusChannel, numChannels, bufLength);
778785
779786 float *out = unit->m_bus;
780787 int32 *touched = unit->m_busTouched;
781 int32 bufCounter = unit->mWorld->mBufCounter;
788 const int32 bufCounter = unit->mWorld->mBufCounter;
789 const int32 maxChannel = world->mNumAudioBusChannels;
790
782791 for (int i=0; i<numChannels; ++i, out+=bufLength) {
783 ACQUIRE_BUS_AUDIO((int32)fbusChannel + i);
784 float *in = IN(i+1);
785 Copy(inNumSamples, out, in);
786 touched[i] = bufCounter;
787 RELEASE_BUS_AUDIO((int32)fbusChannel + i);
788 }
789 }
790
792 AudioBusGuard<false> guard (unit, fbusChannel + i, maxChannel);
793
794 if (guard.isValid) {
795 float *in = IN(i+1);
796 Copy(inNumSamples, out, in);
797 touched[i] = bufCounter;
798 }
799 }
800 }
801
802 // FIXME: guard control bus & prevent buffer overflow
791803 void ReplaceOut_next_k(IOUnit *unit, int inNumSamples)
792804 {
793805 World *world = unit->mWorld;
825837 int numChannels = unit->mNumInputs - 1;
826838
827839 float fbusChannel = ZIN0(0);
828 if (fbusChannel != unit->m_fbusChannel) {
829 unit->m_fbusChannel = fbusChannel;
830 uint32 busChannel = (uint32)fbusChannel;
831 uint32 lastChannel = busChannel + numChannels;
832
833 if (!(lastChannel > world->mNumAudioBusChannels)) {
834 unit->m_bus = world->mAudioBus + (busChannel * bufLength);
835 unit->m_busTouched = world->mAudioBusTouched + busChannel;
836 }
837 }
840 IO_a_update_channels(unit, world, fbusChannel, numChannels, bufLength);
838841
839842 float *out = unit->m_bus;
840843 int32 *touched = unit->m_busTouched;
841 int32 bufCounter = unit->mWorld->mBufCounter;
844 const int32 bufCounter = unit->mWorld->mBufCounter;
845 const int32 maxChannel = world->mNumAudioBusChannels;
846
842847 for (int i=0; i<numChannels; ++i, out+=bufLength) {
843 ACQUIRE_BUS_AUDIO((int32)fbusChannel + i);
844 float *in = IN(i+1);
845 nova::copyvec_simd(out, in, inNumSamples);
846 touched[i] = bufCounter;
847 RELEASE_BUS_AUDIO((int32)fbusChannel + i);
848 AudioBusGuard<false> guard (unit, fbusChannel + i, maxChannel);
849
850 if (guard.isValid) {
851 float *in = IN(i+1);
852 nova::copyvec_simd(out, in, inNumSamples);
853 touched[i] = bufCounter;
854 }
848855 }
849856 }
850857
855862 int numChannels = unit->mNumInputs - 1;
856863
857864 float fbusChannel = ZIN0(0);
858 if (fbusChannel != unit->m_fbusChannel) {
859 unit->m_fbusChannel = fbusChannel;
860 uint32 busChannel = (uint32)fbusChannel;
861 uint32 lastChannel = busChannel + numChannels;
862
863 if (!(lastChannel > world->mNumAudioBusChannels)) {
864 unit->m_bus = world->mAudioBus + (busChannel * bufLength);
865 unit->m_busTouched = world->mAudioBusTouched + busChannel;
866 }
867 }
865 IO_a_update_channels(unit, world, fbusChannel, numChannels, bufLength);
868866
869867 float *out = unit->m_bus;
870868 int32 *touched = unit->m_busTouched;
871 int32 bufCounter = unit->mWorld->mBufCounter;
869 const int32 bufCounter = unit->mWorld->mBufCounter;
870 const int32 maxChannel = world->mNumAudioBusChannels;
871
872872 for (int i=0; i<numChannels; ++i, out+=bufLength) {
873 ACQUIRE_BUS_AUDIO((int32)fbusChannel + i);
874 float *in = IN(i+1);
875 nova::copyvec_simd<64>(out, in);
876 touched[i] = bufCounter;
877 RELEASE_BUS_AUDIO((int32)fbusChannel + i);
873 AudioBusGuard<false> guard (unit, fbusChannel + i, maxChannel);
874
875 if (guard.isValid) {
876 float *in = IN(i+1);
877 nova::copyvec_simd<64>(out, in);
878 touched[i] = bufCounter;
879 }
878880 }
879881 }
880882
913915 int numChannels = unit->mNumInputs - 1;
914916
915917 float fbusChannel = ZIN0(0);
916 if (fbusChannel != unit->m_fbusChannel) {
917 unit->m_fbusChannel = fbusChannel;
918 uint32 busChannel = (uint32)fbusChannel;
919 uint32 lastChannel = busChannel + numChannels;
920
921 if (!(lastChannel > world->mNumAudioBusChannels)) {
922 unit->m_bus = world->mAudioBus + (busChannel * bufLength);
923 unit->m_busTouched = world->mAudioBusTouched + busChannel;
924 }
925 }
918 IO_a_update_channels(unit, world, fbusChannel, numChannels, bufLength);
919
920 float *out = unit->m_bus;
921 int32 *touched = unit->m_busTouched;
922 const int32 bufCounter = unit->mWorld->mBufCounter;
923 const int32 maxChannel = world->mNumAudioBusChannels;
924
925 for (int i=0; i<numChannels; ++i, out+=bufLength) {
926 AudioBusGuard<false> guard (unit, fbusChannel + i, maxChannel);
927
928 if (guard.isValid) {
929 float *in = IN(i+1);
930 if (touched[i] == bufCounter) Accum(inNumSamples, out, in);
931 else {
932 Copy(inNumSamples, out, in);
933 touched[i] = bufCounter;
934 }
935 }
936 }
937 }
938
939
940
941 #ifdef IPHONE_VEC
942 void vOut_next_a(IOUnit *unit, int inNumSamples)
943 {
944 //Print("Out_next_a %d\n", unit->mNumInputs);
945 World *world = unit->mWorld;
946 int bufLength = world->mBufLength;
947 int numChannels = unit->mNumInputs - 1;
948
949 float fbusChannel = ZIN0(0);
950 IO_a_update_channels(unit, world, fbusChannel, numChannels, bufLength);
926951
927952 float *out = unit->m_bus;
928953 int32 *touched = unit->m_busTouched;
929954 int32 bufCounter = unit->mWorld->mBufCounter;
930955 for (int i=0; i<numChannels; ++i, out+=bufLength) {
931 ACQUIRE_BUS_AUDIO((int32)fbusChannel + i);
932 float *in = IN(i+1);
933 if (touched[i] == bufCounter) Accum(inNumSamples, out, in);
934 else {
935 Copy(inNumSamples, out, in);
936 touched[i] = bufCounter;
937 }
938 RELEASE_BUS_AUDIO((int32)fbusChannel + i);
939 //Print("out %d %g %g\n", i, in[0], out[0]);
940 }
941 }
942
943
944
945 #ifdef IPHONE_VEC
946 void vOut_next_a(IOUnit *unit, int inNumSamples)
947 {
948 //Print("Out_next_a %d\n", unit->mNumInputs);
949 World *world = unit->mWorld;
950 int bufLength = world->mBufLength;
951 int numChannels = unit->mNumInputs - 1;
952
953 float fbusChannel = ZIN0(0);
954 if (fbusChannel != unit->m_fbusChannel) {
955 unit->m_fbusChannel = fbusChannel;
956 int busChannel = (int)fbusChannel;
957 int lastChannel = busChannel + numChannels;
958
959 if (!(busChannel < 0 || lastChannel > (int)world->mNumAudioBusChannels)) {
960 unit->m_bus = world->mAudioBus + (busChannel * bufLength);
961 unit->m_busTouched = world->mAudioBusTouched + busChannel;
962 }
963 }
964
965 float *out = unit->m_bus;
966 int32 *touched = unit->m_busTouched;
967 int32 bufCounter = unit->mWorld->mBufCounter;
968 for (int i=0; i<numChannels; ++i, out+=bufLength) {
969 ACQUIRE_BUS_AUDIO((int32)fbusChannel + i);
970 float *in = IN(i+1);
971 if (touched[i] == bufCounter)
972 {
973 vadd(out, out, in, inNumSamples);
974 }
975 else
976 {
977 vcopy(out, in, inNumSamples);
978 touched[i] = bufCounter;
979 }
980 //Print("out %d %g %g\n", i, in[0], out[0]);
981 RELEASE_BUS_AUDIO((int32)fbusChannel + i);
956 AudioBusGuard<false> guard (unit, fbusChannel + i, maxChannel);
957
958 if (guard.isValid) {
959 float *in = IN(i+1);
960 if (touched[i] == bufCounter) {
961 vadd(out, out, in, inNumSamples);
962 } else {
963 vcopy(out, in, inNumSamples);
964 touched[i] = bufCounter;
965 }
966 }
982967 }
983968 }
984969 #endif
987972 #ifdef NOVA_SIMD
988973 FLATTEN void Out_next_a_nova(IOUnit *unit, int inNumSamples)
989974 {
975 World *world = unit->mWorld;
976 int bufLength = world->mBufLength;
977 int numChannels = unit->mNumInputs - 1;
978
979 float fbusChannel = ZIN0(0);
980 IO_a_update_channels(unit, world, fbusChannel, numChannels, bufLength);
981
982 float *out = unit->m_bus;
983 int32 *touched = unit->m_busTouched;
984 const int32 bufCounter = unit->mWorld->mBufCounter;
985 const int32 maxChannel = world->mNumAudioBusChannels;
986
987 for (int i=0; i<numChannels; ++i, out+=bufLength) {
988 AudioBusGuard<false> guard (unit, fbusChannel + i, maxChannel);
989
990 if (guard.isValid) {
991 float *in = IN(i+1);
992 if (touched[i] == bufCounter)
993 nova::addvec_simd(out, in, inNumSamples);
994 else {
995 nova::copyvec_simd(out, in, inNumSamples);
996 touched[i] = bufCounter;
997 }
998 }
999 }
1000 }
1001
1002 FLATTEN void Out_next_a_nova_64(IOUnit *unit, int inNumSamples)
1003 {
9901004 //Print("Out_next_a %d\n", unit->mNumInputs);
9911005 World *world = unit->mWorld;
9921006 int bufLength = world->mBufLength;
9931007 int numChannels = unit->mNumInputs - 1;
9941008
9951009 float fbusChannel = ZIN0(0);
996 if (fbusChannel != unit->m_fbusChannel) {
997 unit->m_fbusChannel = fbusChannel;
998 int busChannel = (int)fbusChannel;
999 int lastChannel = busChannel + numChannels;
1000
1001 if (!(busChannel < 0 || lastChannel > (int)world->mNumAudioBusChannels)) {
1002 unit->m_bus = world->mAudioBus + (busChannel * bufLength);
1003 unit->m_busTouched = world->mAudioBusTouched + busChannel;
1004 }
1005 }
1010 IO_a_update_channels(unit, world, fbusChannel, numChannels, bufLength);
10061011
10071012 float *out = unit->m_bus;
10081013 int32 *touched = unit->m_busTouched;
1009 int32 bufCounter = unit->mWorld->mBufCounter;
1014 const int32 bufCounter = unit->mWorld->mBufCounter;
1015 const int32 maxChannel = world->mNumAudioBusChannels;
1016
10101017 for (int i=0; i<numChannels; ++i, out+=bufLength) {
1011 ACQUIRE_BUS_AUDIO((int32)fbusChannel + i);
1012 float *in = IN(i+1);
1013 if (touched[i] == bufCounter)
1014 nova::addvec_simd(out, in, inNumSamples);
1015 else {
1016 nova::copyvec_simd(out, in, inNumSamples);
1017 touched[i] = bufCounter;
1018 }
1019 RELEASE_BUS_AUDIO((int32)fbusChannel + i);
1020 //Print("out %d %g %g\n", i, in[0], out[0]);
1021 }
1022 }
1023
1024 FLATTEN void Out_next_a_nova_64(IOUnit *unit, int inNumSamples)
1025 {
1026 //Print("Out_next_a %d\n", unit->mNumInputs);
1027 World *world = unit->mWorld;
1028 int bufLength = world->mBufLength;
1029 int numChannels = unit->mNumInputs - 1;
1030
1031 float fbusChannel = ZIN0(0);
1032 if (fbusChannel != unit->m_fbusChannel) {
1033 unit->m_fbusChannel = fbusChannel;
1034 int busChannel = (int)fbusChannel;
1035 int lastChannel = busChannel + numChannels;
1036
1037 if (!(busChannel < 0 || lastChannel > (int)world->mNumAudioBusChannels)) {
1038 unit->m_bus = world->mAudioBus + (busChannel * bufLength);
1039 unit->m_busTouched = world->mAudioBusTouched + busChannel;
1040 }
1041 }
1042
1043 float *out = unit->m_bus;
1044 int32 *touched = unit->m_busTouched;
1045 int32 bufCounter = unit->mWorld->mBufCounter;
1046 for (int i=0; i<numChannels; ++i, out+=bufLength) {
1047 float *in = IN(i+1);
1048 ACQUIRE_BUS_AUDIO((int32)fbusChannel + i);
1049 if (touched[i] == bufCounter)
1050 nova::addvec_simd<64>(out, in);
1051 else {
1052 nova::copyvec_simd<64>(out, in);
1053 touched[i] = bufCounter;
1054 }
1055 //Print("out %d %g %g\n", i, in[0], out[0]);
1056 RELEASE_BUS_AUDIO((int32)fbusChannel + i);
1018 AudioBusGuard<false> guard (unit, fbusChannel + i, maxChannel);
1019
1020 if (guard.isValid) {
1021 float *in = IN(i+1);
1022 if (touched[i] == bufCounter)
1023 nova::addvec_simd<64>(out, in);
1024 else {
1025 nova::copyvec_simd<64>(out, in);
1026 touched[i] = bufCounter;
1027 }
1028 }
10571029 }
10581030 }
10591031 #endif
11341106 int numChannels = unit->mNumInputs - 2;
11351107
11361108 float fbusChannel = ZIN0(0);
1137 if (fbusChannel != unit->m_fbusChannel) {
1138 unit->m_fbusChannel = fbusChannel;
1139 uint32 busChannel = (uint32)fbusChannel;
1140 uint32 lastChannel = busChannel + numChannels;
1141
1142 if (!(lastChannel > world->mNumAudioBusChannels)) {
1143 unit->m_bus = world->mAudioBus + (busChannel * bufLength);
1144 unit->m_busTouched = world->mAudioBusTouched + busChannel;
1145 }
1146 }
1109 IO_a_update_channels(unit, world, fbusChannel, numChannels, bufLength);
11471110
11481111 float next_xfade = ZIN0(1);
11491112 float xfade0 = unit->m_xfade;
11501113 float *out = unit->m_bus;
11511114 int32 *touched = unit->m_busTouched;
1152 int32 bufCounter = unit->mWorld->mBufCounter;
1115 const int32 bufCounter = unit->mWorld->mBufCounter;
1116 const int32 maxChannel = world->mNumAudioBusChannels;
1117
11531118 if (xfade0 != next_xfade) {
11541119 float slope = CALCSLOPE(next_xfade, xfade0);
11551120 for (int i=0; i<numChannels; ++i) {
1156 ACQUIRE_BUS_AUDIO((int32)fbusChannel + i);
1157 float xfade = xfade0;
1158 float *in = IN(i+2);
1159 if (touched[i] == bufCounter) {
1160 LOOP1(inNumSamples,
1161 float zin = *in;
1162 float zout = *out;
1121 AudioBusGuard<false> guard (unit, fbusChannel + i, maxChannel);
1122
1123 if (guard.isValid) {
1124 float xfade = xfade0;
1125 float *in = IN(i+2);
1126 if (touched[i] == bufCounter) {
1127 LOOP1(inNumSamples,
1128 float zin = *in;
1129 float zout = *out;
11631130 *out = zout + xfade * (zin - zout);
11641131 //if (xxi==0) Print("x %d %d %g %g %g %g\n", bufCounter, i, zin, zout, xfade, *out);
11651132 xfade += slope;
11661133 ++out; ++in;
1167 );
1168 } else {
1169 LOOP1(inNumSamples,
1170 float zin = *in;
1171 *out = xfade * zin;
1134 );
1135 } else {
1136 LOOP1(inNumSamples,
1137 float zin = *in;
1138 *out = xfade * zin;
11721139 xfade += slope;
11731140 ++out; ++in;
1174 );
1141 );
1142 touched[i] = bufCounter;
1143 }
1144 }
1145 }
1146 } else if (xfade0 == 1.f) {
1147 for (int i=0; i<numChannels; ++i, out+=bufLength) {
1148 AudioBusGuard<false> guard (unit, fbusChannel + i, maxChannel);
1149
1150 if (guard.isValid) {
1151 float *in = IN(i+2);
1152 Copy(inNumSamples, out, in);
11751153 touched[i] = bufCounter;
11761154 }
1177 RELEASE_BUS_AUDIO((int32)fbusChannel + i);
1178 }
1179 } else if (xfade0 == 1.f) {
1180 for (int i=0; i<numChannels; ++i, out+=bufLength) {
1181 ACQUIRE_BUS_AUDIO((int32)fbusChannel + i);
1182 float *in = IN(i+2);
1183 Copy(inNumSamples, out, in);
1184 touched[i] = bufCounter;
1185 RELEASE_BUS_AUDIO((int32)fbusChannel + i);
11861155 }
11871156 } else if (xfade0 == 0.f) {
11881157 // do nothing.
11891158 } else {
11901159 for (int i=0; i<numChannels; ++i) {
1191 ACQUIRE_BUS_AUDIO((int32)fbusChannel + i);
1192 float *in = IN(i+2);
1193 if (touched[i] == bufCounter) {
1194 LOOP1(inNumSamples,
1195 float zin = *in;
1196 float zout = *out;
1160 AudioBusGuard<false> guard (unit, fbusChannel + i, maxChannel);
1161 if (guard.isValid) {
1162 float *in = IN(i+2);
1163 if (touched[i] == bufCounter) {
1164 LOOP1(inNumSamples,
1165 float zin = *in;
1166 float zout = *out;
11971167 *out = zout + xfade0 * (zin - zout);
11981168 ++out; ++in;
1199 );
1200 } else {
1201 LOOP1(inNumSamples,
1202 float zin = *in;
1203 *out = xfade0 * zin;
1169 );
1170 } else {
1171 LOOP1(inNumSamples,
1172 float zin = *in;
1173 *out = xfade0 * zin;
12041174 ++out; ++in;
1205 );
1206 touched[i] = bufCounter;
1175 );
1176 touched[i] = bufCounter;
1177 }
12071178 }
1208 RELEASE_BUS_AUDIO((int32)fbusChannel + i);
12091179 }
12101180 }
12111181 unit->m_xfade = next_xfade;
12191189 int numChannels = unit->mNumInputs - 2;
12201190
12211191 float fbusChannel = ZIN0(0);
1222 if (fbusChannel != unit->m_fbusChannel) {
1223 unit->m_fbusChannel = fbusChannel;
1224 uint32 busChannel = (uint32)fbusChannel;
1225 uint32 lastChannel = busChannel + numChannels;
1226
1227 if (!(lastChannel > world->mNumAudioBusChannels)) {
1228 unit->m_bus = world->mAudioBus + (busChannel * bufLength);
1229 unit->m_busTouched = world->mAudioBusTouched + busChannel;
1230 }
1231 }
1192 IO_a_update_channels(unit, world, fbusChannel, numChannels, bufLength);
12321193
12331194 float next_xfade = ZIN0(1);
12341195 float xfade0 = unit->m_xfade;
12351196 float *out = unit->m_bus;
12361197 int32 *touched = unit->m_busTouched;
1237 int32 bufCounter = unit->mWorld->mBufCounter;
1198 const int32 bufCounter = unit->mWorld->mBufCounter;
1199 const int32 maxChannel = world->mNumAudioBusChannels;
1200
12381201 if (xfade0 != next_xfade) {
12391202 float slope = CALCSLOPE(next_xfade, xfade0);
12401203 for (int i=0; i<numChannels; ++i) {
1241 float xfade = xfade0;
1242 float *in = IN(i+2);
1243 ACQUIRE_BUS_AUDIO((int32)fbusChannel + i);
1244 if (touched[i] == bufCounter)
1245 nova::mix_vec_simd(out, out, slope_argument(1-xfade0, -slope), in, slope_argument(xfade0, slope), inNumSamples);
1246 else {
1247 nova::times_vec_simd(out, in, slope_argument(xfade, slope), inNumSamples);
1248 touched[i] = bufCounter;
1204 AudioBusGuard<false> guard (unit, fbusChannel + i, maxChannel);
1205
1206 if (guard.isValid) {
1207 float xfade = xfade0;
1208 float *in = IN(i+2);
1209 if (touched[i] == bufCounter)
1210 nova::mix_vec_simd(out, out, slope_argument(1-xfade0, -slope), in, slope_argument(xfade0, slope), inNumSamples);
1211 else {
1212 nova::times_vec_simd(out, in, slope_argument(xfade, slope), inNumSamples);
1213 touched[i] = bufCounter;
1214 }
12491215 }
1250 RELEASE_BUS_AUDIO((int32)fbusChannel + i);
12511216 }
12521217 unit->m_xfade = next_xfade;
12531218 } else if (xfade0 == 1.f) {
12541219 for (int i=0; i<numChannels; ++i, out+=bufLength) {
1255 float *in = IN(i+2);
1256 ACQUIRE_BUS_AUDIO((int32)fbusChannel + i);
1257 nova::copyvec_simd(out, in, inNumSamples);
1258 touched[i] = bufCounter;
1259 RELEASE_BUS_AUDIO((int32)fbusChannel + i);
1220 AudioBusGuard<false> guard (unit, fbusChannel + i, maxChannel);
1221
1222 if (guard.isValid) {
1223 float *in = IN(i+2);
1224 nova::copyvec_simd(out, in, inNumSamples);
1225 touched[i] = bufCounter;
1226 }
12601227 }
12611228 } else if (xfade0 == 0.f) {
12621229 // do nothing.
12631230 } else {
12641231 for (int i=0; i<numChannels; ++i) {
1265 float *in = IN(i+2);
1266 ACQUIRE_BUS_AUDIO((int32)fbusChannel + i);
1267 if (touched[i] == bufCounter)
1268 nova::mix_vec_simd(out, out, 1-xfade0, in, xfade0, inNumSamples);
1269 else {
1270 nova::times_vec_simd(out, in, xfade0, inNumSamples);
1271 touched[i] = bufCounter;
1232 AudioBusGuard<false> guard (unit, fbusChannel + i, maxChannel);
1233 if (guard.isValid) {
1234 float *in = IN(i+2);
1235 if (touched[i] == bufCounter)
1236 nova::mix_vec_simd(out, out, 1-xfade0, in, xfade0, inNumSamples);
1237 else {
1238 nova::times_vec_simd(out, in, xfade0, inNumSamples);
1239 touched[i] = bufCounter;
1240 }
12721241 }
1273 RELEASE_BUS_AUDIO((int32)fbusChannel + i);
12741242 }
12751243 }
12761244 }
13461314 int numChannels = unit->mNumInputs - 1;
13471315
13481316 float fbusChannel = ZIN0(0);
1349 if (fbusChannel != unit->m_fbusChannel) {
1350 unit->m_fbusChannel = fbusChannel;
1351 uint32 busChannel = (uint32)fbusChannel;
1352 uint32 lastChannel = busChannel + numChannels;
1353
1354 if (!(lastChannel > world->mNumAudioBusChannels)) {
1355 unit->m_bus = world->mAudioBus + (busChannel * bufLength);
1356 unit->m_busTouched = world->mAudioBusTouched + busChannel;
1357 }
1358 }
1317 IO_a_update_channels(unit, world, fbusChannel, numChannels, bufLength);
13591318
13601319 int32 offset = unit->mParent->mSampleOffset;
13611320 int32 remain = BUFLENGTH - offset;
13631322 float *out = unit->m_bus;
13641323 float *saved = unit->m_saved;
13651324 int32 *touched = unit->m_busTouched;
1366 int32 bufCounter = unit->mWorld->mBufCounter;
1325 const int32 bufCounter = unit->mWorld->mBufCounter;
1326 const int32 maxChannel = world->mNumAudioBusChannels;
1327
13671328 for (int i=0; i<numChannels; ++i, out+=bufLength, saved += offset) {
1368 ACQUIRE_BUS_AUDIO((int32)fbusChannel + i);
1329 AudioBusGuard<false> guard (unit, fbusChannel + i, maxChannel);
1330
13691331 float *in = IN(i+1);
13701332 //Print("out %d %d %d %d %d\n",
13711333 // i, touched[i] == bufCounter, unit->m_empty,
13721334 // offset, remain);
13731335
1374 if (touched[i] == bufCounter) {
1375 if (unit->m_empty) {
1376 //Print("touched offset %d\n", offset);
1336 if (guard.isValid) {
1337 if (touched[i] == bufCounter) {
1338 if (unit->m_empty) {
1339 //Print("touched offset %d\n", offset);
1340 } else {
1341 Accum(offset, out, saved);
1342 }
1343 Accum(remain, out + offset, in);
13771344 } else {
1378 Accum(offset, out, saved);
1345 if (unit->m_empty) {
1346 Clear(offset, out);
1347 //Print("untouched offset %d\n", offset);
1348 } else {
1349 Copy(offset, out, saved);
1350 }
1351 Copy(remain, out + offset, in);
1352 touched[i] = bufCounter;
13791353 }
1380 Accum(remain, out + offset, in);
1381 } else {
1382 if (unit->m_empty) {
1383 Clear(offset, out);
1384 //Print("untouched offset %d\n", offset);
1385 } else {
1386 Copy(offset, out, saved);
1387 }
1388 Copy(remain, out + offset, in);
1389 touched[i] = bufCounter;
1390 }
1354 }
1355
13911356 Copy(offset, saved, in + remain);
1392 RELEASE_BUS_AUDIO((int32)fbusChannel + i);
1357
13931358 //Print("out %d %d %d %g %g\n", i, in[0], out[0]);
13941359 }
13951360 unit->m_empty = false;
342342 uint32 bufnum = (uint32)fbufnum; \
343343 World *world = unit->mWorld; \
344344 if (bufnum >= world->mNumSndBufs) { \
345 int localBufNum = bufnum - world->mNumSndBufs; \
346 Graph *parent = unit->mParent; \
347 if(localBufNum <= parent->localBufNum) { \
348 unit->m_buf = parent->mLocalSndBufs + localBufNum; \
345 uint32 localBufNum = bufnum - world->mNumSndBufs; \
346 Graph *parent = unit->mParent; \
347 if(localBufNum <= parent->localBufNum) { \
348 unit->m_buf = parent->mLocalSndBufs + localBufNum; \
349 } else { \
350 bufnum = 0; \
351 unit->m_buf = world->mSndBufs + bufnum; \
352 } \
349353 } else { \
350 bufnum = 0; \
351354 unit->m_buf = world->mSndBufs + bufnum; \
352355 } \
353 } else { \
354 unit->m_buf = world->mSndBufs + bufnum; \
355 } \
356 unit->m_fbufnum = fbufnum; \
356 unit->m_fbufnum = fbufnum; \
357357 } \
358358 const SndBuf *buf = unit->m_buf; \
359 if(!buf) { \
359 if(!buf) { \
360360 ClearUnitOutputs(unit, inNumSamples); \
361361 return; \
362362 } \
389389
390390 void DegreeToKey_Ctor(DegreeToKey *unit)
391391 {
392 unit->m_fbufnum = -1e9f;
392 unit->m_fbufnum = std::numeric_limits<float>::quiet_NaN();
393393 if (BUFLENGTH == 1) {
394394 SETCALC(DegreeToKey_next_1);
395395 } else if (INRATE(0) == calc_FullRate) {
652652
653653 void Index_Ctor(Index *unit)
654654 {
655 unit->m_fbufnum = -1e9f;
655 unit->m_fbufnum = std::numeric_limits<float>::quiet_NaN();
656656 if (BUFLENGTH == 1) {
657657 SETCALC(Index_next_1);
658658 } else if (INRATE(0) == calc_FullRate) {
716716
717717 void IndexL_Ctor(IndexL *unit)
718718 {
719 unit->m_fbufnum = -1e9f;
719 unit->m_fbufnum = std::numeric_limits<float>::quiet_NaN();
720720 if (BUFLENGTH == 1) {
721721 SETCALC(IndexL_next_1);
722722 } else if (INRATE(0) == calc_FullRate) {
799799
800800 void FoldIndex_Ctor(FoldIndex *unit)
801801 {
802 unit->m_fbufnum = -1e9f;
802 unit->m_fbufnum = std::numeric_limits<float>::quiet_NaN();
803803 if (BUFLENGTH == 1) {
804804 SETCALC(FoldIndex_next_1);
805805 } else if (INRATE(0) == calc_FullRate) {
862862
863863 void WrapIndex_Ctor(WrapIndex *unit)
864864 {
865 unit->m_fbufnum = -1e9f;
865 unit->m_fbufnum = std::numeric_limits<float>::quiet_NaN();
866866 if (BUFLENGTH == 1) {
867867 SETCALC(WrapIndex_next_1);
868868 } else if (INRATE(0) == calc_FullRate) {
938938
939939 void IndexInBetween_Ctor(IndexInBetween *unit)
940940 {
941 unit->m_fbufnum = -1e9f;
941 unit->m_fbufnum = std::numeric_limits<float>::quiet_NaN();
942942 if (BUFLENGTH == 1) {
943943 SETCALC(IndexInBetween_next_1);
944944 } else if (INRATE(0) == calc_FullRate) {
10081008
10091009 void DetectIndex_Ctor(DetectIndex *unit)
10101010 {
1011 unit->m_fbufnum = -1e9f;
1011 unit->m_fbufnum = std::numeric_limits<float>::quiet_NaN();
10121012 if (BUFLENGTH == 1) {
10131013 SETCALC(DetectIndex_next_1);
10141014 } else if (INRATE(0) == calc_FullRate) {
10951095
10961096 void Shaper_Ctor(Shaper *unit)
10971097 {
1098 unit->m_fbufnum = -1e9f;
1098 unit->m_fbufnum = std::numeric_limits<float>::quiet_NaN();
10991099 if (BUFLENGTH == 1) {
11001100 SETCALC(Shaper_next_1);
11011101 } else if (INRATE(1) == calc_FullRate) {
11941194
11951195 void SigOsc_Ctor(SigOsc *unit)
11961196 {
1197 unit->m_fbufnum = -1e9f;
1197 unit->m_fbufnum = std::numeric_limits<float>::quiet_NaN();
11981198 if (BUFLENGTH == 1) {
11991199 SETCALC(SigOsc_next_1);
12001200 } else if (INRATE(0) == calc_FullRate) {
21532153
21542154 void COsc_Ctor(COsc *unit)
21552155 {
2156 unit->m_fbufnum = -1e9f;
2156 unit->m_fbufnum = std::numeric_limits<float>::quiet_NaN();
21572157 SETCALC(COsc_next);
21582158 unit->m_phase1 = 0;
21592159 unit->m_phase2 = 0;
146146
147147 requested_time.tv_sec = 0;
148148 requested_time.tv_nsec = 17000 * 1000;
149
150 // NOTE: should not be required as this is the only thread accessing the x11 API
151 // but omitting seems to cause troubles.
152 XInitThreads();
149153
150154 d = XOpenDisplay ( NULL );
151155 if (!d) return 0;
5252
5353 public:
5454 jack_backend(void):
55 client(NULL), time_is_synced(false)
55 client(NULL), is_active(false), time_is_synced(false)
5656 {}
5757
5858 ~jack_backend(void)
150150
151151 void deactivate_audio(void)
152152 {
153 jack_deactivate(client);
154 is_active = false;
153 if (is_active) {
154 jack_deactivate(client);
155 is_active = false;
156 }
155157 }
156158
157159 void get_cpuload(float & peak, float & average) const
9292
9393 super::output_samples.resize(output_channel_count);
9494
95 temp_buffer.reset(calloc_aligned<float>(std::max(input_channels, output_channels) * 64));
95 temp_buffer.reset(calloc_aligned<float>(std::max(input_channels, output_channels) * block_size));
9696
9797 }
9898
237237 instance->send(p.Data(), p.Size(), endpoint);
238238 }
239239
240 void send_fail_message(nova_endpoint const & endpoint, const char * cmd, const char * content)
241 {
242 char buffer[8192];
243 osc::OutboundPacketStream p(buffer, 8192);
244 p << osc::BeginMessage("/fail")
245 << cmd << content
246 << osc::EndMessage;
247
248 instance->send(p.Data(), p.Size(), endpoint);
249 }
250
251 void send_fail_message(nova_endpoint const & endpoint, const char * cmd, const char * content, int id)
252 {
253 char buffer[8192];
254 osc::OutboundPacketStream p(buffer, 8192);
255 p << osc::BeginMessage("/fail")
256 << cmd << content << (osc::int32)id
257 << osc::EndMessage;
258
259 instance->send(p.Data(), p.Size(), endpoint);
260 }
261
262
240263 template <typename Functor>
241264 struct fn_system_callback:
242265 public system_callback
329352 }
330353 };
331354
355 void report_failure(nova_endpoint const & endpoint, std::exception const & error, const char * command)
356 {
357 std::cout << error.what() << std::endl;
358 send_fail_message(endpoint, command, error.what());
359 }
360
361 void report_failure(nova_endpoint const & endpoint, std::exception const & error, const char * command, int bufnum)
362 {
363 std::cout << error.what() << std::endl;
364 send_fail_message(endpoint, command, error.what(), bufnum);
365 }
366
332367 } /* namespace */
333368
334369 namespace detail {
339374 instance->send_notification(msg.data(), msg.size());
340375 }
341376
342 void sc_notify_observers::notify(const char * address_pattern, const server_node * node)
377 const char * sc_notify_observers::error_string(error_code error)
378 {
379 switch (error) {
380 case no_error:
381 return "";
382
383 case already_registered:
384 return "notify: already registered";
385
386 case not_registered:
387 return "notify: not registered";
388
389 default:
390 assert(false);
391 }
392 }
393
394 void sc_notify_observers::notify(const char * address_pattern, const server_node * node) const
343395 {
344396 char buffer[128]; // 128 byte should be enough
345397 osc::OutboundPacketStream p(buffer, 128);
766818 int enable = first_arg_as_int(message);
767819
768820 cmd_dispatcher<realtime>::fire_system_callback( [=]() {
769 if (enable)
770 instance->add_observer(endpoint);
771 else
772 instance->remove_observer(endpoint);
821 if (enable) {
822 auto error_code = instance->add_observer(endpoint);
823 if (error_code)
824 send_fail_message(endpoint, "/notify", sc_notify_observers::error_string(error_code));
825 } else {
826 auto error_code = instance->remove_observer(endpoint);
827 if (error_code)
828 send_fail_message(endpoint, "/notify", sc_notify_observers::error_string(error_code));
829 }
830
773831 send_done_message(endpoint, "/notify");
774832 });
775833 }
14541512 osc::int32 node_a, node_b;
14551513 args >> node_a >> node_b;
14561514
1457 server_node * a = find_node(node_a);
1458 if (!a) continue;
1459
1460 server_node * b = find_node(node_b);
1461 if (!b) continue;
1462
1463 abstract_group::move_before_or_after<Relation>(a, b);
1464 }
1515 server_node * node = find_node(node_a);
1516 if (!node) continue;
1517
1518 server_node * target_node = find_node(node_b);
1519 if (!target_node) continue;
1520
1521 abstract_group::move_before_or_after<Relation>(node, target_node);
1522 instance->notification_node_moved(node);
1523 }
1524
1525 instance->update_dsp_queue();
14651526 }
14661527
14671528
14821543 if (!target_group) continue;
14831544
14841545 abstract_group::move_to_head_or_tail<Position>(node, target_group);
1485 }
1546 instance->notification_node_moved(node);
1547 }
1548 instance->update_dsp_queue();
14861549 }
14871550
14881551
15231586 return;
15241587
15251588 abstract_group * target_parent;
1526 if (action == before ||
1527 action == after)
1589 if (action == before || action == after)
15281590 target_parent = target->get_parent();
15291591 else {
15301592 if (target->is_synth())
15321594 target_parent = static_cast<abstract_group*>(target);
15331595 }
15341596
1535 while (!args.Eos())
1536 {
1597 while (!args.Eos()) {
15371598 osc::int32 node_id;
15381599 args >> node_id;
15391600
15501611 target_parent->add_child(node, make_pair(target, node_position(action)));
15511612 else
15521613 target_parent->add_child(node, node_position(action));
1614
1615 instance->notification_node_moved(node);
15531616 }
15541617 instance->update_dsp_queue();
15551618 }
18261889 void b_alloc_3_nrt(uint32_t index, sample * free_buf, nova_endpoint const & endpoint);
18271890
18281891 template <bool realtime>
1829 void b_alloc_1_nrt(uint32_t index, uint32_t frames, uint32_t channels, completion_message & msg, nova_endpoint const & endpoint)
1830 {
1831 sc_ugen_factory::buffer_lock_t buffer_lock(sc_factory->buffer_guard(index));
1832 sample * free_buf = sc_factory->get_nrt_mirror_buffer(index);
1833 sc_factory->allocate_buffer(index, frames, channels);
1834 cmd_dispatcher<realtime>::fire_rt_callback(std::bind(b_alloc_2_rt<realtime>, index, msg, free_buf, endpoint));
1892 void b_alloc_1_nrt(uint32_t bufnum, uint32_t frames, uint32_t channels, completion_message & msg, nova_endpoint const & endpoint)
1893 {
1894 sc_ugen_factory::buffer_lock_t buffer_lock(sc_factory->buffer_guard(bufnum));
1895 try {
1896 sample * free_buf = sc_factory->get_nrt_mirror_buffer(bufnum);
1897 sc_factory->allocate_buffer(bufnum, frames, channels);
1898 cmd_dispatcher<realtime>::fire_rt_callback(std::bind(b_alloc_2_rt<realtime>, bufnum, msg, free_buf, endpoint));
1899 } catch (std::exception const & error) {
1900 report_failure(endpoint, error, "/b_alloc", bufnum);
1901 }
18351902 }
18361903
18371904 template <bool realtime>
19171984 void b_allocRead_3_nrt(uint32_t index, sample * free_buf, nova_endpoint const & endpoint);
19181985
19191986 template <bool realtime>
1920 void b_allocRead_1_nrt(uint32_t index, movable_string & filename, uint32_t start, uint32_t frames, completion_message & msg,
1987 void b_allocRead_1_nrt(uint32_t bufnum, movable_string & filename, uint32_t start, uint32_t frames, completion_message & msg,
19211988 nova_endpoint const & endpoint)
19221989 {
1923 sc_ugen_factory::buffer_lock_t buffer_lock(sc_factory->buffer_guard(index));
1924 sample * free_buf = sc_factory->get_nrt_mirror_buffer(index);
1925 int error = sc_factory->buffer_read_alloc(index, filename.c_str(), start, frames);
1926 if (!error)
1927 cmd_dispatcher<realtime>::fire_rt_callback(std::bind(b_allocRead_2_rt<realtime>, index, msg, free_buf, endpoint));
1928 else
1929 /* post nice error message */;
1990 sc_ugen_factory::buffer_lock_t buffer_lock(sc_factory->buffer_guard(bufnum));
1991 sample * free_buf = sc_factory->get_nrt_mirror_buffer(bufnum);
1992 try {
1993 sc_factory->buffer_read_alloc(bufnum, filename.c_str(), start, frames);
1994 cmd_dispatcher<realtime>::fire_rt_callback(std::bind(b_allocRead_2_rt<realtime>, bufnum, msg, free_buf, endpoint));
1995 } catch (std::exception const & error) {
1996 report_failure(endpoint, error, "/b_allocRead", bufnum);
1997 }
19301998 }
19311999
19322000 template <bool realtime>
19712039 }
19722040
19732041 template <bool realtime>
1974 void b_allocReadChannel_2_rt(uint32_t index, completion_message & msg, sample * free_buf,
2042 void b_allocReadChannel_2_rt(uint32_t bufnum, completion_message & msg, sample * free_buf,
19752043 nova_endpoint const & endpoint);
1976 void b_allocReadChannel_3_nrt(uint32_t index, sample * free_buf, nova_endpoint const & endpoint);
1977
1978 template <bool realtime>
1979 void b_allocReadChannel_1_nrt(uint32_t index, movable_string const & filename, uint32_t start, uint32_t frames,
2044 void b_allocReadChannel_3_nrt(uint32_t bufnum, sample * free_buf, nova_endpoint const & endpoint);
2045
2046 template <bool realtime>
2047 void b_allocReadChannel_1_nrt(uint32_t bufnum, movable_string const & filename, uint32_t start, uint32_t frames,
19802048 movable_array<uint32_t> const & channels, completion_message & msg,
19812049 nova_endpoint const & endpoint)
19822050 {
1983 sc_ugen_factory::buffer_lock_t buffer_lock(sc_factory->buffer_guard(index));
1984 sample * free_buf = sc_factory->get_nrt_mirror_buffer(index);
1985 int error = sc_factory->buffer_alloc_read_channels(index, filename.c_str(), start, frames,
1986 channels.size(), channels.data());
1987 if (!error)
2051 sc_ugen_factory::buffer_lock_t buffer_lock(sc_factory->buffer_guard(bufnum));
2052 sample * free_buf = sc_factory->get_nrt_mirror_buffer(bufnum);
2053
2054 try {
2055 sc_factory->buffer_alloc_read_channels(bufnum, filename.c_str(), start, frames, channels.size(), channels.data());
2056
19882057 cmd_dispatcher<realtime>::fire_rt_callback(std::bind(b_allocReadChannel_2_rt<realtime>,
1989 index, msg, free_buf, endpoint));
1990 }
1991
1992 template <bool realtime>
1993 void b_allocReadChannel_2_rt(uint32_t index, completion_message & msg, sample * free_buf,
2058 bufnum, msg, free_buf, endpoint));
2059 } catch (std::exception const & error) {
2060 report_failure(endpoint, error, "/b_allocReadChannel", bufnum);
2061 }
2062 }
2063
2064 template <bool realtime>
2065 void b_allocReadChannel_2_rt(uint32_t bufnum, completion_message & msg, sample * free_buf,
19942066 nova_endpoint const & endpoint)
19952067 {
1996 sc_factory->buffer_sync(index);
2068 sc_factory->buffer_sync(bufnum);
19972069 msg.handle(endpoint);
19982070 cmd_dispatcher<realtime>::fire_system_callback(std::bind(b_allocReadChannel_3_nrt,
1999 index, free_buf, endpoint));
2000 }
2001
2002 void b_allocReadChannel_3_nrt(uint32_t index, sample * free_buf, nova_endpoint const & endpoint)
2071 bufnum, free_buf, endpoint));
2072 }
2073
2074 void b_allocReadChannel_3_nrt(uint32_t bufnum, sample * free_buf, nova_endpoint const & endpoint)
20032075 {
20042076 free_aligned(free_buf);
2005 send_done_message(endpoint, "/b_allocReadChannel", index);
2077 send_done_message(endpoint, "/b_allocReadChannel", bufnum);
20062078 }
20072079
20082080
20112083 {
20122084 osc::ReceivedMessageArgumentIterator arg = msg.ArgumentsBegin();
20132085
2014 osc::int32 index = arg->AsInt32(); arg++;
2086 osc::int32 bufnum = arg->AsInt32(); arg++;
20152087 const char * filename = arg->AsString(); arg++;
20162088
20172089 osc::int32 start = arg->AsInt32(); arg++;
20222094 size_t channel_count = 0;
20232095 sized_array<uint, rt_pool_allocator<uint> > channels(channel_args);
20242096
2025 for (uint i = 0; i != channel_args - 1; ++i) // sclang formats the last completion message as int, so we skip the last element
2026 {
2097 // sclang formats the last completion message as int, so we skip the last element
2098 for (uint i = 0; i != channel_args - 1; ++i) {
20272099 if (arg->IsInt32()) {
20282100 channels[i] = arg->AsInt32Unchecked(); arg++;
20292101 ++channel_count;
20372109 movable_string fname(filename);
20382110
20392111 cmd_dispatcher<realtime>::fire_system_callback(std::bind(b_allocReadChannel_1_nrt<realtime>,
2040 index, fname, start, frames, channel_mapping,
2112 bufnum, fname, start, frames, channel_mapping,
20412113 message, endpoint));
20422114 }
20432115
20442116 const char * b_write = "/b_write";
20452117
20462118 template <bool realtime>
2047 void b_write_nrt_1(uint32_t index, movable_string const & filename, movable_string const & header_format,
2119 void b_write_nrt_1(uint32_t bufnum, movable_string const & filename, movable_string const & header_format,
20482120 movable_string const & sample_format, uint32_t start, uint32_t frames, bool leave_open,
20492121 completion_message & msg, nova_endpoint const & endpoint)
20502122 {
2051 sc_ugen_factory::buffer_lock_t buffer_lock(sc_factory->buffer_guard(index));
2052 sc_factory->buffer_write(index, filename.c_str(), header_format.c_str(), sample_format.c_str(), start, frames, leave_open);
2053 msg.trigger_async(endpoint);
2054 cmd_dispatcher<realtime>::fire_done_message(endpoint, b_write, index);
2123 sc_ugen_factory::buffer_lock_t buffer_lock(sc_factory->buffer_guard(bufnum));
2124 try {
2125 sc_factory->buffer_write(bufnum, filename.c_str(), header_format.c_str(), sample_format.c_str(), start, frames, leave_open);
2126 msg.trigger_async(endpoint);
2127 cmd_dispatcher<realtime>::fire_done_message(endpoint, b_write, bufnum);
2128 } catch (std::exception const & error) {
2129 report_failure(endpoint, error, b_write, bufnum);
2130 }
20552131 }
20562132
20572133 void fire_b_write_exception(void)
20662142 osc::ReceivedMessageArgumentIterator end = msg.ArgumentsEnd();
20672143
20682144 /* required args */
2069 osc::int32 index = arg->AsInt32(); arg++;
2145 osc::int32 bufnum = arg->AsInt32(); arg++;
20702146 const char * filename = arg->AsString(); arg++;
20712147 const char * header_format = arg->AsString(); arg++;
20722148 const char * sample_format = arg->AsString(); arg++;
20822158 if (!arg->IsInt32())
20832159 fire_b_write_exception();
20842160 frames = arg->AsInt32Unchecked(); arg++;
2085 }
2086 else
2161 } else
20872162 goto fire_callback;
20882163
20892164 if (arg != end) {
20902165 if (!arg->IsInt32())
20912166 fire_b_write_exception();
20922167 start = arg->AsInt32Unchecked(); arg++;
2093 }
2094 else
2168 } else
20952169 goto fire_callback;
20962170
20972171 if (arg != end) {
20982172 if (!arg->IsInt32())
20992173 fire_b_write_exception();
21002174 leave_open = arg->AsInt32Unchecked(); arg++;
2101 }
2102 else
2175 } else
21032176 goto fire_callback;
21042177
21052178 if (arg != end)
21102183 movable_string header_f(header_format);
21112184 movable_string sample_f(sample_format);
21122185
2113 cmd_dispatcher<realtime>::fire_system_callback(std::bind(b_write_nrt_1<realtime>, index, fname, header_f, sample_f,
2114 start, frames, bool(leave_open), message, endpoint));
2115 }
2116
2117 template <bool realtime>
2118 void b_read_rt_2(uint32_t index, completion_message & msg, nova_endpoint const & endpoint);
2119
2120 template <bool realtime>
2121 void b_read_nrt_1(uint32_t index, movable_string & filename, uint32_t start_file, uint32_t frames,
2186 cmd_dispatcher<realtime>::fire_system_callback(std::bind(b_write_nrt_1<realtime>, bufnum, fname, header_f, sample_f,
2187 start, frames, bool(leave_open), message, endpoint));
2188 }
2189
2190
2191 const char * b_read = "/b_read";
2192
2193 template <bool realtime>
2194 void b_read_rt_2(uint32_t bufnum, completion_message & msg, nova_endpoint const & endpoint);
2195
2196 template <bool realtime>
2197 void b_read_nrt_1(uint32_t bufnum, movable_string & filename, uint32_t start_file, uint32_t frames,
21222198 uint32_t start_buffer, bool leave_open, completion_message & msg, nova_endpoint const & endpoint)
21232199 {
2124 sc_ugen_factory::buffer_lock_t buffer_lock(sc_factory->buffer_guard(index));
2125 sc_factory->buffer_read(index, filename.c_str(), start_file, frames, start_buffer, leave_open);
2126 cmd_dispatcher<realtime>::fire_rt_callback(std::bind(b_read_rt_2<realtime>, index, msg, endpoint));
2127 }
2128
2129 const char * b_read = "/b_read";
2200 sc_ugen_factory::buffer_lock_t buffer_lock(sc_factory->buffer_guard(bufnum));
2201
2202 try {
2203 sc_factory->buffer_read(bufnum, filename.c_str(), start_file, frames, start_buffer, leave_open);
2204 cmd_dispatcher<realtime>::fire_rt_callback(std::bind(b_read_rt_2<realtime>, bufnum, msg, endpoint));
2205 } catch (std::exception const & error) {
2206 report_failure(endpoint, error, b_read, bufnum);
2207 }
2208 }
2209
21302210 template <bool realtime>
21312211 void b_read_rt_2(uint32_t index, completion_message & msg, nova_endpoint const & endpoint)
21322212 {
21472227 osc::ReceivedMessageArgumentIterator end = msg.ArgumentsEnd();
21482228
21492229 /* required args */
2150 osc::int32 index = arg->AsInt32(); arg++;
2230 osc::int32 bufnum = arg->AsInt32(); arg++;
21512231 const char * filename = arg->AsString(); arg++;
21522232
21532233 /* optional args */
21622242 if (!arg->IsInt32())
21632243 fire_b_read_exception();
21642244 start_file = arg->AsInt32Unchecked(); arg++;
2165 }
2166 else
2245 } else
21672246 goto fire_callback;
21682247
21692248 if (arg != end) {
21702249 if (!arg->IsInt32())
21712250 fire_b_read_exception();
21722251 frames = arg->AsInt32Unchecked(); arg++;
2173 }
2174 else
2252 } else
21752253 goto fire_callback;
21762254
21772255 if (arg != end) {
21782256 if (!arg->IsInt32())
21792257 fire_b_read_exception();
21802258 start_buffer = arg->AsInt32Unchecked(); arg++;
2181 }
2182 else
2259 } else
21832260 goto fire_callback;
21842261
21852262 if (arg != end) {
21862263 if (!arg->IsInt32())
21872264 fire_b_read_exception();
21882265 leave_open = arg->AsInt32Unchecked(); arg++;
2189 }
2190 else
2266 } else
21912267 goto fire_callback;
21922268
21932269 if (arg != end)
21962272 fire_callback:
21972273 movable_string fname(filename);
21982274
2199 cmd_dispatcher<realtime>::fire_system_callback(std::bind(b_read_nrt_1<realtime>, index, fname,
2200 start_file, frames, start_buffer,
2201 bool(leave_open), message, endpoint));
2202 }
2203
2275 cmd_dispatcher<realtime>::fire_system_callback(std::bind(b_read_nrt_1<realtime>, bufnum, fname,
2276 start_file, frames, start_buffer,
2277 bool(leave_open), message, endpoint));
2278 }
2279
2280 const char * b_readChannel = "/b_readChannel";
22042281
22052282 template <bool realtime>
22062283 void b_readChannel_rt_2(uint32_t index, completion_message & msg, nova_endpoint const & endpoint);
22072284
22082285 template <bool realtime>
2209 void b_readChannel_nrt_1(uint32_t index, movable_string & filename, uint32_t start_file, uint32_t frames,
2286 void b_readChannel_nrt_1(uint32_t bufnum, movable_string & filename, uint32_t start_file, uint32_t frames,
22102287 uint32_t start_buffer, bool leave_open, movable_array<uint32_t> & channel_map,
22112288 completion_message & msg, nova_endpoint const & endpoint)
22122289 {
2213 sc_factory->buffer_read_channel(index, filename.c_str(), start_file, frames, start_buffer, leave_open,
2214 channel_map.size(), channel_map.data());
2215 cmd_dispatcher<realtime>::fire_system_callback(std::bind(b_readChannel_rt_2<realtime>, index, msg, endpoint));
2216 }
2217
2218 const char * b_readChannel = "/b_readChannel";
2290 try {
2291 sc_factory->buffer_read_channel(bufnum, filename.c_str(), start_file, frames, start_buffer, leave_open,
2292 channel_map.size(), channel_map.data());
2293 cmd_dispatcher<realtime>::fire_system_callback(std::bind(b_readChannel_rt_2<realtime>, bufnum, msg, endpoint));
2294 } catch (std::exception const & error) {
2295 report_failure(endpoint, error, b_readChannel, bufnum);
2296 }
2297 }
2298
22192299 template <bool realtime>
22202300 void b_readChannel_rt_2(uint32_t index, completion_message & msg, nova_endpoint const & endpoint)
22212301 {
24312511 }
24322512
24332513 template <bool realtime>
2434 void b_close_rt_2(completion_message & msg, nova_endpoint const & endpoint);
2514 void b_close_rt_2(uint32_t index, completion_message & msg, nova_endpoint const & endpoint);
24352515
24362516 template <bool realtime>
24372517 void b_close_nrt_1(uint32_t index, completion_message & msg, nova_endpoint const & endpoint)
24382518 {
24392519 sc_factory->buffer_close(index);
2440 cmd_dispatcher<realtime>::fire_rt_callback(std::bind(b_close_rt_2<realtime>, msg, endpoint));
2441 }
2442
2443 template <bool realtime>
2444 void b_close_rt_2(completion_message & msg, nova_endpoint const & endpoint)
2445 {
2520 cmd_dispatcher<realtime>::fire_rt_callback(std::bind(b_close_rt_2<realtime>, index, msg, endpoint));
2521 }
2522
2523 template <bool realtime>
2524 void b_close_rt_2(uint32_t index, completion_message & msg, nova_endpoint const & endpoint)
2525 {
2526 msg.handle(endpoint);
2527 cmd_dispatcher<realtime>::fire_done_message(endpoint, "/b_close", index);
24462528 }
24472529
24482530 template <bool realtime>
5858 typedef std::vector<nova_endpoint> observer_vector;
5959
6060 public:
61 typedef enum {
62 no_error = 0,
63 already_registered,
64 not_registered
65 } error_code;
66
6167 sc_notify_observers(boost::asio::io_service & io_service):
6268 udp_socket(io_service), tcp_socket(io_service)
6369 {}
6470
65 void add_observer(nova_endpoint const & ep)
66 {
71 error_code add_observer(nova_endpoint const & ep)
72 {
73 observer_vector::iterator it = std::find(observers.begin(), observers.end(), ep);
74 if (it != observers.end())
75 return already_registered;
76
6777 observers.push_back(ep);
68 }
69
70 void remove_observer(nova_endpoint const & ep)
71 {
72 observer_vector::iterator it = std::find(observers.begin(),
73 observers.end(), ep);
74 assert (it != observers.end());
78 return no_error;
79 }
80
81 error_code remove_observer(nova_endpoint const & ep)
82 {
83 observer_vector::iterator it = std::find(observers.begin(), observers.end(), ep);
84
85 if (it == observers.end())
86 return not_registered;
7587
7688 observers.erase(it);
77 }
78
89 return no_error;
90 }
7991
8092 /* @{ */
8193 /** notifications, should be called from the real-time thread */
145157 }
146158 /* @} */
147159
148 private:
149 void notify(const char * address_pattern, const server_node * node);
160 static const char * error_string(error_code );
161
162 private:
163 void notify(const char * address_pattern, const server_node * node) const;
150164 void send_notification(const char * data, size_t length, nova_endpoint const & endpoint);
151165
152166 observer_vector observers;
5353
5454 namespace {
5555
56 spin_lock rt_pool_guard;
57
5658 inline Node * as_Node(server_node * node)
5759 {
5860 if (node == NULL)
320322 } /* namespace */
321323 } /* namespace nova */
322324
323 extern "C"
324 {
325 extern "C" {
325326
326327 bool define_unit(const char *inUnitClassName, size_t inAllocSize,
327328 UnitCtorFunc inCtor, UnitDtorFunc inDtor, uint32 inFlags)
353354 return nova::sc_factory->register_ugen_command_function(unitClassName, cmdName, inFunc);
354355 }
355356
356
357357 bool define_plugincmd(const char * name, PlugInCmdFunc func, void * user_data)
358358 {
359359 return nova::sc_factory->register_cmd_plugin(name, func, user_data);
361361
362362 void * rt_alloc(World * dummy, size_t size)
363363 {
364 nova::spin_lock::scoped_lock lock(nova::rt_pool_guard);
364365 if (size)
365366 return nova::rt_pool.malloc(size);
366367 else
369370
370371 void * rt_realloc(World * dummy, void * ptr, size_t size)
371372 {
373 nova::spin_lock::scoped_lock lock(nova::rt_pool_guard);
372374 return nova::rt_pool.realloc(ptr, size);
373375 }
374376
375377 void rt_free(World * dummy, void * ptr)
376378 {
379 nova::spin_lock::scoped_lock lock(nova::rt_pool_guard);
377380 if (ptr)
378381 nova::rt_pool.free(ptr);
379382 }
896899 return buf;
897900 }
898901
899 int sc_plugin_interface::buffer_read_alloc(uint32_t index, const char * filename, uint32_t start, uint32_t frames)
902 void sc_plugin_interface::buffer_read_alloc(uint32_t index, const char * filename, uint32_t start, uint32_t frames)
900903 {
901904 SndfileHandle f(filename);
902 if (!f)
903 return -1; /* file cannot be opened */
905 if (f.rawHandle() == nullptr)
906 throw std::runtime_error(f.strError());
904907
905908 const size_t sf_frames = f.frames();
906909
915918
916919 f.seek(start, SEEK_SET);
917920 f.readf(buf->data, frames);
918 return 0;
919 }
920
921
922 int sc_plugin_interface::buffer_alloc_read_channels(uint32_t index, const char * filename, uint32_t start,
923 uint32_t frames, uint32_t channel_count,
924 const uint32_t * channel_data)
921 }
922
923
924 void sc_plugin_interface::buffer_alloc_read_channels(uint32_t index, const char * filename, uint32_t start,
925 uint32_t frames, uint32_t channel_count,
926 const uint32_t * channel_data)
925927 {
926928 SndfileHandle f(filename);
927 if (!f)
928 return -1; /* file cannot be opened */
929 if (f.rawHandle() == nullptr)
930 throw std::runtime_error(f.strError());
929931
930932 uint32_t sf_channels = uint32_t(f.channels());
931933 const uint32_t * max_chan = std::max_element(channel_data, channel_data + channel_count);
932934 if (*max_chan >= sf_channels)
933 return -2;
935 throw std::runtime_error("Channel out of range");
934936
935937 const size_t sf_frames = f.frames();
936938
945947
946948 f.seek(start, SEEK_SET);
947949 read_channel(f, channel_count, channel_data, frames, buf->data);
948
949 return 0;
950950 }
951951
952952
976976 return 0;
977977 }
978978
979 static int buffer_read_verify(SndfileHandle const & sf, size_t min_length, size_t samplerate)
980 {
981 if (!sf)
982 return -1;
979 static void buffer_read_verify(SndfileHandle & sf, size_t min_length, size_t samplerate, bool check_samplerate)
980 {
981 if (sf.rawHandle() == nullptr)
982 throw std::runtime_error(sf.strError());
983983 if (sf.frames() < min_length)
984 return -2; /* no more frames to read */
985 if (sf.samplerate() != samplerate)
986 return -3; /* sample rate mismatch */
987 return 0;
988 }
989
990 int sc_plugin_interface::buffer_read(uint32_t index, const char * filename, uint32_t start_file, uint32_t frames,
991 uint32_t start_buffer, bool leave_open)
984 throw std::runtime_error("no more frames to read");
985
986 if (check_samplerate && (sf.samplerate() != samplerate))
987 throw std::runtime_error("sample rate mismatch");
988 }
989
990 void sc_plugin_interface::buffer_read(uint32_t index, const char * filename, uint32_t start_file, uint32_t frames,
991 uint32_t start_buffer, bool leave_open)
992992 {
993993 SndBuf * buf = World_GetNRTBuf(&world, index);
994994
995995 if (uint32_t(buf->frames) < start_buffer)
996 return -2; /* buffer already full */
996 throw std::runtime_error("buffer already full");
997997
998998 SndfileHandle sf(filename, SFM_READ);
999 int error = buffer_read_verify(sf, start_file, buf->samplerate);
1000 if (error)
1001 return error;
999 buffer_read_verify(sf, start_file, buf->samplerate, !leave_open);
10021000
10031001 if (sf.channels() != buf->channels)
1004 return -3; /* sample rate or channel count mismatch */
1002 throw std::runtime_error("channel count mismatch");
10051003
10061004 const uint32_t buffer_remain = buf->frames - start_buffer;
10071005 const uint32_t file_remain = sf.frames() - start_file;
10121010
10131011 if (leave_open)
10141012 buf->sndfile = sf.takeOwnership();
1015 return 0;
1016 }
1017
1018 int sc_plugin_interface::buffer_read_channel(uint32_t index, const char * filename, uint32_t start_file, uint32_t frames,
1013 }
1014
1015 void sc_plugin_interface::buffer_read_channel(uint32_t index, const char * filename, uint32_t start_file, uint32_t frames,
10191016 uint32_t start_buffer, bool leave_open, uint32_t channel_count,
10201017 const uint32_t * channel_data)
10211018 {
10221019 SndBuf * buf = World_GetNRTBuf(&world, index);
10231020
10241021 if (channel_count != uint32_t(buf->channels))
1025 return -2; /* channel count mismatch */
1022 throw std::runtime_error("channel count mismatch");
10261023
10271024 if (uint32_t(buf->frames) >= start_buffer)
1028 return -2; /* buffer already full */
1025 throw std::runtime_error("buffer already full");
10291026
10301027 SndfileHandle sf(filename, SFM_READ);
1031 int error = buffer_read_verify(sf, start_file, buf->samplerate);
1032 if (error)
1033 return error;
1028 buffer_read_verify(sf, start_file, buf->samplerate, !leave_open);
10341029
10351030 uint32_t sf_channels = uint32_t(sf.channels());
10361031 const uint32_t * max_chan = std::max_element(channel_data, channel_data + channel_count);
10371032 if (*max_chan >= sf_channels)
1038 return -2;
1033 throw std::runtime_error("channel count mismatch");
1034
10391035 const uint32_t buffer_remain = buf->frames - start_buffer;
10401036 const uint32_t file_remain = sf.frames() - start_file;
10411037
10421038 const uint32_t frames_to_read = std::min(frames, std::min(buffer_remain, file_remain));
10431039
10441040 sf.seek(start_file, SEEK_SET);
1045 read_channel(sf, channel_count, channel_data, frames, buf->data);
1041 read_channel(sf, channel_count, channel_data, frames_to_read, buf->data);
10461042
10471043 if (leave_open)
10481044 buf->sndfile = sf.takeOwnership();
1049 return 0;
10501045 }
10511046
10521047 void sc_plugin_interface::buffer_close(uint32_t index)
10781073 return sc_factory->run_bufgen(&world, cmd_name, buffer_index, &msg);
10791074 }
10801075
1081 void sc_plugin_interface::buffer_sync(uint32_t index)
1076 void sc_plugin_interface::buffer_sync(uint32_t index) noexcept
10821077 {
10831078 sndbuf_copy(world.mSndBufs + index, world.mSndBufsNonRealTimeMirror + index);
10841079 increment_write_updates(index);
5353 void add_done_node(server_node * node)
5454 {
5555 spin_lock::scoped_lock lock(cmd_lock);
56 if (std::find(done_nodes.begin(), done_nodes.end(), node) != done_nodes.end())
57 return;
58
5659 done_nodes.push_back(node);
5760 }
5861
5962 void add_freeDeep_node(abstract_group * node)
6063 {
6164 spin_lock::scoped_lock lock(cmd_lock);
65 if (std::find(freeDeep_nodes.begin(), freeDeep_nodes.end(), node) != freeDeep_nodes.end())
66 return;
6267 freeDeep_nodes.push_back(node);
6368 }
6469
6570 void add_freeAll_node(abstract_group * node)
6671 {
6772 spin_lock::scoped_lock lock(cmd_lock);
73 if (std::find(freeAll_nodes.begin(), freeAll_nodes.end(), node) != freeAll_nodes.end())
74 return;
6875 freeAll_nodes.push_back(node);
6976 }
7077
108115 /* audio buffer handling */
109116 SndBuf* allocate_buffer(uint32_t index, uint32_t frames, uint32_t channels);
110117 int allocate_buffer(SndBuf * buf, uint32_t frames, uint32_t channels, double samplerate);
111 int buffer_read_alloc(uint32_t index, const char * filename, uint32_t start, uint32_t frames);
112 int buffer_alloc_read_channels(uint32_t index, const char * filename, uint32_t start, uint32_t frames, uint32_t channel_count,
113 const uint32_t * channel_data);
114 int buffer_read(uint32_t index, const char * filename, uint32_t start_file, uint32_t frames, uint32_t start_buffer,
115 bool leave_open);
116 int buffer_read_channel(uint32_t index, const char * filename, uint32_t start_file, uint32_t frames, uint32_t start_buffer,
117 bool leave_open, uint32_t channel_count, const uint32_t * channel_data);
118 void buffer_read_alloc(uint32_t index, const char * filename, uint32_t start, uint32_t frames);
119 void buffer_alloc_read_channels(uint32_t index, const char * filename, uint32_t start, uint32_t frames, uint32_t channel_count,
120 const uint32_t * channel_data);
121 void buffer_read(uint32_t index, const char * filename, uint32_t start_file, uint32_t frames, uint32_t start_buffer,
122 bool leave_open);
123 void buffer_read_channel(uint32_t index, const char * filename, uint32_t start_file, uint32_t frames, uint32_t start_buffer,
124 bool leave_open, uint32_t channel_count, const uint32_t * channel_data);
118125
119126 sample * get_nrt_mirror_buffer(uint32_t index)
120127 {
159166
160167 public:
161168 /* copies nrt mirror to rt buffers */
162 void buffer_sync(uint32_t index);
169 void buffer_sync(uint32_t index) noexcept;
163170
164171 /* @{ */
165172 /* control bus handling */
135135 }
136136
137137 connect_jack_ports();
138 instance->start_dsp_threads();
139138 }
140139
141140 #elif defined(PORTAUDIO_BACKEND)
152151 cout << "opened portaudio device name:" << args.hw_name << endl;
153152 instance->prepare_backend();
154153 instance->activate_audio();
155 instance->start_dsp_threads();
156154 }
157155
158156 #else
221219 void load_synthdef_folder(nova_server & server, path const & folder, bool verbose)
222220 {
223221 if (verbose)
224 std::printf("Loading synthdefs from path: %s\n", folder.c_str());
222 std::cout << "Loading synthdefs from path: " << folder.string() << std::endl;
225223
226224 register_synthdefs(server, std::move(sc_read_synthdefs_dir(folder)));
227225 }
1717 #ifndef SERVER_NRT_SYNTHESIS_HPP
1818 #define SERVER_NRT_SYNTHESIS_HPP
1919
20 #include <iostream>
20 #include <cstdio>
2121 #include <fstream>
2222 #include <string>
2323
8585 using namespace std;
8686 array<char, 16384> packet_buffer;
8787
88 cout << "Starting non-rt synthesis" << endl;
88 printf("Starting non-rt synthesis");
8989 backend.activate_audio();
9090
9191 while (!command_stream.eof()) {
9797
9898 time_tag bundle_time = instance->handle_bundle_nrt(packet_buffer.data(), packet_size);
9999
100 cout << "Next OSC bundle " << bundle_time.get_secs() << "." << bundle_time.get_nanoseconds() << endl;
100 size_t seconds = bundle_time.get_secs();
101 size_t nano_seconds = bundle_time.get_nanoseconds();
102 printf("Next OSC bundle: %zu.%09zu\n", seconds, nano_seconds);
101103
102104 while (instance->current_time() < bundle_time) {
103105 if (has_inputs)
107109 }
108110 }
109111 backend.deactivate_audio();
110 cout << "Non-rt synthesis finished" << endl;
112 printf("Non-rt synthesis finished");
111113 }
112114
113115 sndfile_backend<non_rt_functor, float, true> backend;
00 // nova server
1 // Copyright (C) 2008, 2009, 2010 Tim Blechmann
1 // Copyright (C) 2008 - 2012 Tim Blechmann
22 //
33 // This program is free software; you can redistribute it and/or modify
44 // it under the terms of the GNU General Public License as published by
9191
9292 nova_server::~nova_server(void)
9393 {
94 #if defined(JACK_BACKEND)
95 if (audio_is_active())
96 deactivate_audio();
97
98 close_client();
99 #endif
94 #if defined(JACK_BACKEND) || defined(PORTAUDIO_BACKEND)
95 deactivate_audio();
96 #endif
97
10098 scheduler<scheduler_hook, thread_init_functor>::terminate();
10199 io_interpreter.join_thread();
102100 instance = 0;
167165
168166 void nova_server::run_nonrt_synthesis(server_arguments const & args)
169167 {
168 start_dsp_threads();
170169 non_realtime_synthesis_engine engine(args);
171170 engine.run();
172171 }
173173
174174 void run(void)
175175 {
176 start_dsp_threads();
176177 system_interpreter.run();
177178 }
178179
292293
293294 sc_factory->initialize_synths();
294295 scheduler<scheduler_hook, thread_init_functor>::operator()();
296 sc_factory->update_nodegraph();
295297 }
296298
297299 void rebuild_dsp_queue(void);
321323
322324 (*instance)();
323325
324 sc_factory->update_nodegraph();
325
326326 /* wipe all untouched output buffers */
327327 for (int channel = 0; channel != output_channels; ++channel) {
328328 if (sc_factory->world.mAudioBusTouched[channel] != buf_counter)
8686 if (enqueued == length)
8787 break;
8888
89 string += total_enqueued;
90 length -= total_enqueued;
89 string += enqueued;
90 length -= enqueued;
9191 }
9292
9393 return true;
204204 // element access
205205 reference operator[](size_type i)
206206 {
207 assert(i < size());
207208 return data_[i];
208209 }
209210
210211 const_reference operator[](size_type i) const
211212 {
213 assert(i < size());
212214 return data_[i];
213215 }
214216
215217 reference at(size_type i)
216218 {
219 assert(i < size());
217220 return data_[i];
218221 }
219222
220223 const_reference at(size_type i) const
221224 {
225 assert(i < size());
222226 return data_[i];
223227 }
224228