1
/***************************************************************************
3
(C) 2007 Mean Fixounet@free.fr
4
***************************************************************************/
6
/***************************************************************************
8
* This program is free software; you can redistribute it and/or modify *
9
* it under the terms of the GNU General Public License as published by *
10
* the Free Software Foundation; either version 2 of the License, or *
11
* (at your option) any later version. *
13
***************************************************************************/
24
#include <QMessageBox>
25
#include <QGridLayout>
26
#include <QDialogButtonBox>
27
#include <QDialogButtonBox>
28
#include <QPushButton>
32
#include "ADM_commonUI/DIA_factory.h"
33
#include "ADM_assert.h"
35
class factoryWindow : public QDialog
46
static void insertTab(uint32_t index, diaElemTabs *tab, QTabWidget *wtab);
47
factoryWindow::factoryWindow() : QDialog()
50
//connect( (ui.pushButton),SIGNAL(pressed()),this,SLOT(buttonPressed()));
55
\fn diaFactoryRun(const char *title,uint32_t nb,diaElem **elems)
56
\brief Run a dialog made of nb elems, each elem being described in the **elems
57
@return 0 on failure, 1 on success
60
uint8_t diaFactoryRun(const char *title,uint32_t nb,diaElem **elems)
68
dialog.setWindowTitle(QString::fromUtf8(title));
70
QGridLayout layout(&dialog);
72
/* First compute the size of our window */
77
vsize+=elems[i]->getSize();
84
elems[i]->setMe( (void *)&dialog,&layout,v);
85
v+=elems[i]->getSize();
94
QDialogButtonBox buttonBox((QWidget *)&dialog);
95
buttonBox.setStandardButtons(QDialogButtonBox::Ok
96
| QDialogButtonBox::Cancel);
97
QObject::connect(&buttonBox, SIGNAL(accepted()), &dialog, SLOT(accept()));
98
QObject::connect(&buttonBox, SIGNAL(rejected()), &dialog, SLOT(reject()));
99
layout.addWidget(&buttonBox,vsize,0);
101
dialog.setLayout(&layout);
102
if(dialog.exec()==QDialog::Accepted)
104
for(int i=0;i<nb;i++)
106
ADM_assert(elems[i]);
116
\fn shortkey(const char *in)
117
\brief translate gtk like accelerator (_) to QT4 like accelerator (&)
119
const char *shortkey(const char *in)
121
char *t=ADM_strdup(in);
122
for(int i=0;i<strlen(t);i++)
124
if(t[i]=='_') t[i]='&';
128
uint8_t diaFactoryRunTabs(const char *title,uint32_t nb,diaElemTabs **tabs)
130
factoryWindow dialog;
136
dialog.setWindowTitle(QString::fromUtf8(title));
138
QGridLayout layout(&dialog);
141
QTabWidget wtabs((QWidget *)&dialog);
143
QDialogButtonBox buttonBox((QWidget *)&dialog);
144
buttonBox.setStandardButtons(QDialogButtonBox::Ok
145
| QDialogButtonBox::Cancel);
146
QObject::connect(&buttonBox, SIGNAL(accepted()), &dialog, SLOT(accept()));
147
QObject::connect(&buttonBox, SIGNAL(rejected()), &dialog, SLOT(reject()));
149
for(int i=0;i<nb;i++)
152
insertTab(i,tabs[i],&wtabs);
156
layout.addWidget(&wtabs,0,0);
157
layout.addWidget(&buttonBox,1,0);
159
dialog.setLayout(&layout);
160
if(dialog.exec()==QDialog::Accepted)
163
for(int tab=0;tab<nb;tab++)
165
ADM_assert(tabs[tab]);
166
diaElemTabs *myTab=tabs[tab];
167
for(int i=0;i<myTab->nbElems;i++)
169
myTab->dias[i]->getMe();
179
void insertTab(uint32_t index, diaElemTabs *tab, QTabWidget *wtab)
182
QWidget *wid=new QWidget;
183
QGridLayout *layout=new QGridLayout(wid);
185
/* First compute the size of our window */
187
for(int i=0;i<tab->nbElems;i++)
189
ADM_assert(tab->dias[i]);
190
vsize+=tab->dias[i]->getSize();
194
for(int i=0;i<tab->nbElems;i++)
196
ADM_assert(tab->dias[i]);
197
tab->dias[i]->setMe( wid,layout,v);
198
v+=tab->dias[i]->getSize();
202
wtab->addTab(wid,QString::fromUtf8(tab->title));
203
for(int i=0;i<tab->nbElems;i++)
205
tab->dias[i]->finalize();