2 * Qt / Tape Menu, Utilities
3 * (C) 2015 K.Ohta <whatisthis.sowhat _at_ gmail.com>
8 #include <QApplication>
9 #include <QActionGroup>
11 #include "commonclasses.h"
12 #include "mainwidget_base.h"
13 #include "menu_binary.h"
15 #include "qt_dialogs.h"
18 Menu_BinaryClass::Menu_BinaryClass(QMenuBar *root_entry, QString desc, std::shared_ptr<USING_FLAGS> p, QWidget *parent, int drv, int base_drv) : Menu_MetaClass(root_entry, desc, p, parent, drv, base_drv)
20 use_write_protect = false;
21 use_d88_menus = false;
24 Menu_BinaryClass::~Menu_BinaryClass()
28 void Menu_BinaryClass::create_pulldown_menu_device_sub(void)
31 action_saving = new Action_Control(p_wid, using_flags);
32 action_saving->setVisible(true);
33 action_saving->setCheckable(false);
35 //menu_history_save = new QMenu(this);
36 //menu_history_save->setObjectName(QString::fromUtf8("menu_history_save_") + object_desc);
40 action_group_save_recent = new QActionGroup(p_wid);
41 action_group_save_recent->setExclusive(true);
43 for(ii = 0; ii < MAX_HISTORY; ii++) {
44 tmps = history.value(ii, "");
45 action_recent_save_list[ii] = new Action_Control(p_wid, using_flags);
46 struct CSP_Ui_Menu::DriveIndexPair tmp;
47 tmp.drive = media_drive;
51 action_recent_save_list[ii]->setData(_tmpv);
53 action_recent_save_list[ii]->setText(tmps);
54 action_group_save_recent->addAction(action_recent_save_list[ii]);
56 action_recent_save_list[ii]->setVisible(true);
58 action_recent_save_list[ii]->setVisible(false);
64 void Menu_BinaryClass::do_open_media_save(int drv, QString name) {
65 emit sig_open_media_save(drv, name);
68 void Menu_BinaryClass::do_open_recent_media_save(int drv, int slot) {
69 emit sig_set_recent_media_save(drv, slot);
72 void Menu_BinaryClass::do_update_histories(QStringList lst)
77 Menu_MetaClass::do_update_histories(lst);
79 for(ii = 0; ii < MAX_HISTORY; ii++) {
80 tmps = QString::fromUtf8("");
81 if(ii < lst.size()) tmps = lst.value(ii);
82 action_recent_save_list[ii]->setText(tmps);
84 action_recent_save_list[ii]->setVisible(true);
86 action_recent_save_list[ii]->setVisible(false);
93 void Menu_BinaryClass::connect_menu_device_sub(void)
96 if(!using_flags->is_machine_pasopia_variants()) {
97 this->addAction(action_saving);
100 action_saving->setVisible(false);
102 action_eject->setVisible(false);
103 for(ii = 0; ii < MAX_HISTORY; ii++) {
104 connect(action_recent_save_list[ii], SIGNAL(triggered()),
105 p_wid, SLOT(set_recent_binary_save()));
107 connect(action_saving, SIGNAL(triggered()), this, SLOT(do_open_save_dialog()));
109 connect(this, SIGNAL(sig_open_media(int, QString)), p_wid, SLOT(_open_binary_load(int, QString)));
110 connect(this, SIGNAL(sig_open_media_save(int, QString)), p_wid, SLOT(_open_binary_save(int, QString)));
115 void Menu_BinaryClass::do_open_save_dialog()
117 CSP_DiskDialog *dlg = new CSP_DiskDialog(nullptr);
119 if(initial_dir.isEmpty()) {
122 initial_dir = dir.currentPath();
123 strncpy(app, initial_dir.toLocal8Bit().constData(), PATH_MAX - 1);
124 initial_dir = QString::fromLocal8Bit(get_parent_dir(app));
126 dlg->setOption(QFileDialog::ReadOnly, false);
127 dlg->setOption(QFileDialog::DontUseNativeDialog, true);
128 dlg->setAcceptMode(QFileDialog::AcceptSave);
129 dlg->param->setDrive(media_drive);
130 dlg->param->setPlay(false);
131 dlg->setWindowTitle(QApplication::translate("MenuMedia", "Save Binary", 0));
132 dlg->setDirectory(initial_dir);
133 dlg->setNameFilters(ext_filter);
135 connect(dlg, SIGNAL(fileSelected(QString)), dlg->param, SLOT(_open_media(QString)));
136 connect(dlg->param, SIGNAL(sig_open_media(int, QString)),
137 this, SLOT(do_open_media_save(int, QString)));
139 connect(dlg, SIGNAL(accepted()), this, SLOT(do_close_window()), Qt::QueuedConnection);
140 connect(dlg, SIGNAL(rejected()), this, SLOT(do_close_window()), Qt::QueuedConnection);
141 connect(dlg, SIGNAL(finished(int)), this, SLOT(do_finish(int)), Qt::QueuedConnection);
144 dlg->setModal(false);
151 void Menu_BinaryClass::retranslate_pulldown_menu_device_sub(void)
153 action_insert->setText(QApplication::translate("MenuMedia", "Load", 0));
154 action_insert->setToolTip(QApplication::translate("MenuMedia", "Load memory image from a file.", 0));
155 action_saving->setText(QApplication::translate("MenuMedia", "Save", 0));
156 action_saving->setToolTip(QApplication::translate("MenuMedia", "Save memory image to a file.", 0));
157 action_saving->setIcon(QIcon(":/icon_saveas.png"));
158 //menu_history_save->setTitle(QApplication::translate("MenuMedia", "Recently Saved", 0));
159 menu_history->setTitle(QApplication::translate("MenuMedia", "Recently Loaded", 0));