import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.GroupLayout;
import javax.swing.JTextField;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.SwingUtilities;
-import javax.swing.border.BevelBorder;
import nicobrowser.entity.NicoContent;
+import nicobrowser.main.Main;
import org.apache.commons.lang.StringUtils;
import saccubus.ConvertStopFlag.State;
import saccubus.converter.profile.FfmpegOption;
private static final long serialVersionUID = 2564486741331062989L;
public static final String PRODUCT_NAME = "いんきゅばす";
- public static final String VERSION = "1.5.0";
+ public static final String VERSION = "1.7.1 (NicoBrowser" + Main.VERSION + ")";
public static final Image WinIcon = Toolkit.getDefaultToolkit().createImage(saccubus.MainFrame.class.getResource(
"icon32.png"));
// TODO GUIが無いためフィールドに保持.
ButtonGroup CommentSaveButtonGroup = new ButtonGroup();
ButtonGroup ConvSaveButtonGroup = new ButtonGroup();
+ private class FfmpegOptionCheckBoxListener implements ActionListener{
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ setFFMpegOptionCheckbox();
+ }
+ }
+ private final FfmpegOptionCheckBoxListener ffmpegOptionCheckBoxListener = new FfmpegOptionCheckBoxListener();
+
+ private void setFFMpegOptionCheckbox() {
+ boolean resizable = (resizeCheckBox.isEnabled() && resizeCheckBox.isSelected());
+ resizeWidthField.setEnabled(resizable);
+ resizeHeigitField.setEnabled(resizable);
+ adjustRatioCheckBox.setEnabled(resizable);
+
+ }
+
private void setNames() {
mainTabbedPane.setName("mainTabbedPane");
.addComponent(extOptionLabel)
.addComponent(mainOptionLabel)
.addComponent(inputOptionLabel)
- .addComponent(outputOptionLabel))
+ .addComponent(outputOptionLabel)
+ .addComponent(avfilterOptionLabel)
+ )
+ .addPreferredGap(ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup()
.addComponent(extOptionField)
.addComponent(mainOptionField)
.addComponent(inputOptionField)
- .addComponent(outputOptionField)))
+ .addComponent(outputOptionField)
+ .addComponent(avfilterOptionField)
+ )
+ )
.addGroup(layout.createParallelGroup()
.addGroup(layout.createSequentialGroup()
.addComponent(resizeCheckBox)
.addPreferredGap(ComponentPlacement.UNRELATED)
.addComponent(resizeHeightLabel)
.addPreferredGap(ComponentPlacement.RELATED)
- .addComponent(resizeHeigitField)))
- .addGroup(layout.createSequentialGroup()
- .addGap(10)
- .addComponent(adjustRatioCheckBox))
- .addGroup(layout.createSequentialGroup()
- .addGap(20)
- .addComponent(padCheckBox))
- );
+ .addComponent(resizeHeigitField)
+ )
+ )
+ .addGroup(layout.createSequentialGroup()
+ .addGap(10)
+ .addComponent(adjustRatioCheckBox))
+ .addGroup(layout.createSequentialGroup()
+ .addGap(20)
+ )
+ );
layout.setVerticalGroup(layout.createSequentialGroup()
- .addComponent(getFFmpegOptionComboBoxPanel())
+ .addComponent(getFFmpegOptionComboBoxPanel())
+ .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
+ .addComponent(extOptionLabel)
+ .addComponent(extOptionField))
+ .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
+ .addComponent(mainOptionLabel)
+ .addComponent(mainOptionField))
+ .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
+ .addComponent(inputOptionLabel)
+ .addComponent(inputOptionField))
+ .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
+ .addComponent(outputOptionLabel)
+ .addComponent(outputOptionField))
+ .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
+ .addComponent(avfilterOptionLabel)
+ .addComponent(avfilterOptionField))
+ .addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
- .addComponent(extOptionLabel)
- .addComponent(extOptionField))
- .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
- .addComponent(mainOptionLabel)
- .addComponent(mainOptionField))
- .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
- .addComponent(inputOptionLabel)
- .addComponent(inputOptionField))
- .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
- .addComponent(outputOptionLabel)
- .addComponent(outputOptionField))
- .addGroup(layout.createSequentialGroup()
- .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
- .addComponent(resizeCheckBox)
- .addComponent(resizeWidthLabel)
- .addComponent(resizeWidthField)
- .addComponent(resizeHeightLabel)
- .addComponent(resizeHeigitField))
- .addComponent(adjustRatioCheckBox)
- .addComponent(padCheckBox)));
+ .addComponent(resizeCheckBox)
+ .addComponent(resizeWidthLabel)
+ .addComponent(resizeWidthField)
+ .addComponent(resizeHeightLabel)
+ .addComponent(resizeHeigitField))
+ .addComponent(adjustRatioCheckBox)
+ )
+ );
+
+ resizeCheckBox.addActionListener(ffmpegOptionCheckBoxListener);
+ adjustRatioCheckBox.addActionListener(ffmpegOptionCheckBoxListener);
+ setFFMpegOptionCheckbox();
VideoInfoPanel.add(DoButton, gridBagConstraints71);
inputOptionField.setText(movie.getFfmpegOption().getInOption());
outputOptionField.setText(movie.getFfmpegOption().getOutOption());
avfilterOptionField.setText(movie.getFfmpegOption().getAvfilterOption());
+ resizeCheckBox.setSelected(movie.getFfmpegOption().isResize());
+ resizeWidthField.setText(Integer.toString(movie.getFfmpegOption().getResizeWidth()));
+ resizeHeigitField.setText(Integer.toString(movie.getFfmpegOption().getResizeHeight()));
+ adjustRatioCheckBox.setSelected(movie.getFfmpegOption().isAdjustRatio());
FFmpegOptionModel.reload(movie.getOptionFile());
// 変換設定
* ActionEvent
*/
void jMenuFileExit_actionPerformed(ActionEvent actionEvent) {
- SProperties setting = getSetting();
- SProperties.saveSetting(setting);
+ try {
+ SProperties setting = getSetting();
+ SProperties.saveSetting(setting);
+ } catch (Throwable t) {
+ Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, "設定保存に失敗", t);
+ }
System.exit(0);
}
private JTextField outputOptionField = new JTextField();
private final JLabel avfilterOptionLabel = new JLabel();
private final JTextField avfilterOptionField = new JTextField();
- private final JCheckBox resizeCheckBox = new JCheckBox("次のサイズに収まるようリサイズ");
+ private final JCheckBox resizeCheckBox = new JCheckBox("次のサイズに収まるよう縮小(-s)");
private final JLabel resizeWidthLabel = new JLabel("横");
- private final JTextField resizeWidthField = new JTextField();
+ private final JTextField resizeWidthField = new NumberFormattedTextField();
private final JLabel resizeHeightLabel = new JLabel("縦");
- private final JTextField resizeHeigitField = new JTextField();
+ private final JTextField resizeHeigitField = new NumberFormattedTextField();
private final JCheckBox adjustRatioCheckBox = new JCheckBox("アスペクト比を維持");
- private final JCheckBox padCheckBox = new JCheckBox("黒幕を付与");
// FFmpegの設定 ここまで
private JLabel FontIndexLabel = new JLabel();
private JTextField fontIndexField = new JTextField();
private GridBagLayout gridBagLayout12 = new GridBagLayout();
private JPanel ConvertingSettingPanel = null;
private JPanel NGWordSettingPanel = null;
- private JLabel NGWordLavel = null;
+ private JLabel NGWordLabel = null;
private JTextField ngWordTextField = null;
private JLabel NGIDLabel = null;
private JTextField ngIdTextField = null;
gridBagConstraints2.gridx = 0;
gridBagConstraints2.insets = new Insets(0, 5, 5, 0);
gridBagConstraints2.gridy = 0;
- NGWordLavel = new JLabel();
- NGWordLavel.setText("NGワード");
+ NGWordLabel = new JLabel();
+ NGWordLabel.setText("NGワード");
NGWordSettingPanel = new JPanel();
NGWordSettingPanel.setLayout(new GridBagLayout());
NGWordSettingPanel.setBorder(BorderFactory.createTitledBorder(null,
- "NGワード・ID設定"));
- NGWordSettingPanel.add(NGWordLavel, gridBagConstraints2);
+ "NGワード・ID設定(半角スペース区切りで複数入力)"));
+ NGWordSettingPanel.add(NGWordLabel, gridBagConstraints2);
NGWordSettingPanel.add(getNGWordTextField(), gridBagConstraints3);
NGWordSettingPanel.add(NGIDLabel, gridBagConstraints4);
NGWordSettingPanel.add(getNGIDTextField(), gridBagConstraints5);
public void actionPerformed(java.awt.event.ActionEvent e) {
if (FFmpegOptionModel.isFile()) {// ファイル
- extOptionField.setEnabled(false);
- mainOptionField.setEnabled(false);
- inputOptionField.setEnabled(false);
- outputOptionField.setEnabled(false);
- avfilterOptionField.setEnabled(false);
+ setFFMpegOptionEnabled(false);
} else {// ファイルでない
- extOptionField.setEnabled(true);
- mainOptionField.setEnabled(true);
- inputOptionField.setEnabled(true);
- outputOptionField.setEnabled(true);
- avfilterOptionField.setEditable(true);
+ setFFMpegOptionEnabled(true);
+ setFFMpegOptionCheckbox();
}
}
+
+ private void setFFMpegOptionEnabled(boolean enable) {
+ extOptionField.setEnabled(enable);
+ mainOptionField.setEnabled(enable);
+ inputOptionField.setEnabled(enable);
+ outputOptionField.setEnabled(enable);
+ avfilterOptionField.setEnabled(enable);
+ resizeCheckBox.setEnabled(enable);
+ resizeWidthField.setEnabled(enable);
+ resizeHeigitField.setEditable(enable);
+ adjustRatioCheckBox.setEnabled(enable);
+ }
});
}
return FFmpegOptionComboBox;
String in = inputOptionField.getText();
String out = outputOptionField.getText();
String avfilter = avfilterOptionField.getText();
+ boolean resize = resizeCheckBox.isSelected();
+ String width = resizeWidthField.getText();
+ String height = resizeHeigitField.getText();
+ boolean adjust = adjustRatioCheckBox.isSelected();
File optionFile = FFmpegOptionModel.getSelectedFile();
- FfmpegOption opt = new FfmpegOption(ext, main, in, out, avfilter);
+ FfmpegOption opt = new FfmpegOption(ext, main, in, out, avfilter, resize, width, height, adjust);
return new MovieSetting(new File(ffmpeg), new File(vhook), optionFile, opt);
}