Compare commits

...

3 Commits

Author SHA1 Message Date
e1f566f0c8 Released 0.3.1 2020-01-12 12:23:14 +00:00
9fa892a6fd Added missing IDs in xml files 2020-01-12 12:22:58 +00:00
1572e163ef Added notes panel 2020-01-12 10:38:16 +00:00
4 changed files with 103 additions and 22 deletions

View File

@@ -1 +1 @@
version=0.3.0 version=0.3.1

View File

@@ -100,6 +100,9 @@ public class AudiobookRecorder extends JFrame {
JPanel sampleControl; JPanel sampleControl;
public Waveform sampleWaveform; public Waveform sampleWaveform;
JScrollBar sampleScroll; JScrollBar sampleScroll;
JSplitPane mainSplit;
JTextArea notesArea;
JScrollPane notesScroll;
JSpinner postSentenceGap; JSpinner postSentenceGap;
JSpinner gainPercent; JSpinner gainPercent;
@@ -621,29 +624,14 @@ public class AudiobookRecorder extends JFrame {
buildToolbar(centralPanel); buildToolbar(centralPanel);
centralPanel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("F"), "startRecordShort");
centralPanel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("released F"), "stopRecord");
centralPanel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("R"), "startRecord");
centralPanel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("released R"), "stopRecord");
centralPanel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("T"), "startRecordNewPara");
centralPanel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("released T"), "stopRecord");
centralPanel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("Y"), "startRecordNewSection");
centralPanel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("released Y"), "stopRecord");
centralPanel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("released D"), "deleteLast");
centralPanel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("SPACE"), "startStopPlayback");
centralPanel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, InputEvent.SHIFT_DOWN_MASK), "startPlaybackFrom");
centralPanel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("E"), "startRerecord");
centralPanel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("released E"), "stopRecord");
centralPanel.getActionMap().put("startRecord", new AbstractAction() { centralPanel.getActionMap().put("startRecord", new AbstractAction() {
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
if (!getLock()) return; if (!getLock()) return;
if (getFocusOwner() == notesArea) {
freeLock();
return;
}
if (bookTree.isEditing()) { if (bookTree.isEditing()) {
freeLock(); freeLock();
return; return;
@@ -659,6 +647,10 @@ public class AudiobookRecorder extends JFrame {
centralPanel.getActionMap().put("startRecordShort", new AbstractAction() { centralPanel.getActionMap().put("startRecordShort", new AbstractAction() {
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
if (!getLock()) return; if (!getLock()) return;
if (getFocusOwner() == notesArea) {
freeLock();
return;
}
if (bookTree.isEditing()) { if (bookTree.isEditing()) {
freeLock(); freeLock();
return; return;
@@ -674,6 +666,10 @@ public class AudiobookRecorder extends JFrame {
centralPanel.getActionMap().put("startRecordNewPara", new AbstractAction() { centralPanel.getActionMap().put("startRecordNewPara", new AbstractAction() {
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
if (!getLock()) return; if (!getLock()) return;
if (getFocusOwner() == notesArea) {
freeLock();
return;
}
if (bookTree.isEditing()) { if (bookTree.isEditing()) {
freeLock(); freeLock();
return; return;
@@ -689,6 +685,10 @@ public class AudiobookRecorder extends JFrame {
centralPanel.getActionMap().put("startRecordNewSection", new AbstractAction() { centralPanel.getActionMap().put("startRecordNewSection", new AbstractAction() {
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
if (!getLock()) return; if (!getLock()) return;
if (getFocusOwner() == notesArea) {
freeLock();
return;
}
if (bookTree.isEditing()) { if (bookTree.isEditing()) {
freeLock(); freeLock();
return; return;
@@ -704,6 +704,10 @@ public class AudiobookRecorder extends JFrame {
centralPanel.getActionMap().put("startRerecord", new AbstractAction() { centralPanel.getActionMap().put("startRerecord", new AbstractAction() {
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
if (!getLock()) return; if (!getLock()) return;
if (getFocusOwner() == notesArea) {
freeLock();
return;
}
if (bookTree.isEditing()) { if (bookTree.isEditing()) {
freeLock(); freeLock();
return; return;
@@ -718,6 +722,9 @@ public class AudiobookRecorder extends JFrame {
}); });
centralPanel.getActionMap().put("stopRecord", new AbstractAction() { centralPanel.getActionMap().put("stopRecord", new AbstractAction() {
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
if (getFocusOwner() == notesArea) {
return;
}
if (bookTree.isEditing()) return; if (bookTree.isEditing()) return;
stopLock(); stopLock();
stopRecording(); stopRecording();
@@ -726,6 +733,9 @@ public class AudiobookRecorder extends JFrame {
}); });
centralPanel.getActionMap().put("deleteLast", new AbstractAction() { centralPanel.getActionMap().put("deleteLast", new AbstractAction() {
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
if (getFocusOwner() == notesArea) {
return;
}
if (bookTree.isEditing()) return; if (bookTree.isEditing()) return;
deleteLastRecording(); deleteLastRecording();
} }
@@ -733,6 +743,9 @@ public class AudiobookRecorder extends JFrame {
centralPanel.getActionMap().put("startStopPlayback", new AbstractAction() { centralPanel.getActionMap().put("startStopPlayback", new AbstractAction() {
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
if (getFocusOwner() == notesArea) {
return;
}
if (bookTree.isEditing()) return; if (bookTree.isEditing()) return;
if (playing == null) { if (playing == null) {
playSelectedSentence(); playSelectedSentence();
@@ -744,6 +757,9 @@ public class AudiobookRecorder extends JFrame {
centralPanel.getActionMap().put("startPlaybackFrom", new AbstractAction() { centralPanel.getActionMap().put("startPlaybackFrom", new AbstractAction() {
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
if (getFocusOwner() == notesArea) {
return;
}
if (bookTree.isEditing()) return; if (bookTree.isEditing()) return;
if (playing == null) { if (playing == null) {
playFromSelectedSentence(); playFromSelectedSentence();
@@ -752,14 +768,23 @@ public class AudiobookRecorder extends JFrame {
}); });
mainScroll = new JScrollPane(); mainScroll = new JScrollPane();
centralPanel.add(mainScroll, BorderLayout.CENTER);
notesArea = new JTextArea();
notesScroll = new JScrollPane();
notesScroll.setViewportView(notesArea);
mainSplit = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, mainScroll, notesScroll);
centralPanel.add(mainSplit, BorderLayout.CENTER);
setTitle("AudioBook Recorder"); setTitle("AudioBook Recorder");
setIconImage(Icons.appIcon.getImage()); setIconImage(Icons.appIcon.getImage());
bindKeys(centralPanel);
pack(); pack();
mainSplit.setDividerLocation(0.8d);
setVisible(true); setVisible(true);
String lastBook = Options.get("path.last-book"); String lastBook = Options.get("path.last-book");
@@ -792,6 +817,50 @@ public class AudiobookRecorder extends JFrame {
} }
void bindKeys(JComponent component) {
component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("F"), "startRecordShort");
component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("released F"), "stopRecord");
component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("R"), "startRecord");
component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("released R"), "stopRecord");
component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("T"), "startRecordNewPara");
component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("released T"), "stopRecord");
component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("Y"), "startRecordNewSection");
component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("released Y"), "stopRecord");
component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("released D"), "deleteLast");
component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("SPACE"), "startStopPlayback");
component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, InputEvent.SHIFT_DOWN_MASK), "startPlaybackFrom");
component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("E"), "startRerecord");
component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("released E"), "stopRecord");
}
void unbindKeys(JComponent component) {
component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("F"), "ignore");
component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("released F"), "ignore");
component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("R"), "ignore");
component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("released R"), "ignore");
component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("T"), "ignore");
component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("released T"), "ignore");
component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("Y"), "ignore");
component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("released Y"), "ignore");
component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("released D"), "ignore");
component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("SPACE"), "ignore");
component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, InputEvent.SHIFT_DOWN_MASK), "ignore");
component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("E"), "ignore");
component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("released E"), "ignore");
}
public static void main(String args[]) { public static void main(String args[]) {
try { try {
config.load(AudiobookRecorder.class.getResourceAsStream("config.txt")); config.load(AudiobookRecorder.class.getResourceAsStream("config.txt"));
@@ -951,7 +1020,6 @@ public class AudiobookRecorder extends JFrame {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
void treePopup(MouseEvent e) { void treePopup(MouseEvent e) {
int selRow = bookTree.getRowForLocation(e.getX(), e.getY()); int selRow = bookTree.getRowForLocation(e.getX(), e.getY());
TreePath selPath = bookTree.getPathForLocation(e.getX(), e.getY()); TreePath selPath = bookTree.getPathForLocation(e.getX(), e.getY());
if (selRow != -1) { if (selRow != -1) {
@@ -3585,4 +3653,12 @@ public class AudiobookRecorder extends JFrame {
System.err.println("Effects Enabled: " + b); System.err.println("Effects Enabled: " + b);
} }
public void setNotes(String text) {
notesArea.setText(text);
}
public String getNotes() {
return notesArea.getText();
}
} }

View File

@@ -64,6 +64,8 @@ public class Book extends DefaultMutableTreeNode {
comment = getTextNode(root, "comment"); comment = getTextNode(root, "comment");
ACX = getTextNode(root, "acx"); ACX = getTextNode(root, "acx");
AudiobookRecorder.window.setNotes(getTextNode(root, "notes"));
Element settings = getNode(root, "settings"); Element settings = getNode(root, "settings");
Element audioSettings = getNode(settings, "audio"); Element audioSettings = getNode(settings, "audio");
Element effectSettings = getNode(settings, "effects"); Element effectSettings = getNode(settings, "effects");
@@ -297,6 +299,8 @@ public class Book extends DefaultMutableTreeNode {
root.appendChild(makeTextNode(doc, "genre", genre)); root.appendChild(makeTextNode(doc, "genre", genre));
root.appendChild(makeTextNode(doc, "acx", ACX)); root.appendChild(makeTextNode(doc, "acx", ACX));
root.appendChild(makeTextNode(doc, "notes", AudiobookRecorder.window.getNotes()));
Element settingsNode = doc.createElement("settings"); Element settingsNode = doc.createElement("settings");
root.appendChild(settingsNode); root.appendChild(settingsNode);

View File

@@ -46,6 +46,7 @@ public class Chapter extends DefaultMutableTreeNode {
public Chapter(Element root, DefaultTreeModel model) { public Chapter(Element root, DefaultTreeModel model) {
name = Book.getTextNode(root, "name"); name = Book.getTextNode(root, "name");
id = root.getAttribute("id");
preGap = Utils.s2i(Book.getTextNode(root, "pre-gap")); preGap = Utils.s2i(Book.getTextNode(root, "pre-gap"));
postGap = Utils.s2i(Book.getTextNode(root, "post-gap")); postGap = Utils.s2i(Book.getTextNode(root, "post-gap"));