2 * UI->Qt->MainWindow : CMT Utils.
3 * (C) 2015 K.Ohta <whatisthis.sowhat _at_ gmail.com>
7 * Jan 24, 2014 : Moved from some files.
11 #include "commonclasses.h"
12 #include "mainwidget_base.h"
13 #include "qt_dialogs.h"
14 #include "agar_logger.h"
17 #include "menu_flags.h"
19 //extern USING_FLAGS *using_flags;
20 void Object_Menu_Control::start_insert_play_cmt(void) {
21 //AGAR_DebugLog(AGAR_LOG_DEBUG, "%d", play);
22 emit sig_insert_play_cmt(play);
24 void Object_Menu_Control::eject_cmt(void) {
27 void Object_Menu_Control::on_recent_cmt(){
28 emit sig_recent_cmt(s_num);
30 void Object_Menu_Control::do_set_write_protect_cmt(void) {
32 emit sig_set_write_protect_cmt(write_protect);
34 void Object_Menu_Control::do_unset_write_protect_cmt(void) {
35 write_protect = false;
36 emit sig_set_write_protect_cmt(write_protect);
40 void Ui_MainWindowBase::CreateCMTMenu(void)
48 menu_CMT = new Menu_CMTClass(emu, menubar, "Object_CMT_Menu", using_flags, this, 0);
49 menu_CMT->setObjectName(QString::fromUtf8("menuCMT", -1));
51 menu_CMT->create_pulldown_menu();
53 SETUP_HISTORY(using_flags->get_config_ptr()->recent_tape_path, listCMT);
54 menu_CMT->do_set_write_protect(false);
55 menu_CMT->do_update_histories(listCMT);
56 menu_CMT->do_set_initialize_directory(using_flags->get_config_ptr()->initial_tape_dir);
58 if(using_flags->is_machine_pc6001()) {
59 ext_play = "*.wav *.p6 *.cas";
60 ext_rec = "*.wav *.p6 *.cas";
61 } else if(using_flags->is_machine_pc8001_variants()) {
62 ext_play = "*.cas *.cmt *.n80 *.t88";
63 ext_rec = "*.cas *.cmt";
64 } else if(using_flags->is_machine_mz80a_variants()) {
65 ext_play = "*.wav *.cas *.mzt *.m12 *.t77";
66 ext_rec = "*.wav *.cas";
67 } else if(using_flags->is_machine_mz80b_variants()) {
68 ext_play = "*.wav *.cas *.mzt *.mti *.mtw *.dat";
69 ext_rec = "*.wav *.cas";
70 } else if(using_flags->is_machine_x1_series()) {
71 ext_play = "*.wav *.cas *.tap *.t77";
72 ext_rec = "*.wav *.cas";
73 } else if(using_flags->is_machine_fm7_series()) {
74 ext_play = "*.wav *.t77";
75 ext_rec = "*.wav *.t77";
76 } else if(using_flags->is_tape_binary_only()) {
77 ext_play = "*.cas *.cmt";
78 ext_rec = "*.cas *.cmt";
80 ext_play = "*.wav *.cas";
81 ext_rec = "*.wav *.cas";
83 desc_play = "Data Recorder Tape [Play]";
84 desc_rec = "Data Recorder Tape [Rec]";
86 menu_CMT->do_add_media_extension(ext_play, desc_play);
87 menu_CMT->do_add_rec_media_extension(ext_rec, desc_rec);
90 void Ui_MainWindowBase::CreateCMTPulldownMenu(void)
95 int Ui_MainWindowBase::set_recent_cmt(int drv, int num)
98 char path_shadow[PATH_MAX];
100 if((num < 0) || (num >= MAX_HISTORY)) return -1;
102 s_path = QString::fromLocal8Bit(using_flags->get_config_ptr()->recent_tape_path[num]);
103 strncpy(path_shadow, s_path.toLocal8Bit().constData(), PATH_MAX);
104 UPDATE_HISTORY(path_shadow, using_flags->get_config_ptr()->recent_tape_path, listCMT);
106 get_parent_dir(path_shadow);
107 strcpy(using_flags->get_config_ptr()->initial_tape_dir, path_shadow);
108 strncpy(path_shadow, s_path.toLocal8Bit().constData(), PATH_MAX);
109 AGAR_DebugLog(AGAR_LOG_DEBUG, "Tape: Open READ");
111 emit sig_close_tape();
112 emit sig_play_tape(s_path);
113 menu_CMT->do_update_histories(listCMT);
114 menu_CMT->do_set_initialize_directory(using_flags->get_config_ptr()->initial_tape_dir);
118 void Ui_MainWindowBase::do_write_protect_cmt(int drv, bool flag)
120 cmt_write_protect = flag;
121 //menu_CMT->do_set_write_protect(flag);
125 void Ui_MainWindowBase::do_push_play_tape(void)
128 emit sig_cmt_push_play();
131 void Ui_MainWindowBase::do_push_stop_tape(void)
134 emit sig_cmt_push_stop();
137 void Ui_MainWindowBase::do_display_tape_play(bool flag)
140 // actionPlay_Start->setChecked(true);
142 // actionPlay_Stop->setChecked(true);
146 void Ui_MainWindowBase::do_push_fast_forward_tape(void)
149 emit sig_cmt_push_fast_forward();
151 void Ui_MainWindowBase::do_push_rewind_tape(void)
154 emit sig_cmt_push_fast_rewind();
156 void Ui_MainWindowBase::do_push_apss_forward_tape(void)
159 emit sig_cmt_push_apss_forward();
161 void Ui_MainWindowBase::do_push_apss_rewind_tape(void)
164 emit sig_cmt_push_apss_rewind();
167 void Ui_MainWindowBase::set_wave_shaper(bool f)
170 using_flags->get_config_ptr()->wave_shaper = 1;
172 using_flags->get_config_ptr()->wave_shaper = 0;
176 bool Ui_MainWindowBase::get_wave_shaper(void)
178 if(using_flags->get_config_ptr()->wave_shaper == 0) return false;
182 void Ui_MainWindowBase::set_direct_load_from_mzt(bool f)
185 using_flags->get_config_ptr()->direct_load_mzt = 1;
187 using_flags->get_config_ptr()->direct_load_mzt = 0;
191 bool Ui_MainWindowBase::get_direct_load_mzt(void)
193 if(using_flags->get_config_ptr()->direct_load_mzt == 0) return false;
197 void Ui_MainWindowBase::eject_cmt(void)
199 emit sig_close_tape();
202 void Ui_MainWindowBase::ConfigCMTMenuSub(void)
206 void Ui_MainWindowBase::do_open_read_cmt(int dummy, QString path)
208 char path_shadow[PATH_MAX];
211 if(path.length() <= 0) return;
212 strncpy(path_shadow, path.toLocal8Bit().constData(), PATH_MAX);
213 UPDATE_HISTORY(path_shadow, using_flags->get_config_ptr()->recent_tape_path, listCMT);
214 get_parent_dir(path_shadow);
215 strcpy(using_flags->get_config_ptr()->initial_tape_dir, path_shadow);
216 // Copy filename again.
217 strncpy(path_shadow, path.toLocal8Bit().constData(), PATH_MAX);
219 emit sig_close_tape();
220 AGAR_DebugLog(AGAR_LOG_DEBUG, "Tape: Open READ : filename = %s", path_shadow);
221 emit sig_play_tape(path);
222 menu_CMT->do_update_histories(listCMT);
223 menu_CMT->do_set_initialize_directory(using_flags->get_config_ptr()->initial_tape_dir);
226 void Ui_MainWindowBase::do_open_write_cmt(QString path)
228 char path_shadow[PATH_MAX];
231 if(path.length() <= 0) return;
232 strncpy(path_shadow, path.toLocal8Bit().constData(), PATH_MAX);
233 UPDATE_HISTORY(path_shadow, using_flags->get_config_ptr()->recent_tape_path, listCMT);
234 get_parent_dir(path_shadow);
235 strcpy(using_flags->get_config_ptr()->initial_tape_dir, path_shadow);
236 // Copy filename again.
237 strncpy(path_shadow, path.toLocal8Bit().constData(), PATH_MAX);
239 emit sig_close_tape();
240 if(menu_CMT->getWriteProtect() != false) {
241 AGAR_DebugLog(AGAR_LOG_DEBUG, "Tape: Open READ : filename = %s", path_shadow);
242 emit sig_play_tape(path);
244 AGAR_DebugLog(AGAR_LOG_DEBUG, "Tape: Open Write : filename = %s", path_shadow);
245 emit sig_rec_tape(path);
247 menu_CMT->do_update_histories(listCMT);
248 menu_CMT->do_set_initialize_directory(using_flags->get_config_ptr()->initial_tape_dir);
252 void Ui_MainWindowBase::retranslateCMTMenu(void)
254 if(using_flags->is_use_tape()) {
255 menu_CMT->retranslateUi();
259 void Ui_MainWindowBase::ConfigCMTMenu(void)