Class: STFTSpectrogram::GUI
- Inherits:
-
FXMainWindow
- Object
- FXMainWindow
- STFTSpectrogram::GUI
- Defined in:
- lib/gui/gui.rb
Overview
User interface
Constant Summary collapse
- PLOT_TYPE_SPECTROGRAM =
1
- PLOT_TYPE_TOP_MAGNITUDES =
2
- MIN_WINDOW_WIDTH =
960
- MIN_WINDOW_HEIGHT =
960
Instance Method Summary collapse
- #create ⇒ Object
-
#initialize(app) ⇒ GUI
constructor
A new instance of GUI.
Constructor Details
#initialize(app) ⇒ GUI
Returns a new instance of GUI.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/gui/gui.rb', line 17 def initialize(app) super(app, 'STFT Spectrogram generator', width: 1280, height: 720, opts: DECOR_ALL & ~DECOR_SHRINKABLE) @plot = Plot.new @audio = nil @spectrogram = nil vframe1 = FXVerticalFrame.new(self, width: 1280, opts: LAYOUT_FILL) hframe1 = FXHorizontalFrame.new(vframe1, opts: LAYOUT_FILL | FRAME_SUNKEN) @img_spectrum = FXImageView.new(hframe1, opts: LAYOUT_FILL) @current_spec_img = nil hframe2 = FXHorizontalFrame.new(vframe1) vframe_window = FXVerticalFrame.new(hframe2, opts: LAYOUT_FILL) hframe_window_size = FXHorizontalFrame.new(vframe_window, opts: LAYOUT_RIGHT) hframe_window_overlap = FXHorizontalFrame.new(vframe_window, opts: LAYOUT_RIGHT) FXLabel.new(hframe_window_size, 'Window size:') @spin_window_size = FXSpinner.new(hframe_window_size, 10) @spin_window_size.range = 1..(2**31 - 1) @spin_window_size.value = 1 FXLabel.new(hframe_window_size, 'ms') FXLabel.new(hframe_window_overlap, 'Window overlap:') @spin_window_overlap = FXSpinner.new(hframe_window_overlap, 10) @spin_window_overlap.range = 0..(2**31 - 1) FXLabel.new(hframe_window_overlap, 'ms') FXVerticalSeparator.new(hframe2) vframe_freq = FXVerticalFrame.new(hframe2, opts: LAYOUT_FILL) hframe_freq_low = FXHorizontalFrame.new(vframe_freq, opts: LAYOUT_RIGHT) hframe_freq_high = FXHorizontalFrame.new(vframe_freq, opts: LAYOUT_RIGHT) FXLabel.new(hframe_freq_low, 'Low pass:') @spin_freq_low = FXSpinner.new(hframe_freq_low, 10) @spin_freq_low.range = 0..(2**31 - 1) FXLabel.new(hframe_freq_low, 'Hz') FXLabel.new(hframe_freq_high, 'High pass:') @spin_freq_high = FXSpinner.new(hframe_freq_high, 10) @spin_freq_high.range = 0..(2**31 - 1) FXLabel.new(hframe_freq_high, 'Hz') FXVerticalSeparator.new(hframe2) vframe_wav = FXVerticalFrame.new(hframe2, opts: LAYOUT_FILL) hframe_wav_txt = FXHorizontalFrame.new(vframe_wav, opts: LAYOUT_RIGHT) hframe_wav_btn = FXHorizontalFrame.new(vframe_wav, opts: LAYOUT_RIGHT) FXLabel.new(hframe_wav_txt, 'Loaded wave file:') @txt_wav_file = FXTextField.new(hframe_wav_txt, 60, opts: TEXTFIELD_READONLY) btn_wav_open = FXButton.new(hframe_wav_btn, 'Select WAV file') btn_wav_open.connect(SEL_COMMAND) { open_wav_file } FXVerticalSeparator.new(hframe2) vframe_plot = FXVerticalFrame.new(hframe2, opts: LAYOUT_FILL) hframe_plot_type = FXHorizontalFrame.new(vframe_plot, opts: LAYOUT_RIGHT) hframe_gen_plot = FXHorizontalFrame.new(vframe_plot, opts: LAYOUT_RIGHT) @combo_plot_type = FXComboBox.new(hframe_plot_type, 25, opts: COMBOBOX_STATIC) @combo_plot_type.appendItem('Spectrogram', PLOT_TYPE_SPECTROGRAM) @combo_plot_type.appendItem('Most significant frequencies only', PLOT_TYPE_TOP_MAGNITUDES) btn_plot = FXButton.new(hframe_gen_plot, 'Generate plot') btn_plot.connect(SEL_COMMAND) { on_btnplot_pressed } FXVerticalSeparator.new(hframe2) hframe_save_img = FXHorizontalFrame.new(hframe2, opts: LAYOUT_RIGHT) btn_save_img = FXButton.new(hframe_save_img, 'Save graph') btn_save_img.connect(SEL_COMMAND) { on_save_graph } @spin_window_size.connect(SEL_COMMAND) { on_window_changed } @spin_window_overlap.connect(SEL_COMMAND) { on_window_changed } end |
Instance Method Details
#create ⇒ Object
100 101 102 103 |
# File 'lib/gui/gui.rb', line 100 def create super show(PLACEMENT_SCREEN) end |