@@ -108,23 +108,25 @@ MainWindow::MainWindow() {
108108 sld_enable->setCheckable (true );
109109 sld_enable->setChecked (settings.isSolidify );
110110 // preserve alpha
111- alf_enable = new QAction (" With Alpha" , s_menu);
112- alf_enable->setCheckable (true );
113- alf_enable->setChecked (settings.expAlpha );
111+ // alf_enable = new QAction("With Alpha", s_menu);
112+ // alf_enable->setCheckable(true);
113+ // alf_enable->setChecked(settings.alphaMode == 1 );
114114
115115 QAction* con_enable = new QAction (" Enable Console" , s_menu);
116116 con_enable->setCheckable (true );
117117 con_enable->setChecked (settings.conEnable );
118118
119119 // Submenu
120+ QMenu* alf_submenu = new QMenu (" Alpha/Mask" , s_menu);
120121 QMenu* nm_submenu = new QMenu (" Normalize" , s_menu);
122+ QMenu* rep_submenu = new QMenu (" Repair" , s_menu);
121123 QMenu* rng_submenu = new QMenu (" Floats type" , s_menu);
122124 QMenu* fmt_submenu = new QMenu (" Formats" , s_menu);
123125 QMenu* bit_submenu = new QMenu (" Bits Depth" , s_menu);
124126 QMenu* raw_submenu = new QMenu (" Camera Raw" , s_menu);
125- QMenu* rep_submenu = new QMenu (" Repair" , s_menu);
126127
127128 QActionGroup* NormGroup = new QActionGroup (nm_submenu);
129+ QActionGroup* AlfGroup = new QActionGroup (alf_submenu);
128130 QActionGroup* RepairGroup = new QActionGroup (rep_submenu);
129131 QActionGroup* RangeGroup = new QActionGroup (rng_submenu);
130132 QActionGroup* FrmtGroup = new QActionGroup (fmt_submenu);
@@ -139,6 +141,11 @@ MainWindow::MainWindow() {
139141 menu->addAction (action);
140142 return action;
141143 };
144+ // Alpha/Mask
145+ alf_Disb = createAction (" Disable" , AlfGroup, alf_submenu, true , (settings.alphaMode == 0 ));
146+ alf_Embed = createAction (" Preserve" , AlfGroup, alf_submenu, true , (settings.alphaMode == 1 ));
147+ alf_Only = createAction (" Export" , AlfGroup, alf_submenu, true , (settings.alphaMode == 2 ));
148+
142149 // Normals
143150 nrm_Dis = createAction (" Disable" , NormGroup, nm_submenu, true , (settings.normMode == 0 ));
144151 nrm_Smrt = createAction (" Smart" , NormGroup, nm_submenu, true , (settings.normMode == 1 ));
@@ -187,8 +194,7 @@ MainWindow::MainWindow() {
187194
188195 s_menu->addAction (sld_enable);
189196 s_menu->addSeparator ();
190- s_menu->addAction (alf_enable);
191- s_menu->addSeparator ();
197+ s_menu->addMenu (alf_submenu);
192198 s_menu->addMenu (nm_submenu);
193199 s_menu->addMenu (rep_submenu);
194200 s_menu->addMenu (rng_submenu);
@@ -216,9 +222,12 @@ MainWindow::MainWindow() {
216222
217223 // Connect the Settings action's triggered signal
218224
219- connect (sld_enable, &QAction::toggled, this , &MainWindow::sldfSettings);
220- connect (alf_enable, &QAction::toggled, this , &MainWindow::alfSettings);
221-
225+ // connect(sld_enable, &QAction::toggled, this, &MainWindow::sldfSettings);
226+ // connect(alf_enable, &QAction::toggled, this, &MainWindow::alfSettings);
227+ QList<QAction*> alf_act = { alf_Disb, alf_Embed, alf_Only };
228+ for (QAction* action : alf_act) {
229+ connect (action, &QAction::triggered, this , &MainWindow::alfSettings);
230+ }
222231 QList<QAction*> norm_act = { nrm_Dis, nrm_Smrt, nrm_Force };
223232 for (QAction* action : norm_act) {
224233 connect (action, &QAction::triggered, this , &MainWindow::normSettings);
@@ -377,7 +386,7 @@ void MainWindow::repSettings() {
377386void MainWindow::sldfSettings (bool checked) {
378387 settings.isSolidify = sld_enable->isChecked ();
379388 if (checked) {
380- alf_enable->setChecked (false );
389+ // alf_enable->setChecked(false);
381390 emit updateTextSignal (" Solidify Enabled" );
382391 qDebug () << " Solidify Enabled" ;
383392 emit updateTextSignal (" Export Alpha Disabled" );
@@ -394,16 +403,17 @@ void MainWindow::sldfSettings(bool checked) {
394403 }
395404}
396405
397- void MainWindow::alfSettings (bool checked) {
398- settings.expAlpha = alf_enable->isChecked ();
399- if (checked) {
400- emit updateTextSignal (" Export Alpha Enabled" );
401- qDebug () << " Export Alpha Enabled" ;
402- }
403- else {
404- emit updateTextSignal (" Export Alpha Disabled" );
405- qDebug () << " Export Alpha Disabled" ;
406- }
406+ void MainWindow::alfSettings () {
407+ std::vector<std::pair<QString, uint>> actionMap ={ { " Disable" , 0 }, { " Preserve" , 1 }, { " Export" , 2 } };
408+ QAction* action = qobject_cast<QAction*>(sender ());
409+ for (int i = 0 ; i < actionMap.size (); i++) {
410+ if (action->text () == actionMap[i].first ) {
411+ settings.alphaMode = actionMap[i].second ;
412+ emit updateTextSignal (QString (" Alpha/Mask set to %1" ).arg (actionMap[i].first ));
413+ qDebug () << QString (" Alpha/Mask set to %1" ).arg (actionMap[i].first );
414+ break ;
415+ }
416+ }
407417}
408418
409419void MainWindow::rngSettings () {
0 commit comments