overworked password generation dialog, enabled yarrow and entropy collection,
some work on the integration plugins, plugin settings tab is finished git-svn-id: https://svn.code.sf.net/p/keepassx/code/trunk@119 b624d157-de02-0410-bad0-e51aec6abb33
This commit is contained in:
parent
7e54d5f317
commit
08d9ff59c9
|
@ -57,7 +57,7 @@ enum IntegrPluginType{NONE,KDE,GNOME};
|
||||||
bool ShowStatusbar;
|
bool ShowStatusbar;
|
||||||
bool AlternatingRowColors;
|
bool AlternatingRowColors;
|
||||||
QString MountDir;
|
QString MountDir;
|
||||||
bool RememberLastKey; //location and type, not the key itself
|
bool RememberLastKey;
|
||||||
tKeyType LastKeyType;
|
tKeyType LastKeyType;
|
||||||
QString LastKeyLocation;
|
QString LastKeyLocation;
|
||||||
int ToolbarIconSize;
|
int ToolbarIconSize;
|
||||||
|
|
|
@ -361,8 +361,12 @@ void CEditEntryDlg::OnDeleteAttachment()
|
||||||
|
|
||||||
void CEditEntryDlg::OnButtonGenPw()
|
void CEditEntryDlg::OnButtonGenPw()
|
||||||
{
|
{
|
||||||
CGenPwDialog* pDlg=new CGenPwDialog(this,true);
|
CGenPwDialog dlg(this,true);
|
||||||
pDlg->show();
|
if(dlg.exec()){
|
||||||
|
Edit_Password->setText(dlg.Edit_dest->text());
|
||||||
|
Edit_Password_w->setText(dlg.Edit_dest->text());
|
||||||
|
ModFlag=true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -18,37 +18,91 @@
|
||||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#include <fstream>
|
#include <QSpinBox>
|
||||||
#include <qspinbox.h>
|
#include <QMessageBox>
|
||||||
#include <qmessagebox.h>
|
#include <QRadioButton>
|
||||||
#include "PasswordGenDlg.h"
|
#include <QLineEdit>
|
||||||
#include <qradiobutton.h>
|
#include <QCheckBox>
|
||||||
#include <qlineedit.h>
|
|
||||||
#include <qcheckbox.h>
|
|
||||||
#include <QProgressBar>
|
#include <QProgressBar>
|
||||||
|
#include <QPainter>
|
||||||
|
#include <math.h>
|
||||||
|
#include "PasswordGenDlg.h"
|
||||||
|
#include "CollectEntropyDlg.h"
|
||||||
|
#include "crypto/yarrow.h"
|
||||||
|
#include "PwmConfig.h"
|
||||||
|
|
||||||
CGenPwDialog::CGenPwDialog(QWidget* parent, bool modal, Qt::WFlags fl)
|
bool CGenPwDialog::EntropyCollected=false;
|
||||||
|
|
||||||
|
CGenPwDialog::CGenPwDialog(QWidget* parent, bool StandAloneMode,Qt::WFlags fl)
|
||||||
: QDialog(parent,fl)
|
: QDialog(parent,fl)
|
||||||
{
|
{
|
||||||
setupUi(this);
|
setupUi(this);
|
||||||
createBanner(Banner,Icon_Key32x32,tr("Password Generator"));
|
createBanner(&BannerPixmap,Icon_Key32x32,tr("Password Generator"),width());
|
||||||
Radio_1->setChecked(true);
|
|
||||||
Edit_chars->setDisabled(true);
|
|
||||||
connect(ButtonGenerate,SIGNAL(clicked()),this,SLOT(OnGeneratePw()));
|
connect(ButtonGenerate,SIGNAL(clicked()),this,SLOT(OnGeneratePw()));
|
||||||
connect(Radio_1,SIGNAL(toggled(bool)),this,SLOT(OnRadio1StateChanged(bool)));
|
connect(Radio_1,SIGNAL(toggled(bool)),this,SLOT(OnRadio1StateChanged(bool)));
|
||||||
connect(Radio_2,SIGNAL(toggled(bool)),this,SLOT(OnRadio2StateChanged(bool)));
|
connect(Radio_2,SIGNAL(toggled(bool)),this,SLOT(OnRadio2StateChanged(bool)));
|
||||||
connect(Button_Cancel,SIGNAL(clicked()),this,SLOT(OnCancel()));
|
connect(DialogButtons,SIGNAL(rejected()),this,SLOT(OnCancel()));
|
||||||
connect(ButtonOK,SIGNAL(clicked()),this,SLOT(OnAccept()));
|
connect(DialogButtons,SIGNAL(accepted()),this,SLOT(OnAccept()));
|
||||||
|
connect(checkBox1,SIGNAL(clicked()),this,SLOT(estimateQuality()));
|
||||||
|
connect(checkBox2,SIGNAL(clicked()),this,SLOT(estimateQuality()));
|
||||||
|
connect(checkBox3,SIGNAL(clicked()),this,SLOT(estimateQuality()));
|
||||||
|
connect(checkBox4,SIGNAL(clicked()),this,SLOT(estimateQuality()));
|
||||||
|
connect(checkBox5,SIGNAL(clicked()),this,SLOT(estimateQuality()));
|
||||||
|
connect(checkBox6,SIGNAL(clicked()),this,SLOT(estimateQuality()));
|
||||||
|
connect(checkBox7,SIGNAL(clicked()),this,SLOT(estimateQuality()));
|
||||||
|
connect(Spin_Num,SIGNAL(valueChanged(int)),this,SLOT(estimateQuality()));
|
||||||
|
connect(Check_CollectEntropy,SIGNAL(stateChanged(int)),this,SLOT(OnCollectEntropyChanged(int)));
|
||||||
|
connect(Edit_chars,SIGNAL(textChanged(const QString&)),this,SLOT(estimateQuality()));
|
||||||
|
|
||||||
|
if(StandAloneMode){
|
||||||
|
AcceptButton=DialogButtons->addButton(tr("Accept"),QDialogButtonBox::AcceptRole);
|
||||||
|
AcceptButton->setDisabled(true);
|
||||||
|
DialogButtons->addButton(QDialogButtonBox::Cancel);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
DialogButtons->addButton(tr("OK"),QDialogButtonBox::AcceptRole);
|
||||||
|
AcceptButton=NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
CGenPwDialog::~CGenPwDialog()
|
Radio_1->setChecked(config.PwGenOptions[0]);
|
||||||
{
|
Edit_chars->setDisabled(config.PwGenOptions[0]);
|
||||||
|
checkBox1->setChecked(config.PwGenOptions[1]);
|
||||||
|
checkBox2->setChecked(config.PwGenOptions[2]);
|
||||||
|
checkBox3->setChecked(config.PwGenOptions[3]);
|
||||||
|
checkBox4->setChecked(config.PwGenOptions[4]);
|
||||||
|
checkBox5->setChecked(config.PwGenOptions[5]);
|
||||||
|
checkBox6->setChecked(config.PwGenOptions[6]);
|
||||||
|
checkBox7->setChecked(config.PwGenOptions[7]);
|
||||||
|
Check_CollectEntropy->setChecked(config.PwGenOptions[8]);
|
||||||
|
Check_CollectOncePerSession->setChecked(config.PwGenOptions[9]);
|
||||||
|
estimateQuality();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
CGenPwDialog::~CGenPwDialog(){
|
||||||
|
config.PwGenOptions[0]=Radio_1->isChecked();
|
||||||
|
config.PwGenOptions[1]=checkBox1->isChecked();
|
||||||
|
config.PwGenOptions[2]=checkBox2->isChecked();
|
||||||
|
config.PwGenOptions[3]=checkBox3->isChecked();
|
||||||
|
config.PwGenOptions[4]=checkBox4->isChecked();
|
||||||
|
config.PwGenOptions[5]=checkBox5->isChecked();
|
||||||
|
config.PwGenOptions[6]=checkBox6->isChecked();
|
||||||
|
config.PwGenOptions[7]=checkBox7->isChecked();
|
||||||
|
config.PwGenOptions[8]=Check_CollectEntropy->isChecked();
|
||||||
|
config.PwGenOptions[9]=Check_CollectOncePerSession->isChecked();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CGenPwDialog::paintEvent(QPaintEvent *event){
|
||||||
|
QDialog::paintEvent(event);
|
||||||
|
QPainter painter(this);
|
||||||
|
painter.setClipRegion(event->region());
|
||||||
|
painter.drawPixmap(QPoint(0,0),BannerPixmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGenPwDialog::OnRadio1StateChanged(bool state)
|
void CGenPwDialog::OnRadio1StateChanged(bool state)
|
||||||
{
|
{
|
||||||
if(state){
|
if(state){
|
||||||
Radio_2->setChecked(false);
|
|
||||||
checkBox1->setEnabled(true);
|
checkBox1->setEnabled(true);
|
||||||
checkBox2->setEnabled(true);
|
checkBox2->setEnabled(true);
|
||||||
checkBox3->setEnabled(true);
|
checkBox3->setEnabled(true);
|
||||||
|
@ -56,9 +110,7 @@ if(state){
|
||||||
checkBox5->setEnabled(true);
|
checkBox5->setEnabled(true);
|
||||||
checkBox6->setEnabled(true);
|
checkBox6->setEnabled(true);
|
||||||
checkBox7->setEnabled(true);
|
checkBox7->setEnabled(true);
|
||||||
checkBox8->setEnabled(true);
|
|
||||||
}else{
|
}else{
|
||||||
if(Radio_2->isChecked()==false)Radio_2->setChecked(true);
|
|
||||||
checkBox1->setDisabled(true);
|
checkBox1->setDisabled(true);
|
||||||
checkBox2->setDisabled(true);
|
checkBox2->setDisabled(true);
|
||||||
checkBox3->setDisabled(true);
|
checkBox3->setDisabled(true);
|
||||||
|
@ -66,130 +118,93 @@ if(state){
|
||||||
checkBox5->setDisabled(true);
|
checkBox5->setDisabled(true);
|
||||||
checkBox6->setDisabled(true);
|
checkBox6->setDisabled(true);
|
||||||
checkBox7->setDisabled(true);
|
checkBox7->setDisabled(true);
|
||||||
checkBox8->setDisabled(true);
|
}
|
||||||
|
estimateQuality();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
void CGenPwDialog::OnRadio2StateChanged(bool state){
|
||||||
|
if(state)
|
||||||
void CGenPwDialog::OnRadio2StateChanged(bool state)
|
|
||||||
{
|
|
||||||
if(state){
|
|
||||||
Radio_1->setChecked(false);
|
|
||||||
Edit_chars->setEnabled(true);
|
Edit_chars->setEnabled(true);
|
||||||
}
|
else
|
||||||
else{
|
|
||||||
if(Radio_1->isChecked()==false)Radio_1->setChecked(true);
|
|
||||||
Edit_chars->setDisabled(true);
|
Edit_chars->setDisabled(true);
|
||||||
}
|
|
||||||
|
|
||||||
|
estimateQuality();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGenPwDialog::OnGeneratePw()
|
void CGenPwDialog::OnGeneratePw()
|
||||||
{
|
{
|
||||||
/*
|
/*-------------------------------------------------------
|
||||||
-------
|
|
||||||
ASCII
|
ASCII
|
||||||
-------
|
-------------------------------------------------------
|
||||||
"A...Z" 65...90
|
"A...Z" 65...90
|
||||||
"a...z" 97...122
|
"a...z" 97...122
|
||||||
"0...9" 48...57
|
"0...9" 48...57
|
||||||
Special Charakters 33...47; 58...64; 91...96; 123...126
|
Special Charakters 33...47; 58...64; 91...96; 123...126
|
||||||
"-" 45
|
"-" 45
|
||||||
"_" 95
|
"_" 95
|
||||||
ANSI >127
|
-------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int num=0;
|
int num=0;
|
||||||
char assoctable[255];
|
char assoctable[255];
|
||||||
|
|
||||||
if(Radio_1->isChecked()){
|
if(Radio_1->isChecked()){
|
||||||
if(checkBox1->isChecked()){
|
if(checkBox1->isChecked())
|
||||||
num+=AddToAssoctable(assoctable,65,90,num);
|
num+=AddToAssoctable(assoctable,65,90,num);
|
||||||
}
|
if(checkBox2->isChecked())
|
||||||
|
|
||||||
if(checkBox2->isChecked()){
|
|
||||||
num+=AddToAssoctable(assoctable,97,122,num);
|
num+=AddToAssoctable(assoctable,97,122,num);
|
||||||
}
|
if(checkBox3->isChecked())
|
||||||
|
|
||||||
if(checkBox3->isChecked()){
|
|
||||||
num+=AddToAssoctable(assoctable,48,57,num);
|
num+=AddToAssoctable(assoctable,48,57,num);
|
||||||
}
|
|
||||||
|
|
||||||
if(checkBox4->isChecked()){
|
if(checkBox4->isChecked()){
|
||||||
num+=AddToAssoctable(assoctable,33,47,num);
|
num+=AddToAssoctable(assoctable,33,47,num);
|
||||||
num+=AddToAssoctable(assoctable,58,64,num);
|
num+=AddToAssoctable(assoctable,58,64,num);
|
||||||
num+=AddToAssoctable(assoctable,91,96,num);
|
num+=AddToAssoctable(assoctable,91,96,num);
|
||||||
num+=AddToAssoctable(assoctable,123,126,num);
|
num+=AddToAssoctable(assoctable,123,126,num);}
|
||||||
}
|
if(checkBox5->isChecked())
|
||||||
|
|
||||||
if(checkBox5->isChecked()){
|
|
||||||
num+=AddToAssoctable(assoctable,32,32,num);
|
num+=AddToAssoctable(assoctable,32,32,num);
|
||||||
}
|
if(checkBox6->isChecked() && !checkBox4->isChecked())
|
||||||
|
|
||||||
|
|
||||||
if(checkBox6->isChecked() && !checkBox4->isChecked()){
|
|
||||||
num+=AddToAssoctable(assoctable,45,45,num);
|
num+=AddToAssoctable(assoctable,45,45,num);
|
||||||
}
|
if(checkBox7->isChecked() && !checkBox4->isChecked())
|
||||||
|
|
||||||
if(checkBox7->isChecked() && !checkBox4->isChecked()){
|
|
||||||
num+=AddToAssoctable(assoctable,95,95,num);
|
num+=AddToAssoctable(assoctable,95,95,num);
|
||||||
}
|
}
|
||||||
|
else{
|
||||||
if(checkBox8->isChecked()){
|
|
||||||
num+=AddToAssoctable(assoctable,128,255,num);
|
|
||||||
}
|
|
||||||
}else
|
|
||||||
{
|
|
||||||
QString str=Edit_chars->text();
|
QString str=Edit_chars->text();
|
||||||
int i=0;
|
for(int i=0;i<str.length();i++){
|
||||||
while(str.length()>0){
|
assoctable[i]=str[i].toAscii();
|
||||||
assoctable[i]=((QChar)str[0]).toAscii();
|
|
||||||
str.remove(str[0]);
|
|
||||||
i++;
|
|
||||||
num++;
|
num++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(num==0){
|
if(num==0){
|
||||||
if(Radio_2->isChecked())QMessageBox::information(this,tr("Notice"),tr("You need to enter at least one character"),tr("OK"));
|
if(Radio_2->isChecked())
|
||||||
else QMessageBox::information(this,tr("Notice"),QString::fromUtf8("You need to select at least one character group."),"OK");
|
QMessageBox::information(this,tr("Notice"),tr("You need to enter at least one character"),tr("OK"));
|
||||||
|
else
|
||||||
|
QMessageBox::information(this,tr("Notice"),QString::fromUtf8("You need to select at least one character group."),"OK");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int length=Spin_Num->value();
|
int length=Spin_Num->value();
|
||||||
char* buffer=new char[length+1];
|
char* buffer=new char[length+1];
|
||||||
buffer[length]=0;
|
buffer[length]=0;
|
||||||
FILE *dev_random;
|
|
||||||
if(Check_strongrandom->isChecked()){
|
|
||||||
dev_random = fopen("/dev/random","r");}
|
|
||||||
else
|
|
||||||
{dev_random = fopen("/dev/urandom","r");}
|
|
||||||
|
|
||||||
if (dev_random==NULL){
|
if(Check_CollectEntropy->isChecked()){
|
||||||
QMessageBox::critical(this,tr("Error"),tr("Could not open '/dev/random' or '/dev/urandom'."),tr("OK"));
|
if((Check_CollectOncePerSession->isChecked() && !EntropyCollected) || !Check_CollectOncePerSession->isChecked()){
|
||||||
return;
|
CollectEntropyDlg dlg(this);
|
||||||
|
dlg.exec();
|
||||||
|
EntropyCollected=true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
unsigned char tmp;
|
|
||||||
|
|
||||||
|
unsigned char tmp;
|
||||||
for(int i=0;i<length;i++){
|
for(int i=0;i<length;i++){
|
||||||
|
|
||||||
do{
|
do randomize(&tmp,1);
|
||||||
fread(&tmp,1,1,dev_random);
|
while(!trim(tmp,num));
|
||||||
}while(trim(tmp,num)==false);
|
|
||||||
|
|
||||||
buffer[i]=assoctable[tmp];
|
buffer[i]=assoctable[tmp];
|
||||||
}
|
}
|
||||||
|
|
||||||
Edit_dest->setText(buffer);
|
Edit_dest->setText(buffer);
|
||||||
delete [] buffer;
|
delete [] buffer;
|
||||||
fclose(dev_random);
|
if(AcceptButton)AcceptButton->setEnabled(true);
|
||||||
|
|
||||||
int bits;
|
|
||||||
if(checkBox8->isChecked())bits=length*8;
|
|
||||||
else bits=length*7;
|
|
||||||
Label_Bits->setText(tr("%1 Bit").arg(QString::number(bits)));
|
|
||||||
if(bits>128)bits=128;
|
|
||||||
Progress_Quali->setRange(0,128);
|
|
||||||
Progress_Quali->setValue(bits);
|
|
||||||
Progress_Quali->setTextVisible(false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int CGenPwDialog::AddToAssoctable(char* table,int start,int end,int pos){
|
int CGenPwDialog::AddToAssoctable(char* table,int start,int end,int pos){
|
||||||
|
@ -202,30 +217,58 @@ return (end-start)+1;
|
||||||
|
|
||||||
|
|
||||||
bool CGenPwDialog::trim(unsigned char &x, int r){
|
bool CGenPwDialog::trim(unsigned char &x, int r){
|
||||||
if(x<r)return true;
|
if(x<r)
|
||||||
if(256%r!=0)return false;
|
return true;
|
||||||
|
if(256%r!=0)
|
||||||
|
return false;
|
||||||
x=x-(x/r)*r;
|
x=x-(x/r)*r;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CGenPwDialog::estimateQuality(){
|
||||||
|
int num=0;
|
||||||
|
if(Radio_1->isChecked()){
|
||||||
|
if(checkBox1->isChecked())
|
||||||
|
num+=26;
|
||||||
|
if(checkBox2->isChecked())
|
||||||
|
num+=26;
|
||||||
|
if(checkBox3->isChecked())
|
||||||
|
num+=10;
|
||||||
|
if(checkBox4->isChecked())
|
||||||
|
num+=32;
|
||||||
|
if(checkBox5->isChecked())
|
||||||
|
num++;
|
||||||
|
if(checkBox6->isChecked() && !checkBox4->isChecked())
|
||||||
|
num++;
|
||||||
|
if(checkBox7->isChecked() && !checkBox4->isChecked())
|
||||||
|
num++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
num=Edit_chars->text().length();
|
||||||
|
|
||||||
|
float bits=0;
|
||||||
|
if(num)bits=log(num)/log(2);
|
||||||
|
bits=bits*((float)Spin_Num->value());
|
||||||
|
Progress_Quali->setFormat(tr("%1 Bits").arg((int)bits));
|
||||||
|
Progress_Quali->update();
|
||||||
|
if(bits>128)bits=128;
|
||||||
|
Progress_Quali->setValue(bits);
|
||||||
|
}
|
||||||
|
|
||||||
void CGenPwDialog::OnAccept()
|
void CGenPwDialog::OnAccept()
|
||||||
{
|
{
|
||||||
((CEditEntryDlg*)parentWidget())->Edit_Password->setText(Edit_dest->text());
|
done(1);
|
||||||
((CEditEntryDlg*)parentWidget())->Edit_Password_w->setText(Edit_dest->text());
|
|
||||||
((CEditEntryDlg*)parentWidget())->ModFlag=true;
|
|
||||||
close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGenPwDialog::OnCancel()
|
void CGenPwDialog::OnCancel()
|
||||||
{
|
{
|
||||||
close();
|
done(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CGenPwDialog::OnCollectEntropyChanged(int state){
|
||||||
|
if(state==Qt::Checked)
|
||||||
|
Check_CollectOncePerSession->setDisabled(false);
|
||||||
|
else
|
||||||
|
Check_CollectOncePerSession->setDisabled(true);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/*$SPECIALIZATION$*/
|
|
||||||
|
|
||||||
|
|
||||||
//#include "genpwdialog.moc"
|
|
||||||
|
|
||||||
|
|
|
@ -17,39 +17,40 @@
|
||||||
* Free Software Foundation, Inc., *
|
* Free Software Foundation, Inc., *
|
||||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
#include "main.h"
|
|
||||||
#ifndef GENPWDIALOG_H
|
#ifndef GENPWDIALOG_H
|
||||||
#define GENPWDIALOG_H
|
#define GENPWDIALOG_H
|
||||||
|
|
||||||
|
#include <QPixmap>
|
||||||
|
#include <QPaintEvent>
|
||||||
#include "ui_PasswordGenDlg.h"
|
#include "ui_PasswordGenDlg.h"
|
||||||
|
#include "main.h"
|
||||||
#include "EditEntryDlg.h"
|
#include "EditEntryDlg.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class CGenPwDialog : public QDialog, public Ui_GenPwDlg
|
class CGenPwDialog : public QDialog, public Ui_GenPwDlg
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
CGenPwDialog(QWidget* parent = 0, bool ShowCancelButton=false, Qt::WFlags fl = 0 );
|
||||||
|
~CGenPwDialog();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int AddToAssoctable(char* table,int start,int end,int pos);
|
int AddToAssoctable(char* table,int start,int end,int pos);
|
||||||
bool trim(unsigned char &value,int range);
|
bool trim(unsigned char &value,int range);
|
||||||
public:
|
virtual void paintEvent(QPaintEvent* event);
|
||||||
CGenPwDialog(QWidget* parent = 0, bool modal = FALSE, Qt::WFlags fl = 0 );
|
QPixmap BannerPixmap;
|
||||||
~CGenPwDialog();
|
static bool EntropyCollected;
|
||||||
/*$PUBLIC_FUNCTIONS$*/
|
QPushButton* AcceptButton;
|
||||||
|
|
||||||
public slots:
|
private slots:
|
||||||
/*$PUBLIC_SLOTS$*/
|
|
||||||
|
|
||||||
protected:
|
|
||||||
/*$PROTECTED_FUNCTIONS$*/
|
|
||||||
|
|
||||||
protected slots:
|
|
||||||
/*$PROTECTED_SLOTS$*/
|
|
||||||
public slots:
|
|
||||||
virtual void OnGeneratePw();
|
virtual void OnGeneratePw();
|
||||||
virtual void OnRadio2StateChanged(bool);
|
virtual void OnRadio2StateChanged(bool);
|
||||||
virtual void OnRadio1StateChanged(bool);
|
virtual void OnRadio1StateChanged(bool);
|
||||||
virtual void OnCancel();
|
virtual void OnCancel();
|
||||||
virtual void OnAccept();
|
virtual void OnAccept();
|
||||||
|
void estimateQuality();
|
||||||
|
void OnCollectEntropyChanged(int);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -30,18 +30,27 @@
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include "SettingsDlg.h"
|
#include "SettingsDlg.h"
|
||||||
|
|
||||||
|
bool CSettingsDlg::PluginsModified=false;
|
||||||
|
|
||||||
CSettingsDlg::CSettingsDlg(QWidget* parent)
|
|
||||||
: QDialog(parent,Qt::Dialog)
|
CSettingsDlg::CSettingsDlg(QWidget* parent):QDialog(parent,Qt::Dialog)
|
||||||
{
|
{
|
||||||
setupUi(this);
|
setupUi(this);
|
||||||
connect(DialogButtons, SIGNAL( accepted() ), this, SLOT( OnOK() ) );
|
connect(DialogButtons, SIGNAL( accepted() ), this, SLOT( OnOK() ) );
|
||||||
connect(DialogButtons, SIGNAL( rejected() ), this, SLOT( OnCancel() ) );
|
connect(DialogButtons, SIGNAL( rejected() ), this, SLOT( OnCancel() ) );
|
||||||
|
connect(DialogButtons, SIGNAL( clicked(QAbstractButton*)), this, SLOT(OnOtherButton(QAbstractButton*)));
|
||||||
|
|
||||||
connect(ButtonColor1, SIGNAL( clicked() ), this, SLOT( OnColor1() ) );
|
connect(ButtonColor1, SIGNAL( clicked() ), this, SLOT( OnColor1() ) );
|
||||||
connect(ButtonColor2, SIGNAL( clicked() ), this, SLOT( OnColor2() ) );
|
connect(ButtonColor2, SIGNAL( clicked() ), this, SLOT( OnColor2() ) );
|
||||||
connect(ButtonTextColor, SIGNAL( clicked() ), this, SLOT( OnTextColor() ) );
|
connect(ButtonTextColor, SIGNAL( clicked() ), this, SLOT( OnTextColor() ) );
|
||||||
connect(CheckBox_OpenLast,SIGNAL(stateChanged(int)),this,SLOT(OnCeckBoxOpenLastChanged(int)));
|
connect(CheckBox_OpenLast,SIGNAL(stateChanged(int)),this,SLOT(OnCeckBoxOpenLastChanged(int)));
|
||||||
connect(Button_MountDirBrowse,SIGNAL(clicked()),this,SLOT(OnMountDirBrowse()));
|
connect(Button_MountDirBrowse,SIGNAL(clicked()),this,SLOT(OnMountDirBrowse()));
|
||||||
|
|
||||||
|
connect(Radio_IntPlugin_None,SIGNAL(toggled(bool)),this,SLOT(OnIntPluginNone(bool)));
|
||||||
|
connect(Radio_IntPlugin_Gnome,SIGNAL(toggled(bool)),this,SLOT(OnIntPluginGnome(bool)));
|
||||||
|
connect(Radio_IntPlugin_Kde,SIGNAL(toggled(bool)),this,SLOT(OnIntPluginKde(bool)));
|
||||||
|
|
||||||
|
|
||||||
createBanner(&BannerPixmap,Icon_Settings32x32,tr("Settings"),width());
|
createBanner(&BannerPixmap,Icon_Settings32x32,tr("Settings"),width());
|
||||||
CheckBox_OpenLast->setChecked(config.OpenLast);
|
CheckBox_OpenLast->setChecked(config.OpenLast);
|
||||||
SpinBox_ClipboardTime->setValue(config.ClipboardTimeOut);
|
SpinBox_ClipboardTime->setValue(config.ClipboardTimeOut);
|
||||||
|
@ -70,6 +79,21 @@ CheckBox_ExpandGroupTree->setChecked(config.ExpandGroupTree);
|
||||||
CheckBox_AlternatingRowColors->setChecked(config.AlternatingRowColors);
|
CheckBox_AlternatingRowColors->setChecked(config.AlternatingRowColors);
|
||||||
Edit_MountDir->setText(config.MountDir);
|
Edit_MountDir->setText(config.MountDir);
|
||||||
CheckBox_RememberLastKey->setChecked(config.RememberLastKey);
|
CheckBox_RememberLastKey->setChecked(config.RememberLastKey);
|
||||||
|
|
||||||
|
if(PluginLoadError==QString())
|
||||||
|
Label_IntPlugin_Error->hide();
|
||||||
|
else
|
||||||
|
Label_IntPlugin_Error->setText(QString("<html><p style='font-weight:600; color:#8b0000;'>%1</p></body></html>")
|
||||||
|
.arg(tr("Error: %1")).arg(PluginLoadError));
|
||||||
|
|
||||||
|
switch(config.IntegrPlugin){
|
||||||
|
case CConfig::NONE: Radio_IntPlugin_None->setChecked(true); break;
|
||||||
|
case CConfig::GNOME: Radio_IntPlugin_Gnome->setChecked(true); break;
|
||||||
|
case CConfig::KDE: Radio_IntPlugin_Kde->setChecked(true); break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!PluginsModified)
|
||||||
|
Label_IntPlugin_Info->hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
CSettingsDlg::~CSettingsDlg()
|
CSettingsDlg::~CSettingsDlg()
|
||||||
|
@ -83,8 +107,25 @@ void CSettingsDlg::paintEvent(QPaintEvent *event){
|
||||||
painter.drawPixmap(QPoint(0,0),BannerPixmap);
|
painter.drawPixmap(QPoint(0,0),BannerPixmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void CSettingsDlg::OnOK()
|
void CSettingsDlg::OnOK()
|
||||||
{
|
{
|
||||||
|
apply();
|
||||||
|
close();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSettingsDlg::OnCancel()
|
||||||
|
{
|
||||||
|
close();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSettingsDlg::OnOtherButton(QAbstractButton* button){
|
||||||
|
if(DialogButtons->buttonRole(button)==QDialogButtonBox::ApplyRole)
|
||||||
|
apply();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSettingsDlg::apply(){
|
||||||
config.OpenLast=CheckBox_OpenLast->isChecked();
|
config.OpenLast=CheckBox_OpenLast->isChecked();
|
||||||
config.ClipboardTimeOut=SpinBox_ClipboardTime->value();
|
config.ClipboardTimeOut=SpinBox_ClipboardTime->value();
|
||||||
config.BannerColor1=color1;
|
config.BannerColor1=color1;
|
||||||
|
@ -98,17 +139,14 @@ config.MountDir=Edit_MountDir->text();
|
||||||
if(config.MountDir!="" && config.MountDir.right(1)!="/")
|
if(config.MountDir!="" && config.MountDir.right(1)!="/")
|
||||||
config.MountDir+="/";
|
config.MountDir+="/";
|
||||||
config.RememberLastKey=CheckBox_RememberLastKey->isChecked();
|
config.RememberLastKey=CheckBox_RememberLastKey->isChecked();
|
||||||
close();
|
PluginsModified=Label_IntPlugin_Info->isVisible();
|
||||||
}
|
if(Radio_IntPlugin_None->isChecked())config.IntegrPlugin=CConfig::NONE;
|
||||||
|
if(Radio_IntPlugin_Gnome->isChecked())config.IntegrPlugin=CConfig::GNOME;
|
||||||
void CSettingsDlg::OnCancel()
|
if(Radio_IntPlugin_Kde->isChecked())config.IntegrPlugin=CConfig::KDE;
|
||||||
{
|
|
||||||
close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSettingsDlg::OnTextColor()
|
void CSettingsDlg::OnTextColor()
|
||||||
{
|
{
|
||||||
|
|
||||||
QColor c=QColorDialog::getColor(textcolor,this);
|
QColor c=QColorDialog::getColor(textcolor,this);
|
||||||
if(c.isValid()){
|
if(c.isValid()){
|
||||||
textcolor=c;
|
textcolor=c;
|
||||||
|
@ -116,10 +154,8 @@ QPixmap *px=new QPixmap(pixmTextColor->width(),pixmTextColor->height());
|
||||||
px->fill(c);
|
px->fill(c);
|
||||||
pixmTextColor->clear();
|
pixmTextColor->clear();
|
||||||
pixmTextColor->setPixmap(*px);
|
pixmTextColor->setPixmap(*px);
|
||||||
//NICHT VERGESSEN!
|
createBanner(&BannerPixmap,Icon_Settings32x32,tr("Settings"),width(),color1,color2,textcolor);
|
||||||
//createBanner(Banner,Icon_Settings32x32,tr("Settings"),color1,color2,textcolor);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -132,7 +168,7 @@ QPixmap *px=new QPixmap(pixmColor2->width(),pixmColor2->height());
|
||||||
px->fill(c);
|
px->fill(c);
|
||||||
pixmColor2->clear();
|
pixmColor2->clear();
|
||||||
pixmColor2->setPixmap(*px);
|
pixmColor2->setPixmap(*px);
|
||||||
//createBanner(Banner,Icon_Settings32x32,tr("Settings"),color1,color2,textcolor);
|
createBanner(&BannerPixmap,Icon_Settings32x32,tr("Settings"),width(),color1,color2,textcolor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -146,7 +182,7 @@ QPixmap *px=new QPixmap(pixmColor1->width(),pixmColor1->height());
|
||||||
px->fill(c);
|
px->fill(c);
|
||||||
pixmColor1->clear();
|
pixmColor1->clear();
|
||||||
pixmColor1->setPixmap(*px);
|
pixmColor1->setPixmap(*px);
|
||||||
//createBanner(Banner,Icon_Settings32x32,tr("Settings"),color1,color2,textcolor);
|
createBanner(&BannerPixmap,Icon_Settings32x32,tr("Settings"),width(),color1,color2,textcolor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -165,3 +201,15 @@ if(dir!=QString()){
|
||||||
Edit_MountDir->setText(dir);
|
Edit_MountDir->setText(dir);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSettingsDlg::OnIntPluginNone(bool toggled){
|
||||||
|
Label_IntPlugin_Info->show();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSettingsDlg::OnIntPluginGnome(bool toggled){
|
||||||
|
Label_IntPlugin_Info->show();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSettingsDlg::OnIntPluginKde(bool toggled){
|
||||||
|
Label_IntPlugin_Info->show();
|
||||||
|
}
|
|
@ -41,13 +41,20 @@ class CSettingsDlg : public QDialog, public Ui_SettingsDialog
|
||||||
virtual void OnTextColor();
|
virtual void OnTextColor();
|
||||||
virtual void OnColor2();
|
virtual void OnColor2();
|
||||||
virtual void OnColor1();
|
virtual void OnColor1();
|
||||||
|
void OnOtherButton(QAbstractButton*);
|
||||||
|
void OnIntPluginNone(bool);
|
||||||
|
void OnIntPluginGnome(bool);
|
||||||
|
void OnIntPluginKde(bool);
|
||||||
void OnCeckBoxOpenLastChanged(int state);
|
void OnCeckBoxOpenLastChanged(int state);
|
||||||
void OnMountDirBrowse();
|
void OnMountDirBrowse();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual void paintEvent(QPaintEvent*);
|
virtual void paintEvent(QPaintEvent*);
|
||||||
|
void apply();
|
||||||
QColor color1,color2,textcolor;
|
QColor color1,color2,textcolor;
|
||||||
QPixmap BannerPixmap;
|
QPixmap BannerPixmap;
|
||||||
|
static bool PluginsModified;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -80,9 +80,6 @@ Please move the mouse and/or press some keys until enought entropy for a reseed
|
||||||
<property name="orientation" >
|
<property name="orientation" >
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="format" >
|
|
||||||
<string>%v Bits</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
|
|
|
@ -32,176 +32,82 @@
|
||||||
<property name="windowTitle" >
|
<property name="windowTitle" >
|
||||||
<string>Password Generator</string>
|
<string>Password Generator</string>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QProgressBar" name="Progress_Quali" >
|
<layout class="QVBoxLayout" >
|
||||||
<property name="geometry" >
|
<property name="margin" >
|
||||||
<rect>
|
<number>9</number>
|
||||||
<x>130</x>
|
|
||||||
<y>400</y>
|
|
||||||
<width>180</width>
|
|
||||||
<height>15</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
</property>
|
||||||
|
<property name="spacing" >
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<spacer>
|
||||||
<property name="orientation" >
|
<property name="orientation" >
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Vertical</enum>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
<property name="sizeHint" >
|
||||||
<widget class="QLineEdit" name="Edit_dest" >
|
<size>
|
||||||
<property name="geometry" >
|
<width>20</width>
|
||||||
<rect>
|
<height>50</height>
|
||||||
<x>130</x>
|
</size>
|
||||||
<y>370</y>
|
|
||||||
<width>250</width>
|
|
||||||
<height>21</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</spacer>
|
||||||
<widget class="QLabel" name="Label_Bits" >
|
</item>
|
||||||
<property name="geometry" >
|
<item>
|
||||||
<rect>
|
|
||||||
<x>320</x>
|
|
||||||
<y>399</y>
|
|
||||||
<width>60</width>
|
|
||||||
<height>16</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QPushButton" name="ButtonOK" >
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>263</x>
|
|
||||||
<y>440</y>
|
|
||||||
<width>90</width>
|
|
||||||
<height>25</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>Accep&t</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QPushButton" name="Button_Cancel" >
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>360</x>
|
|
||||||
<y>440</y>
|
|
||||||
<width>90</width>
|
|
||||||
<height>25</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>&Cancel</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QPushButton" name="ButtonGenerate" >
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>381</x>
|
|
||||||
<y>370</y>
|
|
||||||
<width>70</width>
|
|
||||||
<height>21</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>Generate</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QLabel" name="textLabel4" >
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>20</x>
|
|
||||||
<y>370</y>
|
|
||||||
<width>110</width>
|
|
||||||
<height>20</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>New Password:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QLabel" name="textLabel5" >
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>20</x>
|
|
||||||
<y>400</y>
|
|
||||||
<width>110</width>
|
|
||||||
<height>20</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>Quality:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="Line" name="line3" >
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>420</y>
|
|
||||||
<width>460</width>
|
|
||||||
<height>20</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="frameShape" >
|
|
||||||
<enum>QFrame::HLine</enum>
|
|
||||||
</property>
|
|
||||||
<property name="frameShadow" >
|
|
||||||
<enum>QFrame::Sunken</enum>
|
|
||||||
</property>
|
|
||||||
<property name="orientation" >
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QGroupBox" name="groupBox1" >
|
<widget class="QGroupBox" name="groupBox1" >
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>10</x>
|
|
||||||
<y>60</y>
|
|
||||||
<width>440</width>
|
|
||||||
<height>280</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="title" >
|
<property name="title" >
|
||||||
<string>Options</string>
|
<string>Options</string>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QLineEdit" name="Edit_chars" >
|
<layout class="QVBoxLayout" >
|
||||||
<property name="geometry" >
|
<property name="margin" >
|
||||||
<rect>
|
<number>10</number>
|
||||||
<x>30</x>
|
</property>
|
||||||
<y>170</y>
|
<property name="spacing" >
|
||||||
<width>400</width>
|
<number>6</number>
|
||||||
<height>21</height>
|
</property>
|
||||||
</rect>
|
<item>
|
||||||
|
<widget class="QRadioButton" name="Radio_1" >
|
||||||
|
<property name="text" >
|
||||||
|
<string>Use follo&wing character groups:</string>
|
||||||
|
</property>
|
||||||
|
<property name="shortcut" >
|
||||||
|
<string>Alt+W</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QSpinBox" name="Spin_Num" >
|
</item>
|
||||||
<property name="geometry" >
|
<item>
|
||||||
<rect>
|
<layout class="QHBoxLayout" >
|
||||||
<x>120</x>
|
<property name="margin" >
|
||||||
<y>220</y>
|
<number>0</number>
|
||||||
<width>310</width>
|
|
||||||
<height>21</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="maximum" >
|
<property name="spacing" >
|
||||||
<number>1000</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="minimum" >
|
<item>
|
||||||
<number>1</number>
|
<spacer>
|
||||||
|
<property name="orientation" >
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="value" >
|
<property name="sizeType" >
|
||||||
<number>20</number>
|
<enum>QSizePolicy::Fixed</enum>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
<property name="sizeHint" >
|
||||||
<widget class="QCheckBox" name="checkBox1" >
|
<size>
|
||||||
<property name="geometry" >
|
<width>30</width>
|
||||||
<rect>
|
|
||||||
<x>120</x>
|
|
||||||
<y>40</y>
|
|
||||||
<width>131</width>
|
|
||||||
<height>20</height>
|
<height>20</height>
|
||||||
</rect>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QVBoxLayout" >
|
||||||
|
<property name="margin" >
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="spacing" >
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="checkBox1" >
|
||||||
<property name="text" >
|
<property name="text" >
|
||||||
<string>&Upper Letters</string>
|
<string>&Upper Letters</string>
|
||||||
</property>
|
</property>
|
||||||
|
@ -212,15 +118,9 @@
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
<widget class="QCheckBox" name="checkBox2" >
|
<widget class="QCheckBox" name="checkBox2" >
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>120</x>
|
|
||||||
<y>60</y>
|
|
||||||
<width>140</width>
|
|
||||||
<height>20</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
<property name="text" >
|
||||||
<string>&Lower Letters</string>
|
<string>&Lower Letters</string>
|
||||||
</property>
|
</property>
|
||||||
|
@ -231,15 +131,9 @@
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
<widget class="QCheckBox" name="checkBox3" >
|
<widget class="QCheckBox" name="checkBox3" >
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>120</x>
|
|
||||||
<y>80</y>
|
|
||||||
<width>140</width>
|
|
||||||
<height>20</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
<property name="text" >
|
||||||
<string>&Numbers</string>
|
<string>&Numbers</string>
|
||||||
</property>
|
</property>
|
||||||
|
@ -250,15 +144,9 @@
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
<widget class="QCheckBox" name="checkBox4" >
|
<widget class="QCheckBox" name="checkBox4" >
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>120</x>
|
|
||||||
<y>100</y>
|
|
||||||
<width>140</width>
|
|
||||||
<height>20</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
<property name="text" >
|
||||||
<string>&Special Characters</string>
|
<string>&Special Characters</string>
|
||||||
</property>
|
</property>
|
||||||
|
@ -266,105 +154,19 @@
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QCheckBox" name="checkBox6" >
|
</item>
|
||||||
<property name="geometry" >
|
</layout>
|
||||||
<rect>
|
</item>
|
||||||
<x>260</x>
|
<item>
|
||||||
<y>60</y>
|
<layout class="QVBoxLayout" >
|
||||||
<width>170</width>
|
<property name="margin" >
|
||||||
<height>20</height>
|
<number>0</number>
|
||||||
</rect>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text" >
|
<property name="spacing" >
|
||||||
<string>Minus</string>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
<item>
|
||||||
<widget class="QCheckBox" name="checkBox7" >
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>260</x>
|
|
||||||
<y>80</y>
|
|
||||||
<width>170</width>
|
|
||||||
<height>20</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>U&nderline</string>
|
|
||||||
</property>
|
|
||||||
<property name="shortcut" >
|
|
||||||
<string>Alt+N</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QCheckBox" name="checkBox8" >
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>260</x>
|
|
||||||
<y>100</y>
|
|
||||||
<width>170</width>
|
|
||||||
<height>20</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>h&igher ANSI-Characters</string>
|
|
||||||
</property>
|
|
||||||
<property name="shortcut" >
|
|
||||||
<string>Alt+H</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QRadioButton" name="Radio_2" >
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>10</x>
|
|
||||||
<y>150</y>
|
|
||||||
<width>420</width>
|
|
||||||
<height>16</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>Use &only following characters:</string>
|
|
||||||
</property>
|
|
||||||
<property name="shortcut" >
|
|
||||||
<string>Alt+O</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QLabel" name="textLabel1" >
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>10</x>
|
|
||||||
<y>220</y>
|
|
||||||
<width>110</width>
|
|
||||||
<height>21</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>Length:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QRadioButton" name="Radio_1" >
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>10</x>
|
|
||||||
<y>20</y>
|
|
||||||
<width>420</width>
|
|
||||||
<height>21</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>Use follo&wing character groups:</string>
|
|
||||||
</property>
|
|
||||||
<property name="shortcut" >
|
|
||||||
<string>Alt+W</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QCheckBox" name="checkBox5" >
|
<widget class="QCheckBox" name="checkBox5" >
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>260</x>
|
|
||||||
<y>40</y>
|
|
||||||
<width>170</width>
|
|
||||||
<height>20</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
<property name="text" >
|
||||||
<string>White &Spaces</string>
|
<string>White &Spaces</string>
|
||||||
</property>
|
</property>
|
||||||
|
@ -372,17 +174,202 @@
|
||||||
<string>Alt+S</string>
|
<string>Alt+S</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QCheckBox" name="Check_strongrandom" >
|
</item>
|
||||||
<property name="geometry" >
|
<item>
|
||||||
<rect>
|
<widget class="QCheckBox" name="checkBox6" >
|
||||||
<x>120</x>
|
|
||||||
<y>250</y>
|
|
||||||
<width>310</width>
|
|
||||||
<height>21</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
<property name="text" >
|
||||||
<string>Force entropy collection</string>
|
<string>Minus</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="checkBox7" >
|
||||||
|
<property name="text" >
|
||||||
|
<string>U&nderline</string>
|
||||||
|
</property>
|
||||||
|
<property name="shortcut" >
|
||||||
|
<string>Alt+N</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer>
|
||||||
|
<property name="orientation" >
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" >
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer>
|
||||||
|
<property name="orientation" >
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" >
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QRadioButton" name="Radio_2" >
|
||||||
|
<property name="text" >
|
||||||
|
<string>Use &only following characters:</string>
|
||||||
|
</property>
|
||||||
|
<property name="shortcut" >
|
||||||
|
<string>Alt+O</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" >
|
||||||
|
<property name="margin" >
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="spacing" >
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<spacer>
|
||||||
|
<property name="orientation" >
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType" >
|
||||||
|
<enum>QSizePolicy::Fixed</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" >
|
||||||
|
<size>
|
||||||
|
<width>30</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="Edit_chars" >
|
||||||
|
<property name="maxLength" >
|
||||||
|
<number>255</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer>
|
||||||
|
<property name="orientation" >
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" >
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" >
|
||||||
|
<property name="margin" >
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="spacing" >
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="textLabel1" >
|
||||||
|
<property name="text" >
|
||||||
|
<string>Length:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QSpinBox" name="Spin_Num" >
|
||||||
|
<property name="maximum" >
|
||||||
|
<number>10000</number>
|
||||||
|
</property>
|
||||||
|
<property name="minimum" >
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="value" >
|
||||||
|
<number>20</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer>
|
||||||
|
<property name="orientation" >
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType" >
|
||||||
|
<enum>QSizePolicy::Fixed</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" >
|
||||||
|
<size>
|
||||||
|
<width>10</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="textLabel5" >
|
||||||
|
<property name="text" >
|
||||||
|
<string>Quality:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QProgressBar" name="Progress_Quali" >
|
||||||
|
<property name="sizePolicy" >
|
||||||
|
<sizepolicy>
|
||||||
|
<hsizetype>7</hsizetype>
|
||||||
|
<vsizetype>1</vsizetype>
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize" >
|
||||||
|
<size>
|
||||||
|
<width>16777215</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximum" >
|
||||||
|
<number>128</number>
|
||||||
|
</property>
|
||||||
|
<property name="value" >
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="orientation" >
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" >
|
||||||
|
<property name="margin" >
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="spacing" >
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="Check_CollectEntropy" >
|
||||||
|
<property name="text" >
|
||||||
|
<string>Enable entropy collection</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="shortcut" >
|
<property name="shortcut" >
|
||||||
<string>Alt+M</string>
|
<string>Alt+M</string>
|
||||||
|
@ -391,23 +378,83 @@
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</item>
|
||||||
<widget class="QLabel" name="Banner" >
|
<item>
|
||||||
<property name="geometry" >
|
<widget class="QCheckBox" name="Check_CollectOncePerSession" >
|
||||||
<rect>
|
<property name="text" >
|
||||||
<x>0</x>
|
<string>Collect only once per session</string>
|
||||||
<y>0</y>
|
|
||||||
<width>460</width>
|
|
||||||
<height>50</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="pixmap" >
|
|
||||||
<pixmap/>
|
|
||||||
</property>
|
|
||||||
<property name="scaledContents" >
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer>
|
||||||
|
<property name="orientation" >
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" >
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" >
|
||||||
|
<property name="margin" >
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="spacing" >
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="textLabel4" >
|
||||||
|
<property name="text" >
|
||||||
|
<string>New Password:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="Edit_dest" />
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="ButtonGenerate" >
|
||||||
|
<property name="text" >
|
||||||
|
<string>Generate</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="Line" name="line3" >
|
||||||
|
<property name="frameShape" >
|
||||||
|
<enum>QFrame::HLine</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow" >
|
||||||
|
<enum>QFrame::Sunken</enum>
|
||||||
|
</property>
|
||||||
|
<property name="orientation" >
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QDialogButtonBox" name="DialogButtons" >
|
||||||
|
<property name="orientation" >
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="standardButtons" >
|
||||||
|
<set>QDialogButtonBox::NoButton</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<layoutdefault spacing="6" margin="11" />
|
<layoutdefault spacing="6" margin="11" />
|
||||||
<tabstops>
|
<tabstops>
|
||||||
|
@ -419,15 +466,11 @@
|
||||||
<tabstop>checkBox5</tabstop>
|
<tabstop>checkBox5</tabstop>
|
||||||
<tabstop>checkBox6</tabstop>
|
<tabstop>checkBox6</tabstop>
|
||||||
<tabstop>checkBox7</tabstop>
|
<tabstop>checkBox7</tabstop>
|
||||||
<tabstop>checkBox8</tabstop>
|
|
||||||
<tabstop>Radio_2</tabstop>
|
<tabstop>Radio_2</tabstop>
|
||||||
<tabstop>Edit_chars</tabstop>
|
<tabstop>Edit_chars</tabstop>
|
||||||
<tabstop>Spin_Num</tabstop>
|
<tabstop>Check_CollectEntropy</tabstop>
|
||||||
<tabstop>Check_strongrandom</tabstop>
|
|
||||||
<tabstop>Edit_dest</tabstop>
|
<tabstop>Edit_dest</tabstop>
|
||||||
<tabstop>ButtonGenerate</tabstop>
|
<tabstop>ButtonGenerate</tabstop>
|
||||||
<tabstop>ButtonOK</tabstop>
|
|
||||||
<tabstop>Button_Cancel</tabstop>
|
|
||||||
</tabstops>
|
</tabstops>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
|
|
|
@ -52,8 +52,17 @@
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QTabWidget" name="tabWidget4" >
|
<widget class="QTabWidget" name="tabWidget4" >
|
||||||
|
<property name="whatsThis" >
|
||||||
|
<string>The integration plugins provide features like usage of the native file dialogs and message boxes of the particular desktop environments.</string>
|
||||||
|
</property>
|
||||||
|
<property name="tabPosition" >
|
||||||
|
<enum>QTabWidget::North</enum>
|
||||||
|
</property>
|
||||||
|
<property name="tabShape" >
|
||||||
|
<enum>QTabWidget::Rounded</enum>
|
||||||
|
</property>
|
||||||
<property name="currentIndex" >
|
<property name="currentIndex" >
|
||||||
<number>3</number>
|
<number>2</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="tab" >
|
<widget class="QWidget" name="tab" >
|
||||||
<attribute name="title" >
|
<attribute name="title" >
|
||||||
|
@ -453,7 +462,7 @@
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="tab_2" >
|
<widget class="QWidget" name="tab_2" >
|
||||||
<attribute name="title" >
|
<attribute name="title" >
|
||||||
<string>Intergration Plug-ins</string>
|
<string>Desktop Integration</string>
|
||||||
</attribute>
|
</attribute>
|
||||||
<layout class="QVBoxLayout" >
|
<layout class="QVBoxLayout" >
|
||||||
<property name="margin" >
|
<property name="margin" >
|
||||||
|
@ -463,7 +472,7 @@
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="label_3" >
|
<widget class="QLabel" name="Label_IntPlugin_Error" >
|
||||||
<property name="sizePolicy" >
|
<property name="sizePolicy" >
|
||||||
<sizepolicy>
|
<sizepolicy>
|
||||||
<hsizetype>5</hsizetype>
|
<hsizetype>5</hsizetype>
|
||||||
|
@ -473,7 +482,10 @@
|
||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
</property>
|
</property>
|
||||||
<property name="text" >
|
<property name="text" >
|
||||||
<string>< some text about plugin usage ></string>
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="wordWrap" >
|
||||||
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -498,21 +510,21 @@
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QRadioButton" name="radioButton" >
|
<widget class="QRadioButton" name="Radio_IntPlugin_None" >
|
||||||
<property name="text" >
|
<property name="text" >
|
||||||
<string>None</string>
|
<string>None</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QRadioButton" name="radioButton_2" >
|
<widget class="QRadioButton" name="Radio_IntPlugin_Gnome" >
|
||||||
<property name="text" >
|
<property name="text" >
|
||||||
<string>Gnome Desktop Integration (Gtk 2.x)</string>
|
<string>Gnome Desktop Integration (Gtk 2.x)</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QRadioButton" name="radioButton_3" >
|
<widget class="QRadioButton" name="Radio_IntPlugin_Kde" >
|
||||||
<property name="text" >
|
<property name="text" >
|
||||||
<string>KDE 4 Desktop Integration</string>
|
<string>KDE 4 Desktop Integration</string>
|
||||||
</property>
|
</property>
|
||||||
|
@ -529,6 +541,13 @@
|
||||||
<property name="spacing" >
|
<property name="spacing" >
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="Label_IntPlugin_Info" >
|
||||||
|
<property name="text" >
|
||||||
|
<string>You need to restart the program before the changes take effect.</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<spacer>
|
<spacer>
|
||||||
<property name="orientation" >
|
<property name="orientation" >
|
||||||
|
@ -543,7 +562,7 @@
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="Button_ConfigureDesktopPlugin" >
|
<widget class="QPushButton" name="IntPlugin_Button_Config" >
|
||||||
<property name="text" >
|
<property name="text" >
|
||||||
<string>Configure...</string>
|
<string>Configure...</string>
|
||||||
</property>
|
</property>
|
||||||
|
@ -551,6 +570,19 @@
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer>
|
||||||
|
<property name="orientation" >
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" >
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="tab" >
|
<widget class="QWidget" name="tab" >
|
||||||
|
@ -652,7 +684,7 @@
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="standardButtons" >
|
<property name="standardButtons" >
|
||||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
|
<set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
|
@ -73,8 +73,11 @@ QStringList QtStandardFileDialogs::openExistingFilesDialog(QWidget* parent,QStri
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QtStandardFileDialogs::saveFileDialog(QWidget* parent,QString title,QString dir,QStringList Filters,bool ShowOverwriteWarning){
|
QString QtStandardFileDialogs::saveFileDialog(QWidget* parent,QString title,QString dir,QStringList Filters,bool ShowOverwriteWarning){
|
||||||
|
QFileDialog FileDlg(parent,title,dir);
|
||||||
return QString();
|
FileDlg.setFilters(Filters);
|
||||||
|
FileDlg.setFileMode(QFileDialog::AnyFile);
|
||||||
|
FileDlg.setAcceptMode(QFileDialog::AcceptSave);
|
||||||
|
FileDlg.setConfirmOverwrite(ShowOverwriteWarning);
|
||||||
|
if(!FileDlg.exec())return QString();
|
||||||
|
return FileDlg.selectedFiles()[0];
|
||||||
}
|
}
|
||||||
|
|
40
src/main.cpp
40
src/main.cpp
|
@ -53,8 +53,11 @@ using namespace std;
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define CSTR(x)(x.toUtf8().data())
|
||||||
|
|
||||||
CConfig config;
|
CConfig config;
|
||||||
QString AppDir;
|
QString AppDir;
|
||||||
|
QString PluginLoadError;
|
||||||
bool TrActive;
|
bool TrActive;
|
||||||
QPixmap *Icon_Key32x32;
|
QPixmap *Icon_Key32x32;
|
||||||
QPixmap *Icon_Settings32x32;
|
QPixmap *Icon_Settings32x32;
|
||||||
|
@ -81,6 +84,7 @@ QIcon *Icon_Configure;
|
||||||
QIcon *Icon_Help;
|
QIcon *Icon_Help;
|
||||||
QIcon *Icon_AutoType;
|
QIcon *Icon_AutoType;
|
||||||
QIcon *Icon_Swap;
|
QIcon *Icon_Swap;
|
||||||
|
QIcon *Icon_FileSaveDisabled;
|
||||||
|
|
||||||
inline void loadImages();
|
inline void loadImages();
|
||||||
inline void parseCmdLineArgs(int argc, char** argv,QString &ArgFile,QString& ArgCfg,QString& ArgLang);
|
inline void parseCmdLineArgs(int argc, char** argv,QString &ArgFile,QString& ArgCfg,QString& ArgLang);
|
||||||
|
@ -92,6 +96,9 @@ int main(int argc, char **argv)
|
||||||
QString ArgFile,ArgCfg,ArgLang,IniFilename;
|
QString ArgFile,ArgCfg,ArgLang,IniFilename;
|
||||||
QApplication* app=NULL;
|
QApplication* app=NULL;
|
||||||
|
|
||||||
|
AppDir=QString(argv[0]);
|
||||||
|
AppDir.truncate(AppDir.lastIndexOf("/"));
|
||||||
|
|
||||||
//Load Config
|
//Load Config
|
||||||
if(ArgCfg==QString()){
|
if(ArgCfg==QString()){
|
||||||
if(!QDir(QDir::homePath()+"/.keepass").exists()){
|
if(!QDir(QDir::homePath()+"/.keepass").exists()){
|
||||||
|
@ -114,10 +121,13 @@ int main(int argc, char **argv)
|
||||||
LibName+="kde.so";
|
LibName+="kde.so";
|
||||||
else if(config.IntegrPlugin==CConfig::GNOME)
|
else if(config.IntegrPlugin==CConfig::GNOME)
|
||||||
LibName+="gnome.so";
|
LibName+="gnome.so";
|
||||||
QPluginLoader plugin("/home/tarek/Documents/KeePassX/src/plugins/gnome/"+LibName);
|
QString filename=findPlugin(LibName);
|
||||||
|
if(filename!=QString()){
|
||||||
|
QPluginLoader plugin(filename);
|
||||||
if(!plugin.load()){
|
if(!plugin.load()){
|
||||||
qWarning("Could not load destop integration plugin:");
|
PluginLoadError=plugin.errorString();
|
||||||
qWarning(plugin.errorString().toUtf8().data());
|
qWarning("Could not load desktop integration plugin:");
|
||||||
|
qWarning(CSTR(PluginLoadError));
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
IFileDialog* fdlg=qobject_cast<IFileDialog*>(plugin.instance());
|
IFileDialog* fdlg=qobject_cast<IFileDialog*>(plugin.instance());
|
||||||
|
@ -125,18 +135,25 @@ int main(int argc, char **argv)
|
||||||
if(config.IntegrPlugin==CConfig::KDE){
|
if(config.IntegrPlugin==CConfig::KDE){
|
||||||
IKdeInit* kdeinit=qobject_cast<IKdeInit*>(plugin.instance());
|
IKdeInit* kdeinit=qobject_cast<IKdeInit*>(plugin.instance());
|
||||||
app=kdeinit->getMainAppObject(argc,argv);
|
app=kdeinit->getMainAppObject(argc,argv);
|
||||||
|
if(!app)PluginLoadError=QObject::tr("Initialization failed.");
|
||||||
}
|
}
|
||||||
if(config.IntegrPlugin==CConfig::GNOME){
|
if(config.IntegrPlugin==CConfig::GNOME){
|
||||||
IGnomeInit* ginit=qobject_cast<IGnomeInit*>(plugin.instance());
|
IGnomeInit* ginit=qobject_cast<IGnomeInit*>(plugin.instance());
|
||||||
if(!ginit->init(argc,argv))
|
if(!ginit->init(argc,argv)){
|
||||||
KpxFileDialogs::setPlugin(NULL);
|
KpxFileDialogs::setPlugin(NULL);
|
||||||
|
qWarning("GtkIntegrPlugin: Gtk init failed.");
|
||||||
|
PluginLoadError=QObject::tr("Initialization failed.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
qWarning(CSTR(QString("Could not load desktop integration plugin: File '%1' not found.").arg(LibName)));
|
||||||
|
PluginLoadError=QObject::tr("Could not locate library file.");
|
||||||
|
}
|
||||||
|
}
|
||||||
if(!app) QApplication* app=new QApplication(argc,argv);
|
if(!app) QApplication* app=new QApplication(argc,argv);
|
||||||
parseCmdLineArgs(argc,argv,ArgFile,ArgCfg,ArgLang);
|
parseCmdLineArgs(argc,argv,ArgFile,ArgCfg,ArgLang);
|
||||||
AppDir=app->applicationDirPath();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//Internationalization
|
//Internationalization
|
||||||
|
@ -333,6 +350,7 @@ _loadIcon(Icon_Configure,"/actions/configure.png");
|
||||||
_loadIcon(Icon_Help,"/actions/help.png");
|
_loadIcon(Icon_Help,"/actions/help.png");
|
||||||
_loadIcon(Icon_AutoType,"/apps/ktouch.png");
|
_loadIcon(Icon_AutoType,"/apps/ktouch.png");
|
||||||
_loadIcon(Icon_Swap,"/actions/reload.png");
|
_loadIcon(Icon_Swap,"/actions/reload.png");
|
||||||
|
Icon_FileSaveDisabled=new QIcon(Icon_FileSave->pixmap(32,32,QIcon::Disabled));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -393,3 +411,13 @@ int i=1;
|
||||||
void showErrMsg(const QString& msg,QWidget* parent){
|
void showErrMsg(const QString& msg,QWidget* parent){
|
||||||
QMessageBox::critical(parent,QObject::tr("Error"),msg,QObject::tr("OK"));
|
QMessageBox::critical(parent,QObject::tr("Error"),msg,QObject::tr("OK"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString findPlugin(const QString& filename){
|
||||||
|
QFileInfo info;
|
||||||
|
|
||||||
|
info.setFile(AppDir+"/../lib/keepassx/"+filename);
|
||||||
|
if(info.exists() && info.isFile())
|
||||||
|
return AppDir+"/../lib/keepassx/"+filename;
|
||||||
|
|
||||||
|
return QString();
|
||||||
|
}
|
||||||
|
|
|
@ -39,6 +39,8 @@ void createBanner(QPixmap* Pixmap, QPixmap* IconAlpha,const QString& Text,int Wi
|
||||||
void openBrowser(QString url);
|
void openBrowser(QString url);
|
||||||
void showErrMsg(const QString& msg,QWidget* parent=NULL);
|
void showErrMsg(const QString& msg,QWidget* parent=NULL);
|
||||||
QString decodeFileError(QFile::FileError Code);
|
QString decodeFileError(QFile::FileError Code);
|
||||||
|
QString findPlugin(const QString& filename);
|
||||||
|
extern QString PluginLoadError;
|
||||||
|
|
||||||
extern CConfig config;
|
extern CConfig config;
|
||||||
extern QString AppDir;
|
extern QString AppDir;
|
||||||
|
@ -69,6 +71,7 @@ extern QIcon *Icon_Configure;
|
||||||
extern QIcon *Icon_Help;
|
extern QIcon *Icon_Help;
|
||||||
extern QIcon *Icon_AutoType;
|
extern QIcon *Icon_AutoType;
|
||||||
extern QIcon *Icon_Swap;
|
extern QIcon *Icon_Swap;
|
||||||
|
extern QIcon *Icon_FileSaveDisabled;
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -327,7 +327,7 @@ void KeepassMainWindow::openDatabase(QString filename,bool IsAuto){
|
||||||
StatusBarGeneral->setText(tr("Loading Database..."));
|
StatusBarGeneral->setText(tr("Loading Database..."));
|
||||||
if(db->load(filename)==true){
|
if(db->load(filename)==true){
|
||||||
if(config.OpenLast)config.LastFile=filename;
|
if(config.OpenLast)config.LastFile=filename;
|
||||||
setWindowTitle(tr("KeePassX - %1").arg(filename));
|
setWindowTitle(tr("%1 - KeePassX").arg(filename));
|
||||||
GroupView->createItems();
|
GroupView->createItems();
|
||||||
EntryView->showGroup(NULL);
|
EntryView->showGroup(NULL);
|
||||||
setStateFileOpen(true);
|
setStateFileOpen(true);
|
||||||
|
@ -422,7 +422,7 @@ void KeepassMainWindow::OnFileNewKdb(){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setWindowTitle(tr("KeePassX - %1").arg(tr("[new]")));
|
setWindowTitle(tr("%1 - KeePassX").arg(tr("[new]")));
|
||||||
GroupView->db=db;
|
GroupView->db=db;
|
||||||
EntryView->db=db;
|
EntryView->db=db;
|
||||||
GroupView->createItems();
|
GroupView->createItems();
|
||||||
|
@ -501,9 +501,15 @@ else{
|
||||||
|
|
||||||
|
|
||||||
void KeepassMainWindow::setStateFileModified(bool mod){
|
void KeepassMainWindow::setStateFileModified(bool mod){
|
||||||
if(!FileOpen)return;
|
if(!FileOpen){
|
||||||
|
FileSaveAction->setIcon(*Icon_FileSave);
|
||||||
|
return;
|
||||||
|
}
|
||||||
ModFlag=mod;
|
ModFlag=mod;
|
||||||
FileSaveAction->setEnabled(mod);
|
if(mod)
|
||||||
|
FileSaveAction->setIcon(*Icon_FileSave);
|
||||||
|
else
|
||||||
|
FileSaveAction->setIcon(*Icon_FileSaveDisabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
void KeepassMainWindow::setStateGroupSelected(SelectionState s){
|
void KeepassMainWindow::setStateGroupSelected(SelectionState s){
|
||||||
|
@ -537,7 +543,8 @@ void KeepassMainWindow::setStateGroupSelected(SelectionState s){
|
||||||
void KeepassMainWindow::updateDetailView(){
|
void KeepassMainWindow::updateDetailView(){
|
||||||
if(EntryView->selectedItems().size()!=1){
|
if(EntryView->selectedItems().size()!=1){
|
||||||
DetailView->setPlainText("");
|
DetailView->setPlainText("");
|
||||||
return;}
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
IEntryHandle* entry=((EntryViewItem*)(EntryView->selectedItems()[0]))->EntryHandle;
|
IEntryHandle* entry=((EntryViewItem*)(EntryView->selectedItems()[0]))->EntryHandle;
|
||||||
QString str=tr("<B>Group: </B>%1 <B>Title: </B>%2 <B>Username: </B>%3 <B>URL: </B><a href=%4>%4</a> <B>Password: </B>%5 <B>Creation: </B>%6 <B>Last Change: </B>%7 <B>LastAccess: </B>%8 <B>Expires: </B>%9");
|
QString str=tr("<B>Group: </B>%1 <B>Title: </B>%2 <B>Username: </B>%3 <B>URL: </B><a href=%4>%4</a> <B>Password: </B>%5 <B>Creation: </B>%6 <B>Last Change: </B>%7 <B>LastAccess: </B>%8 <B>Expires: </B>%9");
|
||||||
|
@ -663,19 +670,16 @@ return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool KeepassMainWindow::OnFileSaveAs(){
|
bool KeepassMainWindow::OnFileSaveAs(){
|
||||||
QFileDialog FileDlg(this,tr("Save Database As..."),QDir::homePath());
|
QString filename=KpxFileDialogs::saveFile(this,"MainWindow_FileSave",
|
||||||
FileDlg.setFilters(QStringList()<< tr("KeePass Databases (*.kdb)")<< tr("All Files (*)"));
|
tr("Save Database..."),QStringList()<<tr("KeePass Databases (*.kdb)")<< tr("All Files (*)"));
|
||||||
FileDlg.setFileMode(QFileDialog::AnyFile);
|
if(filename==QString())return false;
|
||||||
FileDlg.setAcceptMode(QFileDialog::AcceptSave);
|
if(!db->changeFile(filename)){
|
||||||
if(!FileDlg.exec())return false;
|
|
||||||
if(!FileDlg.selectedFiles().size())return false;
|
|
||||||
if(!db->changeFile(FileDlg.selectedFiles()[0])){
|
|
||||||
showErrMsg(tr("File could not be saved.\n%1").arg(db->getError()));
|
showErrMsg(tr("File could not be saved.\n%1").arg(db->getError()));
|
||||||
db->changeFile(QString());
|
db->changeFile(QString());
|
||||||
setWindowTitle(tr("KeePassX - [unsaved]").arg(FileDlg.selectedFiles()[0]));
|
setWindowTitle(tr("KeePassX - [unsaved]").arg(filename));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
setWindowTitle(tr("KeePassX - %1").arg(FileDlg.selectedFiles()[0]));
|
setWindowTitle(tr("%1 - KeePassX").arg(filename));
|
||||||
return OnFileSave();
|
return OnFileSave();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -950,7 +954,7 @@ void KeepassMainWindow::OnGroupSelectionChanged(IGroupHandle* group){
|
||||||
}
|
}
|
||||||
|
|
||||||
void KeepassMainWindow::OnEntryChanged(SelectionState Selection){
|
void KeepassMainWindow::OnEntryChanged(SelectionState Selection){
|
||||||
//DETAIL-VIEW!!!
|
updateDetailView();
|
||||||
setStateEntrySelected(Selection);
|
setStateEntrySelected(Selection);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -113,4 +113,26 @@ QStringList GnomePlugin::openExistingFilesDialog(QWidget* parent,QString title,Q
|
||||||
return filenames;
|
return filenames;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString GnomePlugin::saveFileDialog(QWidget* parent,QString title,QString dir,QStringList Filters,bool OverWriteWarn){return QString();}
|
QString GnomePlugin::saveFileDialog(QWidget* parent,QString title,QString dir,QStringList Filters,bool OverWriteWarn){
|
||||||
|
unsigned int NumFilters=Filters.size();
|
||||||
|
GtkWidget *FileDlg;
|
||||||
|
QString filename;
|
||||||
|
FileDlg=gtk_file_chooser_dialog_new(CSTR(title),NULL,
|
||||||
|
GTK_FILE_CHOOSER_ACTION_SAVE,
|
||||||
|
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
|
||||||
|
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
|
||||||
|
NULL);
|
||||||
|
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(FileDlg),CSTR(dir));
|
||||||
|
gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(FileDlg),OverWriteWarn);
|
||||||
|
GtkFileFilter** filters=parseFilterStrings(Filters);
|
||||||
|
|
||||||
|
for(int i=0;i<NumFilters;i++){
|
||||||
|
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(FileDlg),filters[i]);
|
||||||
|
}
|
||||||
|
if (gtk_dialog_run(GTK_DIALOG(FileDlg)) == GTK_RESPONSE_ACCEPT){
|
||||||
|
char* filename_cstring=gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(FileDlg));
|
||||||
|
filename = QString::fromUtf8(filename_cstring);
|
||||||
|
g_free(filename_cstring);
|
||||||
|
}
|
||||||
|
gtk_widget_destroy(FileDlg);
|
||||||
|
return filename;}
|
|
@ -13,4 +13,4 @@ HEADERS += keepassx-gnome.h
|
||||||
SOURCES += keepassx-gnome.cpp
|
SOURCES += keepassx-gnome.cpp
|
||||||
MOC_DIR = build/moc
|
MOC_DIR = build/moc
|
||||||
OBJECTS_DIR = build/
|
OBJECTS_DIR = build/
|
||||||
LIBS+=-lgtk-x11-2.0
|
LIBS+=-L /opt/gnome/lib -lgtk-x11-2.0
|
|
@ -1,9 +1,9 @@
|
||||||
|
|
||||||
INCLUDEPATH += /usr/lib/kde4/include
|
INCLUDEPATH += /opt/kde4/include
|
||||||
TEMPLATE = lib
|
TEMPLATE = lib
|
||||||
CONFIG += plugin release
|
CONFIG += plugin release
|
||||||
HEADERS += keepassx-kde.h
|
HEADERS += keepassx-kde.h
|
||||||
SOURCES += keepassx-kde.cpp
|
SOURCES += keepassx-kde.cpp
|
||||||
MOC_DIR = build/moc
|
MOC_DIR = build/moc
|
||||||
OBJECTS_DIR = build/
|
OBJECTS_DIR = build/
|
||||||
LIBS+=-L/usr/lib/kde4/lib -lkio -lkdecore
|
LIBS+=-L/opt/kde4/lib -lkio -lkdecore
|
||||||
|
|
Loading…
Reference in New Issue