OSDN Git Service

f558be9d475b608ffb2b56007fc6d5d471893e78
[csp-qt/common_source_project-fm7.git] / source / src / qt / gui / util_binary.cpp
1 /*
2  * UI->Qt->MainWindow : Binary Utils.
3  * (C) 2015 K.Ohta <whatisthis.sowhat _at_ gmail.com>
4  * License: GPLv2
5  *
6  * History:
7  * Jan 24, 2014 : Moved from some files.
8  */
9
10
11 #include "mainwidget_base.h"
12 #include "commonclasses.h"
13 #include "qt_dialogs.h"
14 #include "agar_logger.h"
15
16 #include "menu_binary.h"
17
18 void Object_Menu_Control::on_recent_binary_load(void){
19         //   write_protect = false; // Right? On D88, May be writing entry  exists. 
20         emit set_recent_binary_load(drive, s_num);
21 }
22 void Object_Menu_Control::on_recent_binary_save(void){
23         //   write_protect = false; // Right? On D88, May be writing entry  exists. 
24         emit set_recent_binary_save(drive, s_num);
25 }
26
27 void Object_Menu_Control::_open_binary(QString s){
28         bool load = this->isPlay();
29         int d = this->getDrive();
30         emit sig_open_binary_file(d, s, load);
31 }
32 void Object_Menu_Control::insert_binary_load(void) {
33         emit sig_open_binary(getDrive(), true);
34 }
35 void Object_Menu_Control::insert_binary_save(void) {
36         emit sig_open_binary(getDrive(), false);
37 }
38
39 int Ui_MainWindowBase::set_recent_binary_load(int drv, int num) 
40 {
41
42         QString s_path;
43         char path_shadow[PATH_MAX];
44         int i;
45         
46         if((num < 0) || (num >= MAX_HISTORY)) return -1;
47         
48         s_path = QString::fromLocal8Bit(config.recent_binary_path[drv][num]);
49         strncpy(path_shadow, s_path.toLocal8Bit().constData(), PATH_MAX);
50         UPDATE_HISTORY(path_shadow, config.recent_binary_path[drv], listBINs[drv]);
51         strncpy(path_shadow, s_path.toLocal8Bit().constData(), PATH_MAX);
52         
53         get_parent_dir(path_shadow);
54         strcpy(config.initial_binary_dir, path_shadow);
55         //strncpy(path_shadow, s_path.toUtf8().constData(), PATH_MAX);
56         
57         emit sig_load_binary(drv, s_path);
58         menu_BINs[drv]->do_update_histories(listBINs[drv]);
59         menu_BINs[drv]->do_set_initialize_directory(config.initial_binary_dir);
60         return 0;
61 }
62
63 int Ui_MainWindowBase::set_recent_binary_save(int drv, int num) 
64 {
65         QString s_path;
66         char path_shadow[PATH_MAX];
67         int i;
68         
69         if((num < 0) || (num >= MAX_HISTORY)) return -1;
70         
71         s_path = QString::fromLocal8Bit(config.recent_binary_path[drv][num]);
72         strncpy(path_shadow, s_path.toLocal8Bit().constData(), PATH_MAX);
73         UPDATE_HISTORY(path_shadow, config.recent_binary_path[drv], listBINs[drv]);
74         strncpy(path_shadow, s_path.toLocal8Bit().constData(), PATH_MAX);
75         
76         get_parent_dir(path_shadow);
77         strcpy(config.initial_binary_dir, path_shadow);
78         //strncpy(path_shadow, s_path.toUtf8().constData(), PATH_MAX);
79         
80         emit sig_save_binary(drv, s_path);
81         menu_BINs[drv]->do_update_histories(listBINs[drv]);
82         menu_BINs[drv]->do_set_initialize_directory(config.initial_binary_dir);
83         return 0;
84 }
85
86
87 void Ui_MainWindowBase::_open_binary_load(int drv, const QString fname)
88 {
89         char path_shadow[PATH_MAX];
90         int i;
91         if(fname.length() <= 0) return;
92         drv = drv & 7;
93         strncpy(path_shadow, fname.toLocal8Bit().constData(), PATH_MAX);
94         UPDATE_HISTORY(path_shadow, config.recent_binary_path[drv], listBINs[drv]);
95         get_parent_dir(path_shadow);
96         strcpy(config.initial_binary_dir, path_shadow);
97         // Update List
98         emit sig_load_binary(drv, fname);
99                 
100         menu_BINs[drv]->do_update_histories(listBINs[drv]);
101         menu_BINs[drv]->do_set_initialize_directory(config.initial_binary_dir);
102 }
103
104 void Ui_MainWindowBase::_open_binary_save(int drv, const QString fname)
105 {
106         char path_shadow[PATH_MAX];
107         int i;
108         if(fname.length() <= 0) return;
109         drv = drv & 7;
110         strncpy(path_shadow, fname.toLocal8Bit().constData(), PATH_MAX);
111         UPDATE_HISTORY(path_shadow, config.recent_binary_path[drv], listBINs[drv]);
112         get_parent_dir(path_shadow);
113         strcpy(config.initial_binary_dir, path_shadow);
114         // Update List
115         emit sig_save_binary(drv, fname);
116
117         menu_BINs[drv]->do_update_histories(listBINs[drv]);
118         menu_BINs[drv]->do_set_initialize_directory(config.initial_binary_dir);
119 }
120
121
122 void Ui_MainWindowBase::CreateBinaryMenu(int drv, int drv_base)
123 {
124         QString drv_base_name = QString::number(drv_base);
125         QString ext, desc1;
126         if(using_flags->is_machine_tk80_series()) {
127                 ext = "*.ram *.bin *.tk8";
128         } else {
129                 ext = "*.ram *.bin";
130         }
131         if(using_flags->is_machine_pasopia_variants()) {
132                 desc1 = "RAM Pack Cartridge";
133         } else {
134                 desc1 = "Memory Dump";
135         }
136         menu_BINs[drv] = new Menu_BinaryClass(emu, menubar, QString::fromUtf8("Obj_Binary"), using_flags, this, drv);
137         menu_BINs[drv]->create_pulldown_menu();
138         
139         menu_BINs[drv]->do_clear_inner_media();
140         menu_BINs[drv]->do_add_media_extension(ext, desc1);
141         SETUP_HISTORY(config.recent_binary_path[drv], listBINs[drv]);
142         menu_BINs[drv]->do_update_histories(listBINs[drv]);
143         menu_BINs[drv]->do_set_initialize_directory(config.initial_binary_dir);
144         listBINs[drv].clear();
145
146         QString name = QString::fromUtf8("Binary");
147         QString tmpv;
148         tmpv.setNum(drv_base);
149         name.append(tmpv);
150         menu_BINs[drv]->setTitle(name);
151 }
152
153 void Ui_MainWindowBase::CreateBinaryPulldownMenu(int drv)
154 {
155 }
156
157 void Ui_MainWindowBase::ConfigBinaryMenuSub(int drv)
158 {
159   // Translate Menu
160 }
161
162 void Ui_MainWindowBase::retranslateBinaryMenu(int drv, int basedrv)
163 {
164   QString drive_name = (QApplication::translate("MainWindow", "Binary", 0));
165   drive_name += QString::number(basedrv);
166   
167   if((drv < 0) || (drv >= 8)) return;
168   menu_BINs[drv]->setTitle(QApplication::translate("MainWindow", drive_name.toUtf8().constData() , 0));
169   menu_BINs[drv]->retranslateUi();
170 }
171
172 void Ui_MainWindowBase::ConfigBinaryMenu(void)
173 {
174         for(int i = 0; i < using_flags->get_max_binary(); i++) {
175                 ConfigBinaryMenuSub(i);
176         }
177 }