OSDN Git Service

32750cf15e8c790c37f007687f8c8c4d44c64407
[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.h"
12 #include "commonclasses.h"
13 #include "qt_dialogs.h"
14 #include "emu.h"
15 #include "agar_logger.h"
16
17 #include "menu_binary.h"
18
19 #ifdef USE_BINARY_FILE1
20 void Object_Menu_Control::on_recent_binary_load(void){
21         //   write_protect = false; // Right? On D88, May be writing entry  exists. 
22         emit set_recent_binary_load(drive, s_num);
23 }
24 void Object_Menu_Control::on_recent_binary_save(void){
25         //   write_protect = false; // Right? On D88, May be writing entry  exists. 
26         emit set_recent_binary_save(drive, s_num);
27 }
28
29 void Object_Menu_Control::_open_binary(QString s){
30         bool load = this->isPlay();
31         int d = this->getDrive();
32         emit sig_open_binary_file(d, s, load);
33 }
34 void Object_Menu_Control::insert_binary_load(void) {
35         emit sig_open_binary(getDrive(), true);
36 }
37 void Object_Menu_Control::insert_binary_save(void) {
38         emit sig_open_binary(getDrive(), false);
39 }
40 #endif
41
42 #if defined(USE_BINARY_FILE1)
43 int Ui_MainWindow::set_recent_binary_load(int drv, int num) 
44 {
45
46         QString s_path;
47         char path_shadow[PATH_MAX];
48         int i;
49         
50         if((num < 0) || (num >= MAX_HISTORY)) return -1;
51         
52         s_path = QString::fromUtf8(config.recent_binary_path[drv][num]);
53         strncpy(path_shadow, s_path.toUtf8().constData(), PATH_MAX);
54         UPDATE_HISTORY(path_shadow, config.recent_binary_path[drv], listBINs[drv]);
55         strncpy(path_shadow, s_path.toUtf8().constData(), PATH_MAX);
56         
57         get_parent_dir(path_shadow);
58         strcpy(config.initial_binary_dir, path_shadow);
59         //strncpy(path_shadow, s_path.toUtf8().constData(), PATH_MAX);
60         
61         emit sig_load_binary(drv, s_path);
62         menu_BINs[drv]->do_update_histories(listBINs[drv]);
63         menu_BINs[drv]->do_set_initialize_directory(config.initial_binary_dir);
64         return 0;
65 }
66
67 int Ui_MainWindow::set_recent_binary_save(int drv, int num) 
68 {
69         QString s_path;
70         char path_shadow[PATH_MAX];
71         int i;
72         
73         if((num < 0) || (num >= MAX_HISTORY)) return -1;
74         
75         s_path = QString::fromUtf8(config.recent_binary_path[drv][num]);
76         strncpy(path_shadow, s_path.toUtf8().constData(), PATH_MAX);
77         UPDATE_HISTORY(path_shadow, config.recent_binary_path[drv], listBINs[drv]);
78         strncpy(path_shadow, s_path.toUtf8().constData(), PATH_MAX);
79         
80         get_parent_dir(path_shadow);
81         strcpy(config.initial_binary_dir, path_shadow);
82         //strncpy(path_shadow, s_path.toUtf8().constData(), PATH_MAX);
83         
84         emit sig_save_binary(drv, s_path);
85         menu_BINs[drv]->do_update_histories(listBINs[drv]);
86         menu_BINs[drv]->do_set_initialize_directory(config.initial_binary_dir);
87         return 0;
88 }
89
90
91 void Ui_MainWindow::_open_binary_load(int drv, const QString fname)
92 {
93         char path_shadow[PATH_MAX];
94         int i;
95         if(fname.length() <= 0) return;
96         drv = drv & 7;
97         strncpy(path_shadow, fname.toUtf8().constData(), PATH_MAX);
98         UPDATE_HISTORY(path_shadow, config.recent_binary_path[drv], listBINs[drv]);
99         get_parent_dir(path_shadow);
100         strcpy(config.initial_binary_dir, path_shadow);
101         // Update List
102         emit sig_load_binary(drv, fname);
103                 
104         menu_BINs[drv]->do_update_histories(listBINs[drv]);
105         menu_BINs[drv]->do_set_initialize_directory(config.initial_binary_dir);
106 }
107
108 void Ui_MainWindow::_open_binary_save(int drv, const QString fname)
109 {
110         char path_shadow[PATH_MAX];
111         int i;
112         if(fname.length() <= 0) return;
113         drv = drv & 7;
114         strncpy(path_shadow, fname.toUtf8().constData(), PATH_MAX);
115         UPDATE_HISTORY(path_shadow, config.recent_binary_path[drv], listBINs[drv]);
116         get_parent_dir(path_shadow);
117         strcpy(config.initial_binary_dir, path_shadow);
118         // Update List
119         emit sig_save_binary(drv, fname);
120
121         menu_BINs[drv]->do_update_histories(listBINs[drv]);
122         menu_BINs[drv]->do_set_initialize_directory(config.initial_binary_dir);
123 }
124
125 #endif
126 #if defined(USE_BINARY_FILE1)
127
128 void Ui_MainWindow::CreateBinaryMenu(int drv, int drv_base)
129 {
130         QString drv_base_name = QString::number(drv_base);
131         QString ext, desc1;
132 # if defined(_TK80BS) || defined(_TK80)
133         ext = "*.ram *.bin *.tk8";
134 # else
135         ext = "*.ram *.bin";
136 # endif 
137 # if defined(_PASOPIA) || defined(PASOPIA7)
138         desc1 = "RAM Pack Cartridge";
139 # else
140         desc1 = "Memory Dump";
141 # endif
142         menu_BINs[drv] = new Menu_BinaryClass(emu, menubar, QString::fromUtf8("Obj_Binary"), this, drv);
143         menu_BINs[drv]->create_pulldown_menu();
144         
145         menu_BINs[drv]->do_clear_inner_media();
146         menu_BINs[drv]->do_add_media_extension(ext, desc1);
147         SETUP_HISTORY(config.recent_binary_path[drv], listBINs[drv]);
148         menu_BINs[drv]->do_update_histories(listBINs[drv]);
149         menu_BINs[drv]->do_set_initialize_directory(config.initial_binary_dir);
150         listBINs[drv].clear();
151
152         QString name = QString::fromUtf8("Binary");
153         QString tmpv;
154         tmpv.setNum(drv_base);
155         name.append(tmpv);
156         menu_BINs[drv]->setTitle(name);
157
158 }
159
160 void Ui_MainWindow::CreateBinaryPulldownMenu(int drv)
161 {
162 }
163
164 void Ui_MainWindow::ConfigBinaryMenuSub(int drv)
165 {
166   // Translate Menu
167 }
168 #endif
169
170 void Ui_MainWindow::retranslateBinaryMenu(int drv, int basedrv)
171 {
172 #if defined(USE_BINARY_FILE1)
173   QString drive_name = (QApplication::translate("MainWindow", "Binary", 0));
174   drive_name += QString::number(basedrv);
175   
176   if((drv < 0) || (drv >= 8)) return;
177   menu_BINs[drv]->setTitle(QApplication::translate("MainWindow", drive_name.toUtf8().constData() , 0));
178   menu_BINs[drv]->retranslateUi();
179 #endif
180 }
181
182 void Ui_MainWindow::ConfigBinaryMenu(void)
183 {
184   
185 #if defined(USE_BINARY_FILE1)
186         ConfigBinaryMenuSub(0); 
187 #endif
188 #if defined(USE_BINARY_FILE2)
189         ConfigBinaryMenuSub(1);
190 #endif
191 }