void PatternEditorTop::set_in_window() { popup = new Window(get_window(),Window::MODE_POPUP); VBoxContainer *vbc = new VBoxContainer; popup->set_root_frame( vbc ); MarginGroup *mg; mg=vbc->add( new MarginGroup("Initial Volume"), 0 ); HBoxContainer *vol_hb = mg->add( new HBoxContainer, 0 ); mute_button=mg->add( new CheckButton("Mute"),0 ); default_vol_slider=vol_hb->add( new HSlider, 1 ); vol_hb->add( new ValueLabel, 0)->set_range( default_vol_slider->get_range() ); mg=vbc->add( new MarginGroup("Initial Pan"), 0 ); HBoxContainer *pan_hb = mg->add( new HBoxContainer, 0 ); surround_button=mg->add( new CheckButton("Surround"),0 ); default_pan_slider=pan_hb->add( new HSlider, 1 ); pan_hb->add( new ValueLabel, 0)->set_range( default_pan_slider->get_range() ); //vbc->set_stylebox_override( stylebox( SB_POPUP_BG ) ); mute_button->toggled_signal.connect( this, &PatternEditorTop::track_mute_toggled ); surround_button->toggled_signal.connect( this, &PatternEditorTop::track_surround_toggled ); default_pan_slider->get_range()->set_min(-32); default_pan_slider->get_range()->set_max(32); default_pan_slider->get_range()->value_changed_signal.connect( this, &PatternEditorTop::track_pan_changed ); default_vol_slider->get_range()->value_changed_signal.connect( this, &PatternEditorTop::track_volume_changed ); default_vol_slider->get_range()->set_max(64); mg=vbc->add( new MarginGroup("Initial Chorus"), 0 ); HBoxContainer *chorus_hb = mg->add( new HBoxContainer, 0 ); default_chorus_slider=chorus_hb->add( new HSlider, 1 ); chorus_hb->add( new ValueLabel, 0)->set_range( default_chorus_slider->get_range() ); default_chorus_slider->get_range()->value_changed_signal.connect( this, &PatternEditorTop::track_chorus_changed ); default_chorus_slider->get_range()->set_max( Song::CHANNEL_MAX_CHORUS ); mg=vbc->add( new MarginGroup("Initial Reverb"), 0 ); HBoxContainer *reverb_hb = mg->add( new HBoxContainer, 0 ); default_reverb_slider=reverb_hb->add( new HSlider, 1 ); reverb_hb->add( new ValueLabel, 0)->set_range( default_reverb_slider->get_range() ); default_reverb_slider->get_range()->set_max( Song::CHANNEL_MAX_REVERB ); default_reverb_slider->get_range()->value_changed_signal.connect( this, &PatternEditorTop::track_reverb_changed ); }
PatternTranspose::PatternTranspose(Window *p_parent,Editor *p_editor) : Window(p_parent,Window::MODE_POPUP,Window::SIZE_CENTER) { editor=p_editor; VBoxContainer *vb = new VBoxContainer; set_root_frame( vb ); MarginGroup *mg=vb->add(new MarginGroup("Note Relationship")); for (int i=0;i<12;i++) { static const char* notes[12]={"C","C#","D","D#","E","F","F#","G","G#","A","A#","B"}; HBoxContainer *hb=mg->add(new HBoxContainer); LineEdit *le=hb->add(new LineEdit,1); le->set_text(notes[i]); le->set_editable( false ); hb->add(new HSeparator,2); trans[i]=hb->add(new ComboBox,2); for (int j=0;j<12;j++) { trans[i]->add_string(notes[j]); } trans[i]->select(i); } mg=vb->add(new MarginGroup("Actions")); HBoxContainer *hb = mg->add(new CenterContainer)->set(new HBoxContainer); hb->add(new Button("Clear"))->pressed_signal.connect(this,&PatternTranspose::reset); hb->add(new VSeparator); hb->add(new Button("Lower"))->pressed_signal.connect(this,&PatternTranspose::lower); hb->add(new Button("Raise"))->pressed_signal.connect(this,&PatternTranspose::raise); hb->add(new VSeparator); apply_b=hb->add(new Button("Apply")); apply_b->pressed_signal.connect(this,&PatternTranspose::apply); }
InterfaceMini::InterfaceMini(Window *p_window,Mixer *p_mixer,ConfigApi *p_config) : tracker(p_mixer) { config=p_config; window=p_window; //window->set_large_dialogs(true); MiniTheme::create(window->get_skin(),window->get_painter()); VBoxContainer *vbc = new VBoxContainer; window->set_root_frame(vbc); window->key_unhandled_signal.connect( this, &InterfaceMini::main_key ); vbc->set_separation( 0 ); top=vbc->add( new VBoxContainer); top_bar=top->add( new HBoxContainer, 0 ); file = top_bar->add( new MenuBox("Song.."), 0); file->add_item("New"); file->add_item("Open.."); file->add_item("Save"); file->add_item("Save As.."); file->add_separator(); file->add_item("Export WAV"); file->add_separator(); file->add_item("Clean Up"); file->add_separator(); file->add_item("Quit"); file->item_selected_signal.connect(this, &InterfaceMini::song_menu_selected ); file->set_focus_mode( FOCUS_NONE ); top_bar->add( new VSeparator,0); /* Tab Bar */ tabs=top_bar->add( new TabBar, 0 ); tabs->add_tab("Pat"); tabs->add_tab("Smp"); tabs->add_tab("Ins"); tabs->add_tab("Var"); tabs->set_focus_mode( FOCUS_NONE ); tabs->set_tab_visible( 2, false ); // top_bar->add( new Widget,1); top_bar->add( new VSeparator,0); settings=top_bar->add(new MenuBox("Setup"),0); settings->add_item("Audio Driver"); settings->add_item("Software Mixer"); settings->add_item("Keyboard"); settings->add_item("InterfaceMini"); settings->add_item("Default Paths"); settings->item_selected_signal.connect( this, &InterfaceMini::config_menu_selected ); settings->set_focus_mode( FOCUS_NONE ); top_bar->add( new VSeparator ); help=top_bar->add(new MenuBox("Help"),0); help->add_item("Command List"); help->add_item("Skins"); help->add_item("About"); help->set_focus_mode( FOCUS_NONE ); help->item_selected_signal.connect( this, &InterfaceMini::help_menu_selected ); /* HBoxContainer *status_hb = top->add( new HBoxContainer, 0); status_label = status_hb->add(new Label("Stopped"),1); status_hb->add( new Label("Memory: "), 0); memory_label=status_hb->add( new Label("0kb"), 0); */ top->set_stylebox_override( window->get_skin()->get_stylebox(SB_TOP_STACK_FRAME) ); main_stack=vbc->add( new StackContainer,1); tabs->tab_changed_signal.connect( main_stack, &StackContainer::raise ); tabs->tab_changed_signal.connect( this, &InterfaceMini::screen_changed_to ); tabs->pre_tab_changed_signal.connect( this, &InterfaceMini::pre_screen_changed_from ); pattern_screen=main_stack->add( new PatternScreen(&tracker,true) ); sample_screen=main_stack->add( new SampleScreen(&tracker,true) ); instrument_screen = main_stack->add(new InstrumentScreen(&tracker,true)); instrument_screen->sample_list_changed_signal.connect( sample_screen, &SampleScreen::update_components ); variables_screen = main_stack->add(new VariablesScreen(&tracker,true)); variables_screen->song_name_changed_signal.connect(this, &InterfaceMini::update_title_bar); variables_screen->instrument_mode_changed.connect( this, &InterfaceMini::check_instrument_visibility ); set_default_keybinds(); main_stack->set_stylebox_override(window->get_skin()->get_stylebox(SB_MAIN_STACK_FRAME)); /* default_octave->get_range()->set( (int)tracker.editor->get_default_octave() ); */ for (int i=0;i<SCREEN_MAX;i++) old_focus[i]=0; file_dialog = new FileDialog(window); file_dialog->file_activated_signal.connect( this, &InterfaceMini::song_file_callback ); /* New Song Dialog */ new_song.window=new Window(window,Window::MODE_POPUP,Window::SIZE_CENTER); WindowBox *new_song_vb = new WindowBox("New Song"); new_song.window->set_root_frame( new_song_vb ); MarginGroup *new_song_mg = new_song_vb->add(new MarginGroup("New Song"),0); new_song.patterns = new_song_vb->add( new CheckButton("Keep Patterns"),0); new_song.instruments = new_song_vb->add( new CheckButton("Keep Instruments"),0); new_song.samples = new_song_vb->add( new CheckButton("Keep Samples"),0); new_song.variables = new_song_vb->add( new CheckButton("Keep Variables"),0); new_song_vb->add( new CenterContainer, 0 )->set( new Button("Proceed"))->pressed_signal.connect(this,&InterfaceMini::new_song_accept); /* CleanUp Dialog */ cleanup.window=new Window(window,Window::MODE_POPUP,Window::SIZE_CENTER); WindowBox *cleanup_vb = new WindowBox("Clean Up"); cleanup.window->set_root_frame( cleanup_vb ); cleanup.patterns = cleanup_vb->add( new CheckButton("Unused Patterns"),0); cleanup.instruments = cleanup_vb->add( new CheckButton("Unused Instruments"),0); cleanup.samples = cleanup_vb->add( new CheckButton("Unused Samples"),0); cleanup.orders = cleanup_vb->add( new CheckButton("Unused Orders"),0); cleanup_vb->add( new HSeparator,0); cleanup.def_vol = cleanup_vb->add( new CheckButton("Reset Default Volumes"),0); cleanup.def_pan = cleanup_vb->add( new CheckButton("Reset Default Pannings"),0); cleanup_vb->add( new CenterContainer, 0 )->set( new Button("Remove"))->pressed_signal.connect(this,&InterfaceMini::cleanup_accept); /* Quit Menu */ quit=false; confirm_quit_window=new Window(window,Window::MODE_POPUP,Window::SIZE_CENTER); WindowBox *quit_vb = new WindowBox("Quit"); confirm_quit_window->set_root_frame( quit_vb ); quit_vb->add( new Label("Really Quit?"),0); quit_vb->add( new CenterContainer, 0)->set( new Button("Exit") )->pressed_signal.connect( this, &InterfaceMini::quit_accept ); sound_driver_dialog = new SoundDriverDialog(window,config); mixer_dialog = new MixerDialog(window,config); kb_dialog = new KeyboardDialog(window,config); ui_dialog = new InterfaceSettingsDialog(window,config); ui_dialog->repaint_interval_changed_signal.connect(this, &InterfaceMini::ui_repaint_interval_changed ); uihelp_dialog = new InterfaceHelp(window,HELP_PATTERN_KEYS); skins_dialog = new InterfaceHelp(window,HELP_SKINS); wav_saver = new WavSaverDialog(window,&tracker); path_dialog = new PathsDialog(window,&paths,config); path_dialog->paths_changed_signal.connect( this, &InterfaceMini::paths_changed ); window->get_timer()->create_timer( Method(this, &InterfaceMini::interface_update_timer_callback ),60 ); pattern_screen->get_pattern_editor()->instrument_changed_signal.connect(this, &InterfaceMini::instrument_mask_changed ); sample_screen->instrument_changed_signal.connect(this, &InterfaceMini::instrument_mask_changed ); error_msg = new MessageBox(window); about_msg = new MessageBox(window); window->skin_changed_signal.connect(this,&InterfaceMini::skin_changed); update_title_bar(); setup_logos(); sample_screen->instrument_list_changed_signal.connect( instrument_screen, &InstrumentScreen::update_components ); status_override_time=0; }