cheatsheet, shortcuts
This commit is contained in:
parent
32a0034e4e
commit
1756fc2e41
|
@ -0,0 +1,82 @@
|
|||
|
||||
|
||||
Jacker Mouse & Keyboard Commands
|
||||
================================
|
||||
|
||||
Global
|
||||
------
|
||||
|
||||
F3: Go to song view.
|
||||
F4: Go to pattern view.
|
||||
|
||||
F5: Play Song from current position.
|
||||
* Play Song from beginning of loop, if enabled.
|
||||
F8: Pause Song.
|
||||
* Jump to beginning of loop, if enabled.
|
||||
** Jump to beginning of song.
|
||||
|
||||
Pattern
|
||||
-------
|
||||
|
||||
-- Navigation --
|
||||
|
||||
Up/Down: Move cursor to previous/next row.
|
||||
Left/Right: Move cursor to previous/next column.
|
||||
Home: Move cursor to first parameter.
|
||||
* Move cursor to first channel.
|
||||
** Move cursor to first row.
|
||||
End: Move cursor to last parameter.
|
||||
* Move cursor to last channel.
|
||||
** Move cursor to last row.
|
||||
Page Up/Down: Move cursor to previous/next bar.
|
||||
|
||||
-- Selection --
|
||||
|
||||
Shift+Up/Down: Expand selection across rows.
|
||||
Shift+Left/Right: Expand selection across columns.
|
||||
Click+Drag: Expand selection across pattern.
|
||||
|
||||
-- Editing --
|
||||
|
||||
0-9,A-F: Set values in value columns.
|
||||
ZSXDCVGBHNJM: Set notes in note columns (Octave +0).
|
||||
Q2W3ER5T6Y7U: Set notes in note columns (Octave +1).
|
||||
I9O0P: Set notes in note columns (Octave +2).
|
||||
. : Wipe value at cursor.
|
||||
Insert: Move all values below cursor down
|
||||
by one row in current channel.
|
||||
Del: Move all values below cursor up
|
||||
by one row in current channel.
|
||||
Alt+Insert: Move all values below cursor down
|
||||
by one row in all channels.
|
||||
Alt+Del: Move all values below cursor up
|
||||
by one row in all channels.
|
||||
|
||||
Ctrl+X: Delete events in selection.
|
||||
|
||||
|
||||
Song
|
||||
----
|
||||
|
||||
-- Measure --
|
||||
|
||||
Click: Set song position.
|
||||
Ctrl+Click: Set beginning of loop.
|
||||
Alt+Click: Set end of loop.
|
||||
Click+Drag: Move loop beginning/end handles.
|
||||
|
||||
-- Selection --
|
||||
|
||||
Ctrl+Click: Add pattern to selection,
|
||||
remove pattern from selection.
|
||||
Click+Drag: Box select.
|
||||
|
||||
-- Editing --
|
||||
|
||||
Click+Drag: Move selected pattern(s) at cursor
|
||||
Resize pattern(s) at cursor.
|
||||
Shift+Click+Drag: Move copy of pattern(s) at cursor.
|
||||
Ctrl+Shift
|
||||
+Click+Drag: Move pattern link(s) at cursor.
|
||||
Double-Click: Edit pattern at cursor.
|
||||
Delete: Remove selected tracks.
|
20
jacker.glade
20
jacker.glade
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0"?>
|
||||
<interface>
|
||||
<requires lib="gtk+" version="2.16"/>
|
||||
<!-- interface-naming-policy project-wide -->
|
||||
<!-- interface-naming-policy project-wide -->
|
||||
<object class="GtkWindow" id="main">
|
||||
<property name="title" translatable="yes">Jacker</property>
|
||||
<property name="window_position">center</property>
|
||||
|
@ -128,20 +128,18 @@
|
|||
<property name="visible">True</property>
|
||||
<child>
|
||||
<object class="GtkImageMenuItem" id="imagemenuitem11">
|
||||
<property name="label" translatable="yes">Song</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="use_action_appearance">True</property>
|
||||
<property name="related_action">show_tracks_action</property>
|
||||
<property name="image">image2</property>
|
||||
<property name="use_stock">False</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkImageMenuItem" id="imagemenuitem12">
|
||||
<property name="label" translatable="yes">Pattern</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="use_action_appearance">True</property>
|
||||
<property name="related_action">show_pattern_action</property>
|
||||
<property name="image">image1</property>
|
||||
<property name="use_stock">False</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
|
@ -691,12 +689,4 @@
|
|||
<property name="label">Tracks</property>
|
||||
<property name="short_label">Tracks</property>
|
||||
</object>
|
||||
<object class="GtkImage" id="image1">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-missing-image</property>
|
||||
</object>
|
||||
<object class="GtkImage" id="image2">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-missing-image</property>
|
||||
</object>
|
||||
</interface>
|
||||
|
|
9
main.cpp
9
main.cpp
|
@ -111,7 +111,11 @@ public:
|
|||
init_player();
|
||||
if (!player)
|
||||
return;
|
||||
player->play();
|
||||
if (!player->is_playing()) {
|
||||
player->play();
|
||||
} else if (model.enable_loop) {
|
||||
player->seek(model.loop.get_begin());
|
||||
}
|
||||
}
|
||||
|
||||
void on_stop_action() {
|
||||
|
@ -119,6 +123,9 @@ public:
|
|||
return;
|
||||
if (player->is_playing()) {
|
||||
player->stop();
|
||||
} else if (model.enable_loop &&
|
||||
(player->get_position() > model.loop.get_begin())) {
|
||||
player->seek(model.loop.get_begin());
|
||||
} else {
|
||||
player->seek(0);
|
||||
}
|
||||
|
|
|
@ -121,7 +121,7 @@ bool MeasureView::on_expose_event(GdkEventExpose* event) {
|
|||
}
|
||||
|
||||
// loop
|
||||
if (/*(orientation == OrientationHorizontal) &&*/ model->enable_loop) {
|
||||
if ((orientation == OrientationHorizontal) && model->enable_loop) {
|
||||
int lc1 = int(((model->loop.get_begin()-value)*scale)+0.5);
|
||||
int lc2 = int(((model->loop.get_end()-value)*scale)+0.5);
|
||||
|
||||
|
|
|
@ -210,7 +210,7 @@ public:
|
|||
const Glib::RefPtr<Gtk::Builder>& builder);
|
||||
|
||||
void set_model(class Model &model);
|
||||
void set_pattern(class Pattern *pattern);
|
||||
void set_song_event(Song::iterator event);
|
||||
Pattern *get_pattern() const;
|
||||
|
||||
virtual void on_realize();
|
||||
|
|
Loading…
Reference in New Issue