1
Fork 0

cheatsheet, shortcuts

This commit is contained in:
Leonard Ritter 2010-02-11 10:00:01 +01:00
parent 32a0034e4e
commit 1756fc2e41
5 changed files with 97 additions and 18 deletions

82
cheatsheet.txt Normal file
View File

@ -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.

View File

@ -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>

View File

@ -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);
}

View File

@ -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);

View File

@ -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();