Merge 0.4 branch to trunk
git-svn-id: https://svn.code.sf.net/p/keepassx/code/trunk@319 b624d157-de02-0410-bad0-e51aec6abb33
This commit is contained in:
parent
82f4fc4749
commit
8ec1eeefa4
Binary file not shown.
After Width: | Height: | Size: 1.3 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.4 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.5 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.5 KiB |
|
@ -29,6 +29,7 @@ bool KeepassApplication::x11EventFilter(XEvent* event){
|
|||
if (autoType == NULL)
|
||||
return QApplication::x11EventFilter(event);
|
||||
|
||||
#ifdef GLOBAL_AUTOTYPE
|
||||
if (remove_invalid == 0) {
|
||||
AutoTypeGlobalX11* autoTypeGlobal = static_cast<AutoTypeGlobalX11*>(autoType);
|
||||
remove_invalid = ControlMask | ShiftMask | autoTypeGlobal->maskAlt() |
|
||||
|
@ -44,7 +45,12 @@ bool KeepassApplication::x11EventFilter(XEvent* event){
|
|||
autoType->performGlobal();
|
||||
return true;
|
||||
}
|
||||
else{
|
||||
#endif
|
||||
|
||||
if (event->type == MappingNotify) {
|
||||
dynamic_cast<AutoTypeX11*>(autoType)->updateKeymap();
|
||||
remove_invalid = 0;
|
||||
}
|
||||
|
||||
return QApplication::x11EventFilter(event);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@ SET(keepassx_HEADERS
|
|||
dialogs/EditEntryDlg.h
|
||||
dialogs/EditGroupDlg.h
|
||||
dialogs/ExpiredEntriesDlg.h
|
||||
dialogs/HelpDlg.h
|
||||
dialogs/ManageBookmarksDlg.h
|
||||
dialogs/PasswordDlg.h
|
||||
dialogs/PasswordGenDlg.h
|
||||
|
@ -76,6 +77,7 @@ SET(keepassx_SOURCES
|
|||
dialogs/EditEntryDlg.cpp
|
||||
dialogs/EditGroupDlg.cpp
|
||||
dialogs/ExpiredEntriesDlg.cpp
|
||||
dialogs/HelpDlg.cpp
|
||||
dialogs/ManageBookmarksDlg.cpp
|
||||
dialogs/PasswordDlg.cpp
|
||||
dialogs/PasswordGenDlg.cpp
|
||||
|
@ -104,6 +106,7 @@ SET(keepassx_FORMS
|
|||
forms/EditEntryDlg.ui
|
||||
forms/EditGroupDlg.ui
|
||||
forms/ExpiredEntriesDlg.ui
|
||||
forms/HelpDlg.ui
|
||||
forms/MainWindow.ui
|
||||
forms/ManageBookmarksDlg.ui
|
||||
forms/PasswordDlg.ui
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
|
||||
#include "crypto/twoclass.h"
|
||||
#include <QBuffer>
|
||||
#include <algorithm>
|
||||
|
||||
#define UNEXP_ERROR error=QString("Unexpected error in: %1, Line:%2").arg(__FILE__).arg(__LINE__);
|
||||
|
||||
|
@ -595,12 +596,16 @@ bool Kdb3Database::loadReal(QString filename, bool readOnly, bool differentEncod
|
|||
else if(Algorithm == Twofish_Cipher){
|
||||
CTwofish twofish;
|
||||
if (twofish.init(FinalKey, 32, EncryptionIV) != true){
|
||||
error=tr("Unable to initalize the twofish algorithm.");
|
||||
error=tr("Unable to initialize the twofish algorithm.");
|
||||
LOAD_RETURN_CLEANUP
|
||||
}
|
||||
crypto_size = (unsigned long)twofish.padDecrypt((quint8 *)buffer + DB_HEADER_SIZE,
|
||||
total_size - DB_HEADER_SIZE, (quint8 *)buffer + DB_HEADER_SIZE);
|
||||
}
|
||||
else{
|
||||
error=tr("Unknown encryption algorithm.");
|
||||
LOAD_RETURN_CLEANUP
|
||||
}
|
||||
|
||||
if ((crypto_size > 2147483446) || (!crypto_size && NumGroups)){
|
||||
error=tr("Decryption failed.\nThe key is wrong or the file is damaged.");
|
||||
|
@ -1972,7 +1977,7 @@ int KeyTransformBenchmark::benchmark(int pMSecs){
|
|||
ktbRight->start();
|
||||
ktbLeft->wait();
|
||||
ktbRight->wait();
|
||||
int num = ktbLeft->rounds + ktbRight->rounds;
|
||||
int num = std::min(ktbLeft->rounds, ktbRight->rounds);
|
||||
delete ktbLeft;
|
||||
delete ktbRight;
|
||||
|
||||
|
|
|
@ -64,7 +64,6 @@ public:
|
|||
QString lastKeyLocation(){return settings.value("Options/LastKeyLocation").toString();}
|
||||
tKeyType lastKeyType(){return stringToKeyType(settings.value("Options/LastKeyType").toString());}
|
||||
QByteArray mainWindowGeometry();
|
||||
bool minimizeToTray(){return settings.value("Options/MinimizeToTray",false).toBool();}
|
||||
bool minimizeTray(){return settings.value("Options/MinimizeTray",false).toBool();}
|
||||
bool startMinimized(){return settings.value("Options/StartMinimized",false).toBool();}
|
||||
bool startLocked(){return settings.value("Options/StartLocked",false).toBool();}
|
||||
|
@ -101,7 +100,7 @@ public:
|
|||
bool askBeforeDelete(){return settings.value("Options/AskBeforeDelete",true).toBool();}
|
||||
#ifdef AUTOTYPE
|
||||
int autoTypePreGap(){return settings.value("Options/AutoTypePreGap",500).toInt();}
|
||||
int autoTypeKeyStrokeDelay(){return settings.value("Options/AutoTypeKeyStrokeDelay",0).toInt();}
|
||||
int autoTypeKeyStrokeDelay(){return settings.value("Options/AutoTypeKeyStrokeDelay",5).toInt();}
|
||||
#endif
|
||||
#ifdef GLOBAL_AUTOTYPE
|
||||
Shortcut globalShortcut();
|
||||
|
@ -131,7 +130,6 @@ public:
|
|||
void setLastKeyLocation(const QString& value){settings.setValue("Options/LastKeyLocation",value);}
|
||||
void setLastKeyType(tKeyType value){settings.setValue("Options/LastKeyType",keyTypeToString(value));}
|
||||
void setMainWindowGeometry(const QByteArray& value){settings.setValue("UI/MainWindowGeometry",value);}
|
||||
void setMinimizeToTray(bool value){settings.setValue("Options/MinimizeToTray",value);}
|
||||
void setMinimizeTray(bool value){settings.setValue("Options/MinimizeTray",value);}
|
||||
void setStartMinimized(bool value){settings.setValue("Options/StartMinimized",value);}
|
||||
void setStartLocked(bool value){settings.setValue("Options/StartLocked",value);}
|
||||
|
|
|
@ -71,7 +71,7 @@ AboutDialog::AboutDialog(QWidget* parent):QDialog(parent)
|
|||
|
||||
Edit_License->setHtml(QString::fromUtf8(gpl.readAll()));
|
||||
|
||||
connect(ButtonBox, SIGNAL(accepted()), SLOT(close()));
|
||||
connect(ButtonBox, SIGNAL(rejected()), SLOT(close()));
|
||||
}
|
||||
|
||||
void AboutDialog::paintEvent(QPaintEvent *event){
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
#include "HelpDlg.h"
|
||||
|
||||
HelpDlg::HelpDlg(QWidget* parent) : QDialog(parent) {
|
||||
setupUi(this);
|
||||
textBrowser->setSource(QUrl("qrc:/docs/index.html"));
|
||||
buttonPrevious->setIcon(getIcon("go-previous"));
|
||||
buttonNext->setIcon(getIcon("go-next"));
|
||||
buttonFirst->setIcon(getIcon("go-home"));
|
||||
showMaximized();
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
|
||||
#ifndef HELPDLG_H
|
||||
#define HELPDLG_H
|
||||
|
||||
#include "ui_HelpDlg.h"
|
||||
|
||||
class HelpDlg : public QDialog, private Ui_HelpDlg
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
HelpDlg(QWidget* parent);
|
||||
};
|
||||
|
||||
#endif // HELPDLG_H
|
|
@ -41,13 +41,17 @@ CSelectIconDlg::CSelectIconDlg(IDatabase* database,int CurrentId,QWidget* parent
|
|||
void CSelectIconDlg::updateView(){
|
||||
List->clear();
|
||||
for(int i=0; i<db->numIcons(); i++){
|
||||
QListWidgetItem* item;
|
||||
QListWidgetItem* item = NULL;
|
||||
if(i<BUILTIN_ICONS)
|
||||
List->addItem(item=new QListWidgetItem(QIcon(db->icon(i)),QString::number(i)));
|
||||
item = new QListWidgetItem(QIcon(db->icon(i)),QString::number(i));
|
||||
else
|
||||
if(!db->icon(i).isNull())
|
||||
List->addItem(item=new QListWidgetItem(QIcon(db->icon(i)),"["+QString::number(i)+"]"));
|
||||
item = new QListWidgetItem(QIcon(db->icon(i)),"["+QString::number(i)+"]");
|
||||
|
||||
if (item) {
|
||||
item->setData(32,i);
|
||||
List->addItem(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -34,7 +34,6 @@ CSettingsDlg::CSettingsDlg(QWidget* parent):QDialog(parent,Qt::Dialog)
|
|||
connect(DialogButtons, SIGNAL( rejected() ), this, SLOT( OnCancel() ) );
|
||||
connect(DialogButtons, SIGNAL( clicked(QAbstractButton*)), this, SLOT(OnOtherButton(QAbstractButton*)));
|
||||
|
||||
connect(CheckBox_ShowSysTrayIcon, SIGNAL( toggled(bool) ), CheckBox_CloseToTray, SLOT( setEnabled(bool) ) );
|
||||
connect(CheckBox_ShowSysTrayIcon, SIGNAL( toggled(bool) ), CheckBox_MinimizeTray, SLOT( setEnabled(bool) ) );
|
||||
connect(CheckBox_OpenLast, SIGNAL( toggled(bool) ), CheckBox_RememberLastKey, SLOT( setEnabled(bool) ) );
|
||||
connect(CheckBox_OpenLast, SIGNAL( toggled(bool) ), CheckBox_StartMinimized, SLOT( setEnabled(bool) ) );
|
||||
|
@ -82,7 +81,6 @@ CSettingsDlg::CSettingsDlg(QWidget* parent):QDialog(parent,Qt::Dialog)
|
|||
CheckBox_OpenLast->setChecked(config->openLastFile());
|
||||
CheckBox_RememberLastKey->setChecked(config->rememberLastKey());
|
||||
CheckBox_ShowSysTrayIcon->setChecked(config->showSysTrayIcon());
|
||||
CheckBox_CloseToTray->setChecked(config->minimizeToTray());
|
||||
CheckBox_MinimizeTray->setChecked(config->minimizeTray());
|
||||
CheckBox_StartMinimized->setChecked(config->startMinimized());
|
||||
CheckBox_StartLocked->setChecked(config->startLocked());
|
||||
|
@ -235,7 +233,6 @@ void CSettingsDlg::apply(){
|
|||
|
||||
//General (1)
|
||||
config->setShowSysTrayIcon(CheckBox_ShowSysTrayIcon->isChecked());
|
||||
config->setMinimizeToTray(CheckBox_CloseToTray->isChecked());
|
||||
config->setMinimizeTray(CheckBox_MinimizeTray->isChecked());
|
||||
config->setStartMinimized(CheckBox_StartMinimized->isChecked());
|
||||
config->setStartLocked(CheckBox_StartLocked->isChecked());
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>AboutDlg</class>
|
||||
<widget class="QDialog" name="AboutDlg">
|
||||
|
@ -38,14 +39,6 @@
|
|||
<number>0</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="tab">
|
||||
<property name="geometry" >
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>397</width>
|
||||
<height>171</height>
|
||||
</rect>
|
||||
</property>
|
||||
<attribute name="title">
|
||||
<string>About</string>
|
||||
</attribute>
|
||||
|
@ -58,7 +51,7 @@
|
|||
<item>
|
||||
<widget class="QLabel" name="labelAppName">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy vsizetype="Preferred" hsizetype="Minimum" >
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
|
@ -78,7 +71,7 @@
|
|||
<item>
|
||||
<widget class="QLabel" name="labelAppFunc">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy vsizetype="Preferred" hsizetype="Expanding" >
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
|
@ -151,14 +144,6 @@ General Public License (GPL) version 2.</string>
|
|||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tab_2">
|
||||
<property name="geometry" >
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>397</width>
|
||||
<height>171</height>
|
||||
</rect>
|
||||
</property>
|
||||
<attribute name="title">
|
||||
<string>Credits</string>
|
||||
</attribute>
|
||||
|
@ -176,14 +161,6 @@ General Public License (GPL) version 2.</string>
|
|||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tab_4">
|
||||
<property name="geometry" >
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>397</width>
|
||||
<height>171</height>
|
||||
</rect>
|
||||
</property>
|
||||
<attribute name="title">
|
||||
<string>Translation</string>
|
||||
</attribute>
|
||||
|
@ -201,14 +178,6 @@ General Public License (GPL) version 2.</string>
|
|||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tab_3">
|
||||
<property name="geometry" >
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>397</width>
|
||||
<height>171</height>
|
||||
</rect>
|
||||
</property>
|
||||
<attribute name="title">
|
||||
<string>License</string>
|
||||
</attribute>
|
||||
|
@ -230,7 +199,7 @@ General Public License (GPL) version 2.</string>
|
|||
<item>
|
||||
<widget class="QDialogButtonBox" name="ButtonBox">
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::Ok</set>
|
||||
<set>QDialogButtonBox::Close</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
|
|
@ -0,0 +1,202 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>HelpDlg</class>
|
||||
<widget class="QDialog" name="HelpDlg">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>400</width>
|
||||
<height>300</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Help Contents - KeePassX</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QPushButton" name="buttonPrevious">
|
||||
<property name="toolTip">
|
||||
<string>Previous Page</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Previous Page</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="buttonNext">
|
||||
<property name="toolTip">
|
||||
<string>Next Page</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Next Page</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="buttonFirst">
|
||||
<property name="toolTip">
|
||||
<string>First Page</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>First Page</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QTextBrowser" name="textBrowser">
|
||||
<property name="openExternalLinks">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QDialogButtonBox" name="buttonBox">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::Close</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<tabstops>
|
||||
<tabstop>textBrowser</tabstop>
|
||||
<tabstop>buttonBox</tabstop>
|
||||
</tabstops>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>accepted()</signal>
|
||||
<receiver>HelpDlg</receiver>
|
||||
<slot>accept()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>248</x>
|
||||
<y>254</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>157</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>rejected()</signal>
|
||||
<receiver>HelpDlg</receiver>
|
||||
<slot>reject()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>316</x>
|
||||
<y>260</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>286</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>buttonPrevious</sender>
|
||||
<signal>clicked()</signal>
|
||||
<receiver>textBrowser</receiver>
|
||||
<slot>backward()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>64</x>
|
||||
<y>17</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>199</x>
|
||||
<y>150</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>buttonNext</sender>
|
||||
<signal>clicked()</signal>
|
||||
<receiver>textBrowser</receiver>
|
||||
<slot>forward()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>176</x>
|
||||
<y>17</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>199</x>
|
||||
<y>150</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>buttonFirst</sender>
|
||||
<signal>clicked()</signal>
|
||||
<receiver>textBrowser</receiver>
|
||||
<slot>home()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>274</x>
|
||||
<y>17</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>199</x>
|
||||
<y>150</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>textBrowser</sender>
|
||||
<signal>backwardAvailable(bool)</signal>
|
||||
<receiver>buttonPrevious</receiver>
|
||||
<slot>setEnabled(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>199</x>
|
||||
<y>150</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>64</x>
|
||||
<y>17</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>textBrowser</sender>
|
||||
<signal>forwardAvailable(bool)</signal>
|
||||
<receiver>buttonNext</receiver>
|
||||
<slot>setEnabled(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>199</x>
|
||||
<y>150</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>176</x>
|
||||
<y>17</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
</ui>
|
|
@ -1,3 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<author>Tarek Saidi</author>
|
||||
<class>MainWindow</class>
|
||||
|
@ -17,14 +18,6 @@
|
|||
<string>KeePassX</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralWidget">
|
||||
<property name="geometry" >
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>29</y>
|
||||
<width>724</width>
|
||||
<height>439</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout">
|
||||
<item>
|
||||
<widget class="QSplitter" name="VSplitter">
|
||||
|
@ -36,7 +29,7 @@
|
|||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||
<horstretch>30</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
|
@ -58,7 +51,7 @@
|
|||
</widget>
|
||||
<widget class="QSplitter" name="HSplitter">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||
<horstretch>70</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
|
@ -71,7 +64,7 @@
|
|||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>70</verstretch>
|
||||
</sizepolicy>
|
||||
|
@ -91,7 +84,7 @@
|
|||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>30</verstretch>
|
||||
</sizepolicy>
|
||||
|
@ -120,10 +113,10 @@
|
|||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>724</width>
|
||||
<height>29</height>
|
||||
<height>24</height>
|
||||
</rect>
|
||||
</property>
|
||||
<widget class="QMenu" name="menuHilfe" >
|
||||
<widget class="QMenu" name="menuHelp">
|
||||
<property name="title">
|
||||
<string>&Help</string>
|
||||
</property>
|
||||
|
@ -131,7 +124,7 @@
|
|||
<addaction name="separator"/>
|
||||
<addaction name="HelpAboutAction"/>
|
||||
</widget>
|
||||
<widget class="QMenu" name="menuDatei" >
|
||||
<widget class="QMenu" name="menuFile">
|
||||
<property name="title">
|
||||
<string>&File</string>
|
||||
</property>
|
||||
|
@ -245,12 +238,12 @@
|
|||
<addaction name="EditDeleteGroupAction"/>
|
||||
<addaction name="EditGroupSortAction"/>
|
||||
</widget>
|
||||
<addaction name="menuDatei" />
|
||||
<addaction name="menuFile"/>
|
||||
<addaction name="menuEntries"/>
|
||||
<addaction name="menuGroups"/>
|
||||
<addaction name="ViewMenu"/>
|
||||
<addaction name="menuExtras"/>
|
||||
<addaction name="menuHilfe" />
|
||||
<addaction name="menuHelp"/>
|
||||
</widget>
|
||||
<action name="ManageBookmarksAction">
|
||||
<property name="text">
|
||||
|
@ -497,9 +490,6 @@
|
|||
<property name="text">
|
||||
<string>&KeePassX Handbook...</string>
|
||||
</property>
|
||||
<property name="visible" >
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</action>
|
||||
<action name="HideSearchResultsAction">
|
||||
<property name="text">
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>SettingsDialog</class>
|
||||
<widget class="QDialog" name="SettingsDialog">
|
||||
|
@ -40,7 +41,7 @@
|
|||
<item>
|
||||
<widget class="QListWidget" name="listWidget">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy vsizetype="Expanding" hsizetype="Fixed" >
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
|
@ -107,14 +108,6 @@ QListView::item {
|
|||
<number>0</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="pageGeneral1">
|
||||
<property name="geometry" >
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>521</width>
|
||||
<height>331</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="CheckBox_ShowSysTrayIcon">
|
||||
|
@ -153,36 +146,6 @@ QListView::item {
|
|||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="_17" >
|
||||
<item>
|
||||
<spacer>
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType" >
|
||||
<enum>QSizePolicy::Fixed</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0" >
|
||||
<size>
|
||||
<width>25</width>
|
||||
<height>10</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="CheckBox_CloseToTray" >
|
||||
<property name="enabled" >
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text" >
|
||||
<string>Minimize to tray when clicking the main window's close button</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="_18">
|
||||
<item>
|
||||
|
@ -357,14 +320,6 @@ QListView::item {
|
|||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="pageGeneral2">
|
||||
<property name="geometry" >
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>521</width>
|
||||
<height>331</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="CheckBox_Backup">
|
||||
|
@ -407,7 +362,7 @@ QListView::item {
|
|||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
|
@ -459,14 +414,6 @@ QListView::item {
|
|||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="pageAppearance">
|
||||
<property name="geometry" >
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>521</width>
|
||||
<height>331</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox1">
|
||||
|
@ -508,7 +455,7 @@ QListView::item {
|
|||
<item row="1" column="2">
|
||||
<widget class="QPushButton" name="ButtonTextColor">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy vsizetype="Fixed" hsizetype="Maximum" >
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
|
@ -533,7 +480,7 @@ QListView::item {
|
|||
<item row="0" column="4">
|
||||
<widget class="QLabel" name="textLabel3">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy vsizetype="Preferred" hsizetype="Maximum" >
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
|
@ -546,7 +493,7 @@ QListView::item {
|
|||
<item row="0" column="1">
|
||||
<widget class="QLabel" name="pixmColor1">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy vsizetype="Fixed" hsizetype="Maximum" >
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
|
@ -571,7 +518,7 @@ QListView::item {
|
|||
<item row="1" column="1">
|
||||
<widget class="QLabel" name="pixmTextColor">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy vsizetype="Fixed" hsizetype="Maximum" >
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
|
@ -596,7 +543,7 @@ QListView::item {
|
|||
<item row="0" column="6">
|
||||
<widget class="QPushButton" name="ButtonColor2">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy vsizetype="Fixed" hsizetype="Maximum" >
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
|
@ -621,7 +568,7 @@ QListView::item {
|
|||
<item row="0" column="5">
|
||||
<widget class="QLabel" name="pixmColor2">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy vsizetype="Fixed" hsizetype="Maximum" >
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
|
@ -646,7 +593,7 @@ QListView::item {
|
|||
<item row="0" column="2">
|
||||
<widget class="QPushButton" name="ButtonColor1">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy vsizetype="Fixed" hsizetype="Maximum" >
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
|
@ -671,7 +618,7 @@ QListView::item {
|
|||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="textLabel1_2">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy vsizetype="Preferred" hsizetype="Maximum" >
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
|
@ -804,14 +751,6 @@ QListView::item {
|
|||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="pageLanguage">
|
||||
<property name="geometry" >
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>521</width>
|
||||
<height>331</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_8">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
|
@ -898,19 +837,11 @@ QListView::item {
|
|||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="pageSecurity">
|
||||
<property name="geometry" >
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>521</width>
|
||||
<height>331</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox_2">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy vsizetype="Minimum" hsizetype="Preferred" >
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
|
@ -947,7 +878,7 @@ QListView::item {
|
|||
<item>
|
||||
<widget class="QLabel" name="textLabel1">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy vsizetype="Preferred" hsizetype="Maximum" >
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
|
@ -960,7 +891,7 @@ QListView::item {
|
|||
<item>
|
||||
<widget class="QSpinBox" name="SpinBox_ClipboardTime">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
|
@ -1010,7 +941,7 @@ QListView::item {
|
|||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
|
@ -1051,14 +982,6 @@ QListView::item {
|
|||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="pageAdvanced">
|
||||
<property name="geometry" >
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>521</width>
|
||||
<height>331</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_5">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="Box_BrowserCmd">
|
||||
|
@ -1245,14 +1168,6 @@ QListView::item {
|
|||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="pageFeatures">
|
||||
<property name="geometry" >
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>521</width>
|
||||
<height>331</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_6">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_6">
|
||||
|
@ -1287,19 +1202,11 @@ QListView::item {
|
|||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="pageDesktop">
|
||||
<property name="geometry" >
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>521</width>
|
||||
<height>331</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_7">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy vsizetype="Minimum" hsizetype="Preferred" >
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
|
@ -1412,7 +1319,6 @@ QListView::item {
|
|||
<tabstop>listWidget</tabstop>
|
||||
<tabstop>CheckBox_ShowSysTrayIcon</tabstop>
|
||||
<tabstop>CheckBox_MinimizeTray</tabstop>
|
||||
<tabstop>CheckBox_CloseToTray</tabstop>
|
||||
<tabstop>CheckBox_OpenLast</tabstop>
|
||||
<tabstop>CheckBox_RememberLastKey</tabstop>
|
||||
<tabstop>CheckBox_StartMinimized</tabstop>
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
#define APP_CODE_NAME "keepassx"
|
||||
#define APP_SHORT_FUNC "Password Manager"
|
||||
#define APP_LONG_FUNC "Cross Platform Password Manager"
|
||||
#define APP_VERSION "0.4.0"
|
||||
#define APP_VERSION "0.4.1beta"
|
||||
|
||||
#define BUILTIN_ICONS 69
|
||||
|
||||
|
@ -35,7 +35,6 @@
|
|||
#ifdef __cplusplus
|
||||
|
||||
#include <cstdlib>
|
||||
|
||||
#include <cmath>
|
||||
|
||||
#include <QApplication>
|
||||
|
|
|
@ -34,13 +34,22 @@ void initAutoType(KeepassMainWindow* mainWin) {
|
|||
AutoTypeGlobalX11::AutoTypeGlobalX11(KeepassMainWindow* mainWin) : AutoTypeX11(mainWin) {
|
||||
wm_state = XInternAtom(dpy, "WM_STATE", true);
|
||||
windowRoot = XRootWindow(dpy, mainWin->x11Info().screen());
|
||||
shortcut.key = 0;
|
||||
focusedWindow = 0;
|
||||
oldCode = 0;
|
||||
oldMod = 0;
|
||||
//windowBlacklist << "kicker" << "KDE Desktop";
|
||||
classBlacklist << "desktop_window" << "gnome-panel"; // Gnome
|
||||
classBlacklist << "kdesktop" << "kicker"; // KDE 3
|
||||
classBlacklist << "Plasma"; // KDE 4
|
||||
classBlacklist << "xfdesktop" << "xfce4-panel"; // Xfce 4
|
||||
}
|
||||
|
||||
void AutoTypeGlobalX11::updateKeymap() {
|
||||
AutoTypeX11::updateKeymap();
|
||||
registerGlobalShortcut(shortcut);
|
||||
}
|
||||
|
||||
void AutoTypeGlobalX11::perform(IEntryHandle* entry, bool hideWindow, int nr, bool wasLocked){
|
||||
if (focusedWindow && (!hideWindow || wasLocked)) { // detect if global auto-type
|
||||
XSetInputFocus(dpy, focusedWindow, RevertToPointerRoot, CurrentTime);
|
||||
|
@ -216,12 +225,15 @@ void AutoTypeGlobalX11::performGlobal(){
|
|||
}
|
||||
|
||||
bool AutoTypeGlobalX11::registerGlobalShortcut(const Shortcut& s){
|
||||
if (s.key==shortcut.key && s.ctrl==shortcut.ctrl && s.shift==shortcut.shift && s.alt==shortcut.alt && s.altgr==shortcut.altgr && s.win==shortcut.win)
|
||||
return true;
|
||||
if (s.key == 0)
|
||||
return false;
|
||||
|
||||
int code=XKeysymToKeycode(dpy, HelperX11::getKeysym(s.key));
|
||||
uint mod=HelperX11::getShortcutModifierMask(s);
|
||||
|
||||
if (s.key==shortcut.key && s.ctrl==shortcut.ctrl && s.shift==shortcut.shift && s.alt==shortcut.alt && s.altgr==shortcut.altgr && s.win==shortcut.win && code==oldCode && mod==oldMod)
|
||||
return true;
|
||||
|
||||
HelperX11::startCatchErrors();
|
||||
XGrabKey(dpy, code, mod, windowRoot, true, GrabModeAsync, GrabModeAsync);
|
||||
XGrabKey(dpy, code, mod | Mod2Mask, windowRoot, true, GrabModeAsync, GrabModeAsync);
|
||||
|
@ -239,6 +251,8 @@ bool AutoTypeGlobalX11::registerGlobalShortcut(const Shortcut& s){
|
|||
else {
|
||||
unregisterGlobalShortcut();
|
||||
shortcut = s;
|
||||
oldCode = code;
|
||||
oldMod = mod;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -246,15 +260,14 @@ bool AutoTypeGlobalX11::registerGlobalShortcut(const Shortcut& s){
|
|||
void AutoTypeGlobalX11::unregisterGlobalShortcut(){
|
||||
if (shortcut.key==0) return;
|
||||
|
||||
int code=XKeysymToKeycode(dpy, HelperX11::getKeysym(shortcut.key));
|
||||
uint mod=HelperX11::getShortcutModifierMask(shortcut);
|
||||
|
||||
XUngrabKey(dpy, code, mod, windowRoot);
|
||||
XUngrabKey(dpy, code, mod | Mod2Mask, windowRoot);
|
||||
XUngrabKey(dpy, code, mod | LockMask, windowRoot);
|
||||
XUngrabKey(dpy, code, mod | Mod2Mask | LockMask, windowRoot);
|
||||
XUngrabKey(dpy, oldCode, oldMod, windowRoot);
|
||||
XUngrabKey(dpy, oldCode, oldMod | Mod2Mask, windowRoot);
|
||||
XUngrabKey(dpy, oldCode, oldMod | LockMask, windowRoot);
|
||||
XUngrabKey(dpy, oldCode, oldMod | Mod2Mask | LockMask, windowRoot);
|
||||
|
||||
shortcut.key = 0;
|
||||
oldCode = 0;
|
||||
oldMod = 0;
|
||||
}
|
||||
|
||||
QString AutoTypeGlobalX11::getRootGroupName(IEntryHandle* entry){
|
||||
|
|
|
@ -31,6 +31,7 @@ class AutoTypeGlobalX11 : public AutoTypeX11, public AutoTypeGlobal {
|
|||
bool registerGlobalShortcut(const Shortcut& s);
|
||||
void unregisterGlobalShortcut();
|
||||
QStringList getAllWindowTitles();
|
||||
void updateKeymap();
|
||||
inline int maskAlt() { return alt_mask; };
|
||||
inline int maskAltGr() { return altgr_mask; };
|
||||
inline int maskMeta() { return meta_mask; };
|
||||
|
@ -44,6 +45,8 @@ class AutoTypeGlobalX11 : public AutoTypeX11, public AutoTypeGlobal {
|
|||
QSet<QString> classBlacklist;
|
||||
Atom wm_state;
|
||||
Window focusedWindow;
|
||||
int oldCode;
|
||||
uint oldMod;
|
||||
};
|
||||
|
||||
#endif // _AUTOTYPEGLOBALX11_H_
|
||||
|
|
|
@ -45,9 +45,16 @@ AutoTypeX11::AutoTypeX11(KeepassMainWindow* mainWin) {
|
|||
altgr_mask = 0;
|
||||
altgr_keysym = NoSymbol;
|
||||
|
||||
updateKeymap();
|
||||
reReadKeymap = false;
|
||||
}
|
||||
|
||||
void AutoTypeX11::updateKeymap() {
|
||||
ReadKeymap();
|
||||
if (!altgr_mask)
|
||||
AddModifier(XK_Mode_switch);
|
||||
if (!meta_mask)
|
||||
meta_mask = Mod4Mask;
|
||||
}
|
||||
|
||||
void AutoTypeX11::perform(IEntryHandle* entry, bool hideWindow, int nr, bool wasLocked){
|
||||
|
@ -109,6 +116,14 @@ void AutoTypeX11::perform(IEntryHandle* entry, bool hideWindow, int nr, bool was
|
|||
}
|
||||
}
|
||||
|
||||
/* Re-read keymap before first auto-type,
|
||||
seems to be necessary on X.Org Server 1.6,
|
||||
when KeePassX is in autostart */
|
||||
if (!reReadKeymap) {
|
||||
updateKeymap();
|
||||
reReadKeymap = true;
|
||||
}
|
||||
|
||||
if (hideWindow)
|
||||
mainWin->hide();
|
||||
|
||||
|
@ -138,8 +153,6 @@ void AutoTypeX11::perform(IEntryHandle* entry, bool hideWindow, int nr, bool was
|
|||
else{
|
||||
if (hideWindow && !(config->showSysTrayIcon() && config->minimizeTray()) )
|
||||
mainWin->showMinimized();
|
||||
if (wasLocked)
|
||||
mainWin->OnUnLockWorkspace();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -39,10 +39,11 @@ class AutoTypeX11 : public AutoType {
|
|||
public:
|
||||
AutoTypeX11(KeepassMainWindow* mainWin);
|
||||
void perform(IEntryHandle* entry, bool hideWindow=true, int nr=0, bool wasLocked=false);
|
||||
virtual void updateKeymap();
|
||||
|
||||
protected:
|
||||
void sleepTime(int msec);
|
||||
inline void sleepKeyStrokeDelay(){ sleep(config->autoTypeKeyStrokeDelay()); };
|
||||
inline void sleepKeyStrokeDelay(){ sleepTime(config->autoTypeKeyStrokeDelay()); };
|
||||
void templateToKeysyms(const QString& Template, QList<AutoTypeAction>& KeySymList,IEntryHandle* entry);
|
||||
void stringToKeysyms(const QString& string,QList<AutoTypeAction>& KeySymList);
|
||||
|
||||
|
@ -63,6 +64,7 @@ class AutoTypeX11 : public AutoType {
|
|||
int meta_mask;
|
||||
int altgr_mask;
|
||||
KeySym altgr_keysym;
|
||||
bool reReadKeymap;
|
||||
};
|
||||
|
||||
#endif // _AUTOTYPEX11_H_
|
||||
|
|
|
@ -202,7 +202,13 @@ void KeepassEntryView::updateEntry(EntryViewItem* item){
|
|||
}
|
||||
}
|
||||
if (Columns.at(4)){
|
||||
item->setText(j++,entry->comment().section('\n',0,0));}
|
||||
QString comment = entry->comment();
|
||||
int toPos = comment.indexOf(QRegExp("[\\r\\n]"));
|
||||
if (toPos == -1)
|
||||
item->setText(j++,comment);
|
||||
else
|
||||
item->setText(j++,comment.left(toPos));
|
||||
}
|
||||
if (Columns.at(5)){
|
||||
item->setText(j++,entry->expire().dateToString(Qt::SystemLocaleDate));}
|
||||
if (Columns.at(6)){
|
||||
|
@ -361,8 +367,8 @@ void KeepassEntryView::OnClipboardTimeOut(){
|
|||
Clipboard->clear(QClipboard::Selection);
|
||||
}
|
||||
#ifdef Q_WS_X11
|
||||
QProcess::execute("dcop klipper klipper clearClipboardHistory");
|
||||
QProcess::execute("dbus-send --type=method_call --dest=org.kde.klipper /klipper org.kde.klipper.klipper.clearClipboardHistory");
|
||||
QProcess::startDetached("dcop klipper klipper clearClipboardHistory");
|
||||
QProcess::startDetached("dbus-send --type=method_call --dest=org.kde.klipper /klipper org.kde.klipper.klipper.clearClipboardHistory");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -446,7 +452,13 @@ void KeepassEntryView::createItems(QList<IEntryHandle*>& entries){
|
|||
}
|
||||
}
|
||||
if (Columns.at(4)){
|
||||
item->setText(j++,entries[i]->comment().section('\n',0,0));}
|
||||
QString comment = entries[i]->comment();
|
||||
int toPos = comment.indexOf(QRegExp("[\\r\\n]"));
|
||||
if (toPos == -1)
|
||||
item->setText(j++,comment);
|
||||
else
|
||||
item->setText(j++,comment.left(toPos));
|
||||
}
|
||||
if (Columns.at(5)){
|
||||
item->setText(j++,entries[i]->expire().dateToString(Qt::SystemLocaleDate));}
|
||||
if (Columns.at(6)){
|
||||
|
|
|
@ -162,7 +162,8 @@ void KeepassGroupView::OnEditGroup(){
|
|||
|
||||
void KeepassGroupView::contextMenuEvent(QContextMenuEvent* e){
|
||||
if(!(GroupViewItem*)itemAt(e->pos()))
|
||||
setCurrentItem(NULL);
|
||||
return;
|
||||
|
||||
e->accept();
|
||||
if(currentItem()==SearchResultItem)
|
||||
ContextMenuSearchGroup->popup(e->globalPos());
|
||||
|
@ -191,6 +192,13 @@ void KeepassGroupView::setCurrentGroup(IGroupHandle* group){
|
|||
setCurrentItem(Items[i]);
|
||||
}
|
||||
|
||||
void KeepassGroupView::selectFirstGroup(){
|
||||
if (Items.isEmpty())
|
||||
return;
|
||||
|
||||
setCurrentItem(Items[0]);
|
||||
}
|
||||
|
||||
void KeepassGroupView::dragEnterEvent ( QDragEnterEvent * event ){
|
||||
LastHoverItem=NULL;
|
||||
InsLinePos=-1;
|
||||
|
|
|
@ -37,6 +37,7 @@ class KeepassGroupView:public QTreeWidget{
|
|||
void createItems();
|
||||
void showSearchResults();
|
||||
void setCurrentGroup(IGroupHandle* group);
|
||||
void selectFirstGroup();
|
||||
|
||||
public slots:
|
||||
void createGroup(const QString& title, quint32 image, GroupViewItem* group=NULL);
|
||||
|
|
|
@ -53,7 +53,7 @@ int main(int argc, char **argv)
|
|||
|
||||
QT_REQUIRE_VERSION(argc, argv, "4.3.0");
|
||||
|
||||
#if defined(Q_WS_X11) && defined(GLOBAL_AUTOTYPE)
|
||||
#if defined(Q_WS_X11) && defined(AUTOTYPE)
|
||||
QApplication* app = new KeepassApplication(argc,argv);
|
||||
#else
|
||||
QApplication* app = new QApplication(argc,argv);
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#include <QPointer>
|
||||
#include <QToolBar>
|
||||
#include <QStatusBar>
|
||||
#include "mainwindow.h"
|
||||
|
@ -40,6 +41,7 @@
|
|||
//#include "dialogs/TrashCanDlg.h" //TODO TrashCan
|
||||
#include "dialogs/AddBookmarkDlg.h"
|
||||
#include "dialogs/ManageBookmarksDlg.h"
|
||||
#include "dialogs/HelpDlg.h"
|
||||
|
||||
Import_KeePassX_Xml import_KeePassX_Xml;
|
||||
Import_PwManager import_PwManager;
|
||||
|
@ -49,7 +51,6 @@ Export_KeePassX_Xml export_KeePassX_Xml;
|
|||
|
||||
|
||||
KeepassMainWindow::KeepassMainWindow(const QString& ArgFile,bool ArgMin,bool ArgLock,QWidget *parent, Qt::WFlags flags) :QMainWindow(parent,flags){
|
||||
ShutingDown=false;
|
||||
IsLocked=false;
|
||||
EventOccurred=true;
|
||||
inactivityCounter=0;
|
||||
|
@ -91,6 +92,7 @@ KeepassMainWindow::KeepassMainWindow(const QString& ArgFile,bool ArgMin,bool Arg
|
|||
LockedCentralWidget->setVisible(false);
|
||||
|
||||
setupConnections();
|
||||
connect(qApp, SIGNAL(commitDataRequest(QSessionManager&)), SLOT(OnShutdown(QSessionManager&)));
|
||||
|
||||
inactivityTimer = new QTimer(this);
|
||||
inactivityTimer->setInterval(500);
|
||||
|
@ -186,7 +188,7 @@ void KeepassMainWindow::setupConnections(){
|
|||
connect(ExtrasShowExpiredEntriesAction,SIGNAL(triggered(bool)),this,SLOT(OnExtrasShowExpiredEntries()));
|
||||
//connect(ExtrasTrashCanAction,SIGNAL(triggered(bool)),this,SLOT(OnExtrasTrashCan())); //TODO ExtrasTrashCan
|
||||
|
||||
//connect(HelpHandbookAction,SIGNAL(triggered()),this,SLOT(OnHelpHandbook())); //TODO Handbook
|
||||
connect(HelpHandbookAction,SIGNAL(triggered()),this,SLOT(OnHelpHandbook()));
|
||||
connect(HelpAboutAction,SIGNAL(triggered()),this,SLOT(OnHelpAbout()));
|
||||
|
||||
connect(EntryView,SIGNAL(itemActivated(QTreeWidgetItem*,int)),EntryView,SLOT(OnEntryActivated(QTreeWidgetItem*,int)));
|
||||
|
@ -267,8 +269,8 @@ void KeepassMainWindow::setupIcons(){
|
|||
#else
|
||||
EditAutoTypeAction->setVisible(false);
|
||||
#endif
|
||||
//HelpHandbookAction->setIcon(getIcon("manual")); //TODO Handbook
|
||||
HelpAboutAction->setIcon(getIcon("help"));
|
||||
HelpHandbookAction->setIcon(getIcon("manual"));
|
||||
HelpAboutAction->setIcon(getIcon("help_about"));
|
||||
menuBookmarks->menuAction()->setIcon(getIcon("bookmark_folder"));
|
||||
AddThisAsBookmarkAction->setIcon(getIcon("bookmark_this"));
|
||||
AddBookmarkAction->setIcon(getIcon("bookmark_add"));
|
||||
|
@ -491,6 +493,8 @@ bool KeepassMainWindow::openDatabase(QString filename,bool IsAuto){
|
|||
setStatusBarMsg(StatusBarReady);
|
||||
inactivityCounter = 0;
|
||||
|
||||
GroupView->selectFirstGroup();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -530,7 +534,7 @@ bool KeepassMainWindow::closeDatabase(bool lock){
|
|||
db->close();
|
||||
delete db;
|
||||
db=NULL;
|
||||
if (QFile::exists(currentFile+".lock")){
|
||||
if (!dbReadOnly && QFile::exists(currentFile+".lock")){
|
||||
if (!QFile::remove(currentFile+".lock"))
|
||||
QMessageBox::critical(this, tr("Error"), tr("Couldn't remove database lock file."));
|
||||
}
|
||||
|
@ -939,7 +943,6 @@ void KeepassMainWindow::OnFileChangeKey(){
|
|||
}
|
||||
|
||||
void KeepassMainWindow::OnFileExit(){
|
||||
ShutingDown=true;
|
||||
close();
|
||||
}
|
||||
|
||||
|
@ -1035,17 +1038,10 @@ void KeepassMainWindow::OnFileModified(){
|
|||
}
|
||||
|
||||
void KeepassMainWindow::closeEvent(QCloseEvent* e){
|
||||
if(!ShutingDown && config->showSysTrayIcon() && config->minimizeToTray()){
|
||||
e->ignore();
|
||||
if (config->lockOnMinimize() && !IsLocked && FileOpen)
|
||||
OnUnLockWorkspace();
|
||||
hide();
|
||||
return;
|
||||
}
|
||||
|
||||
if(FileOpen && !closeDatabase()){
|
||||
ShutingDown=false;
|
||||
e->ignore();
|
||||
if (!isVisible())
|
||||
show();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1064,6 +1060,7 @@ void KeepassMainWindow::closeEvent(QCloseEvent* e){
|
|||
config->setShowStatusbar(statusBar()->isVisible());
|
||||
|
||||
delete SysTray;
|
||||
QMainWindow::closeEvent(e);
|
||||
QApplication::quit();
|
||||
}
|
||||
|
||||
|
@ -1136,12 +1133,11 @@ void KeepassMainWindow::OnHelpAbout(){
|
|||
dlg.exec();
|
||||
}
|
||||
|
||||
//TODO Handbook
|
||||
/*void KeepassMainWindow::OnHelpHandbook(){
|
||||
HelpBrowser->openAssistant();
|
||||
|
||||
|
||||
}*/
|
||||
void KeepassMainWindow::OnHelpHandbook(){
|
||||
QPointer<HelpDlg> dlg = new HelpDlg(this);
|
||||
dlg->exec();
|
||||
delete dlg;
|
||||
}
|
||||
|
||||
void KeepassMainWindow::OnViewShowToolbar(bool show){
|
||||
config->setShowToolbar(show);
|
||||
|
@ -1301,8 +1297,10 @@ void KeepassMainWindow::OnUnLockWorkspace(){
|
|||
item = parent;
|
||||
}
|
||||
|
||||
if (closeDatabase(true))
|
||||
if (closeDatabase(true)) {
|
||||
setStateFileModified(false);
|
||||
setLock();
|
||||
}
|
||||
else
|
||||
lockGroup.clear();
|
||||
}
|
||||
|
@ -1365,6 +1363,14 @@ void KeepassMainWindow::OnInactivityTimer(){
|
|||
}
|
||||
}
|
||||
|
||||
void KeepassMainWindow::OnShutdown(QSessionManager& manager) {
|
||||
/* QApplication::commitData() only closes visible windows,
|
||||
so we need to manually close mainwindow if it's hidden */
|
||||
if (manager.allowsInteraction() && !isVisible()) {
|
||||
close();
|
||||
}
|
||||
}
|
||||
|
||||
void KeepassMainWindow::OnBookmarkTriggered(QAction* action){
|
||||
if(action==AddBookmarkAction){
|
||||
AddBookmarkDlg dlg(this);
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#ifndef MAINWINDOW_H
|
||||
#define MAINWINDOW_H
|
||||
|
||||
#include <QSessionManager>
|
||||
#include <QSystemTrayIcon>
|
||||
#include "lib/EntryView.h"
|
||||
#include "lib/GroupView.h"
|
||||
|
@ -72,7 +73,7 @@ class KeepassMainWindow : public QMainWindow, private Ui_MainWindow{
|
|||
void OnExtrasShowExpiredEntries();
|
||||
//void OnExtrasTrashCan(); //TODO TrashCan
|
||||
void OnHelpAbout();
|
||||
//void OnHelpHandbook(); //TODO Handbook
|
||||
void OnHelpHandbook();
|
||||
//void OnItemExpanded(QTreeWidgetItem*);
|
||||
//void OnItemCollaped(QTreeWidgetItem*);
|
||||
void OnShowSearchResults();
|
||||
|
@ -84,6 +85,7 @@ class KeepassMainWindow : public QMainWindow, private Ui_MainWindow{
|
|||
void OnDetailViewUrlClicked(const QUrl& url);
|
||||
void OnLockClose();
|
||||
void OnInactivityTimer();
|
||||
void OnShutdown(QSessionManager& manager);
|
||||
|
||||
private:
|
||||
void closeEvent(QCloseEvent* event);
|
||||
|
@ -130,7 +132,6 @@ class KeepassMainWindow : public QMainWindow, private Ui_MainWindow{
|
|||
QWidget* NormalCentralWidget;
|
||||
QWidget* LockedCentralWidget;
|
||||
Ui_WorkspaceLockedWidget WorkspaceLockedWidget;
|
||||
bool ShutingDown;
|
||||
bool InUnLock;
|
||||
QList<int> lockGroup;
|
||||
QDialog* unlockDlg;
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 165 B |
|
@ -0,0 +1,49 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>KeePassX Frequently Asked Questions</title>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top" />
|
||||
<h1>KeePassX Frequently Asked Questions</h1>
|
||||
|
||||
<a name="faq_autotype_support" />
|
||||
<h3 class="question">Q: Is Auto-Type supported on Mac OS X or Windows?</h3>
|
||||
<p class="answer">
|
||||
A: No, Auto-Type is currently supported on Linux only.
|
||||
</p>
|
||||
|
||||
<a name="faq_database_formats" />
|
||||
<h3 class="question">Q: What password database formats are compatible with KeePassX?</h3>
|
||||
<p class="answer">
|
||||
A: KeePassX currently uses the KeePass 1.x (Classic) password database format as
|
||||
the native format. It can also import KeePassX 1.x XML exports, PwManager databases
|
||||
and KWallet XML databases. KeePass 2.x database format is not supported.
|
||||
</p>
|
||||
|
||||
<a name="faq_keepass2x_format" />
|
||||
<h3 class="question">Q: Can I open KeePass 2.x password databases with KeePassX?</h3>
|
||||
<p class="answer">
|
||||
A: No, KeePassX does not support the KeePass 2.x (.kdbx) password database
|
||||
format currently.
|
||||
However, you can create an export in KeePass 1.x database format (.kdb) from
|
||||
KeePass 2.x, which KeePassX can read (and use as the native password database).
|
||||
</p>
|
||||
|
||||
|
||||
<!--
|
||||
<a name="" />
|
||||
<h3 class="question">Q: </h3>
|
||||
<p class="answer">
|
||||
A:
|
||||
</p>
|
||||
|
||||
<a name="" />
|
||||
<h2></h2>
|
||||
<p>
|
||||
|
||||
</p>
|
||||
-->
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,20 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>KeePassX Features Overview</title>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top" />
|
||||
<h1>KeePassX Feature Overview</h1>
|
||||
|
||||
|
||||
<!--
|
||||
<a name="" />
|
||||
<h2></h2>
|
||||
<p>
|
||||
|
||||
</p>
|
||||
-->
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,82 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>KeePassX User Guide</title>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top" />
|
||||
<h1>KeePassX User Guide</h1>
|
||||
<p>For version 0.4.0.</p>
|
||||
|
||||
<a name="in_short" />
|
||||
<h2>KeePassX project in short</h2>
|
||||
<p>
|
||||
<a href="http://keepassx.org/">KeePassX</a> <img src="external.png" /> (KPX)
|
||||
is a cross-platform password manager program.
|
||||
It is mainly designed to be used on *nix platforms,
|
||||
such as Linux and Mac OS X.
|
||||
</p>
|
||||
<p>
|
||||
KeePassX currently uses same the database file
|
||||
format as the <a href="http://keepass.info/">KeePass</a> <img src="external.png" />
|
||||
1.x (Classic) password manager software for Windows.
|
||||
Although a Windows build for KPX exists, it is
|
||||
recommended to use the original KeePass on Windows, as
|
||||
it has more features and is more matured on the platform.
|
||||
</p>
|
||||
<p>
|
||||
Please note that KeePassX and KeePass are entirely
|
||||
separate projects, maintained by two separate groups of people
|
||||
and consequently, share no common codebase.
|
||||
</p>
|
||||
<p>
|
||||
Thank you for using KeePassX!
|
||||
</p>
|
||||
|
||||
<a name="installation" />
|
||||
<h2>Program installation</h2>
|
||||
<p>
|
||||
See the <a href="systemreq.html">system requirements</a> and
|
||||
<a href="installation.html">installation procedures</a> for KeePassX.
|
||||
If you are viewing this documentation from already installed KeePassX
|
||||
program, you can safely skip this part.
|
||||
</p>
|
||||
|
||||
<a name="quickstart" />
|
||||
<h2>Quick-start Guide</h2>
|
||||
<p>
|
||||
Master the <a href="quickstart.html">essential core
|
||||
features of KeePassX</a> in minutes.
|
||||
</p>
|
||||
<!--
|
||||
<a name="features" />
|
||||
<h2>Features</h2>
|
||||
<p>
|
||||
More detailed overview of the <a href="features.html">current
|
||||
KeePassX features</a>.
|
||||
</p>
|
||||
-->
|
||||
<a name="faq" />
|
||||
<h2>Frequently Asked Questions</h2>
|
||||
<p>
|
||||
See answers to the most <a href="faq.html">Frequently Asked Questions</a>.
|
||||
</p>
|
||||
|
||||
<a name="support" />
|
||||
<h2>Contact and Support</h2>
|
||||
<p>
|
||||
If you have further questions or want to make suggestions
|
||||
about the program, please visit
|
||||
<a href="http://www.keepassx.org/forum/">KeePassX forum</a> <img src="external.png" />.
|
||||
</p>
|
||||
|
||||
<!--
|
||||
<a name="" />
|
||||
<h2></h2>
|
||||
<p>
|
||||
|
||||
</p>
|
||||
-->
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,50 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>KeePassX Installation Guide</title>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top" />
|
||||
<h1>KeePassX Installation Guide</h1>
|
||||
<p>
|
||||
This guide will help you to install KeePassX.
|
||||
</p>
|
||||
|
||||
<a name="installation_binary" />
|
||||
<h2>Installation from binary</h2>
|
||||
<p>
|
||||
Easiest way to use KeePassX is to install from a binary. Ready-built
|
||||
binaries are available for all commonly used Linux distributions
|
||||
from their respective binary package repositories. Binaries for
|
||||
Mac OS X and Windows are available at the <a href="http://keepassx.org/">
|
||||
project web site</a> <img src="external.png" />.
|
||||
</p>
|
||||
<p>Installation commands for some Linux distributions:</p>
|
||||
<dl>
|
||||
<dt><b>Ubuntu Linux</b></dt>
|
||||
<dd><tt>sudo apt-get install keepassx</tt>
|
||||
<br><br>or use Synaptic Package Manager from the
|
||||
<b>System</b> > <b>Administation menu.</b></dd>
|
||||
<dt><b>Fedora</b></dt>
|
||||
<dd><tt>su -<br>yum install keepassx</tt></dd>
|
||||
</dl>
|
||||
|
||||
<a name="installation_source" />
|
||||
<h2>Installation from source</h2>
|
||||
<p>
|
||||
If your distribution doesn't have ready-built binary for
|
||||
KeePassX or you would like to try out latest SVN version
|
||||
of KeePassX, you can try building from source. Instructions
|
||||
can be found at the <a href="http://www.keepassx.org/howto">
|
||||
project web site</a> <img src="external.png" />.
|
||||
</p>
|
||||
<!--
|
||||
<a name="" />
|
||||
<h2></h2>
|
||||
<p>
|
||||
|
||||
</p>
|
||||
-->
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,233 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>KeePassX Quick-start Guide</title>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top" />
|
||||
<h1>KeePassX Quick-start Guide</h1>
|
||||
<p>
|
||||
This guide helps you to manage your
|
||||
passwords efficiently and securely with KeePassX.
|
||||
</p>
|
||||
|
||||
<a name="startup" />
|
||||
<h2>Starting up</h2>
|
||||
<p>
|
||||
After starting KeePassX for the first time, you
|
||||
are presented with the main window with
|
||||
no open database file. If you have used KeePassX
|
||||
(or KeePass Classic on Windows) previously, you can
|
||||
open your existing database. Otherwise we begin
|
||||
with creating a new password database.
|
||||
</p>
|
||||
|
||||
<a name="database_create" />
|
||||
<h2>Creating a new password database</h2>
|
||||
<p>
|
||||
KeePassX stores your password entries into
|
||||
a password database file when the it's not running.
|
||||
To create a new password database, click the
|
||||
<span class="gui">"New Database"</span>
|
||||
icon on the program toolbar (it is the first icon from the
|
||||
left on the toolbar).
|
||||
</p>
|
||||
<p>
|
||||
Second, you need to set the <b>master key</b> for the
|
||||
password database. This key is used to encrypt (ie. lock)
|
||||
the password database so it cannot be read by anybody
|
||||
else but you. The master key can be a password
|
||||
or a key file or both.
|
||||
If you check both, you must provide both the password
|
||||
and the key file to every time you want to unlock the database.
|
||||
</p>
|
||||
<p>
|
||||
If you decide to use a password,
|
||||
<a href="http://www.us-cert.gov/cas/tips/ST04-002.html">
|
||||
choose and protect it carefully</a> <img src="external.png" />.
|
||||
The password should be strong, ie. long enough
|
||||
(at least 8 characters) and preferably contain lower and
|
||||
uppercase characters, numbers and special characters (e.g. !#?).
|
||||
You should also memorize the password well, because
|
||||
if you forget it, there is no way retrieving it later
|
||||
from the locked database. You will be asked
|
||||
to give the password twice to ensure that
|
||||
there is no typing errors in the password.
|
||||
</p>
|
||||
<p>
|
||||
The key file can be any file on your computer, e.g. a picture or
|
||||
a text document.
|
||||
You can also create a randomly-generated key file by first
|
||||
selecting the key file check box and clicking
|
||||
<span class="gui">"Generate Key File..."</span>.
|
||||
You can store the key file for example on a USB memory stick,
|
||||
to keep it with you everywhere.
|
||||
</p>
|
||||
|
||||
<a name="password_add" />
|
||||
<h2>Adding password entries</h2>
|
||||
<p>
|
||||
After you have created or opened a database, you
|
||||
can add password entries to the database.
|
||||
A password entry essentially consists of a title,
|
||||
user name and password. It may have other entries
|
||||
as well, such as URL (Internet link) and comments.
|
||||
To add a new password entry, select a group from
|
||||
the list on the left first, then
|
||||
click the <span class="gui">
|
||||
"Add New Entry"</span> icon on the program toolbar.
|
||||
</p>
|
||||
<p>
|
||||
In the "New Entry" dialog you can enter
|
||||
the information you want to into respective text boxes.
|
||||
If you are creating a new account to e.g. a web forum,
|
||||
you can use the password generator to generate strong
|
||||
random passwords for you.
|
||||
</p>
|
||||
|
||||
<a name="database_save" />
|
||||
<h2>Saving the database</h2>
|
||||
<p>
|
||||
If you have added or edited entries in your database,
|
||||
they are not automatically save to the database file by default.
|
||||
You can save the database by clicking the <span class="gui">
|
||||
"Save Database"</span> icon.
|
||||
</p>
|
||||
<p>
|
||||
You may also want to
|
||||
enable <span class="gui">"Automatically save database
|
||||
after every change"</span> option from the
|
||||
<span class="gui">"Extras"</span> >
|
||||
<span class="gui">"Settings..."</span> >
|
||||
<span class="gui">"General (2)"</span> page.
|
||||
(On OS X, the page is found from
|
||||
<span class="gui">"KeePassX"</span> (Application menu) >
|
||||
<span class="gui">"Preferences"</span>.)
|
||||
</p>
|
||||
|
||||
<a name="database_open" />
|
||||
<h2>Opening a database</h2>
|
||||
<p>
|
||||
By default, on next startup, KeePassX opens a
|
||||
<span class="gui">"Enter Master Key"</span>
|
||||
dialog for the last used password database. If you wish
|
||||
to open another password database, click
|
||||
<span class="gui">"Cancel"</span>
|
||||
and click <span class="gui">"Open Database"</span> icon
|
||||
on the program toolbar and select the wanted password
|
||||
database file from the file system. You can, of course,
|
||||
do this at any point when the KeePassX main window is active.
|
||||
</p>
|
||||
|
||||
<a name="password_edit" />
|
||||
<h2>Editing and removing password entries</h2>
|
||||
<p>
|
||||
If you wish to edit a password entry, you can do
|
||||
so by double-clicking on the entry title,
|
||||
or by selecting the entry and then clicking the
|
||||
<span class="gui">"View/Edit Entry"</span> icon
|
||||
on the program toolbar.
|
||||
</p>
|
||||
<p>
|
||||
To delete a password entry, first select the
|
||||
entry and click <span class="gui">"Delete Entry"</span> icon
|
||||
on the program toolbar or hit <tt>Ctrl-D</tt> (<tt>Cmd+D</tt> on OS X)
|
||||
on the keyboard.
|
||||
</p>
|
||||
|
||||
<a name="password_copy" />
|
||||
<h2>Copying password (and user name) to the clipboard</h2>
|
||||
<p>
|
||||
You can copy the currently selected password by hitting <tt>Ctrl-C</tt>
|
||||
(<tt>Cmd-C</tt> on OS X) and user name with <tt>Ctrl-B</tt> (<tt>Cmd-B</tt>
|
||||
on OS X) on the keyboard. Then you can hit <tt>Ctrl-V</tt>
|
||||
(<tt>Cmd-V</tt> on OS X) to paste the password or username
|
||||
to any program that supports pasting from the clipboard.
|
||||
</p>
|
||||
|
||||
<a name="autotype" />
|
||||
<h2>Setup Auto-Type (currently Linux only)</h2>
|
||||
<p>
|
||||
<b>Auto-Type</b> is a feature that allows you to e.g. log in
|
||||
to web page by hitting only one key combination.
|
||||
KeePassX does the rest of the typing for you. Auto-Type reads
|
||||
the title of currently active window on your screen
|
||||
and matches it to the configured database entries.
|
||||
If a matching window title is found from the password
|
||||
database, it executes a predefined key sequence
|
||||
(by default your username, <tt>TAB</tt>, password, <tt>ENTER</tt>) in
|
||||
the active window. This feature is currently available
|
||||
in the Linux version only.
|
||||
</p>
|
||||
<p>
|
||||
To enable Auto-Type, first go to
|
||||
<span class="gui">"Extras"</span> >
|
||||
<span class="gui">"Settings..."</span> >
|
||||
<span class="gui">"Advanced"</span> page
|
||||
and set the <span class="gui">"Global Auto-Type Shortcut"</span>
|
||||
by clicking the text box and typing the desired
|
||||
keyboard shortcut (e.g. <tt>Ctrl-Shift-N</tt>).
|
||||
Click <span class="gui">"OK"</span> to exit the dialog.
|
||||
</p>
|
||||
<p>
|
||||
Then, for example, open the web page where you
|
||||
want to be able to log in with Auto-Type. Let's
|
||||
for example open Google.com into Firefox and
|
||||
try to do automated search with Auto-Type. Go
|
||||
to Google.com in Firefox and you'll notice
|
||||
that your window title is now "Google - Mozilla Firefox"
|
||||
</p>
|
||||
<p>
|
||||
Now, create new password entry, that
|
||||
contains user name "test".
|
||||
Then, click the small <span class="gui">"Tools"</span>
|
||||
button at the bottom of the <span class="gui">"New Entry"</span>
|
||||
dialog, and select <span class="gui">"Auto-Type: Select target window"</span>
|
||||
Select "Google - Mozilla Firefox" from the dropdown menu and
|
||||
click <span class="gui">"OK"</span>. You should see now a new
|
||||
line in the <span class="gui">"Comment:"</span> box, which reads:<br/><br/>
|
||||
|
||||
<tt>Auto-Type-Window: Google - Mozilla Firefox</tt><br/><br/>
|
||||
|
||||
Now you have associated that window title to this entry.
|
||||
</p>
|
||||
<p>
|
||||
Finally, let's customize the Auto-Type key sequence
|
||||
to just enter your username and hit <tt>ENTER</tt>.
|
||||
Click again <span class="gui">"Tools"</span>
|
||||
and select <span class="gui">"Auto-Type: Customize Sequence"</span>.
|
||||
Now there's another new line in the <span class="gui">"Comment:"</span> box,
|
||||
which reads:<br/><br/>
|
||||
|
||||
<tt>Auto-Type: {USERNAME}{TAB}{PASSWORD}{ENTER}</tt><br/><br/>
|
||||
|
||||
Change this line to:<br/><br/>
|
||||
|
||||
<tt>Auto-Type: {USERNAME}{ENTER}</tt><br/><br/>
|
||||
|
||||
So that it would just type in your username and hit <tt>ENTER</tt>.
|
||||
Click <span class="gui">"OK"</span> to save the entry.
|
||||
</p>
|
||||
<p>
|
||||
Now, you can test the Auto-Type by returning to the
|
||||
Firefox window and hitting the global Auto-Type keyboard
|
||||
shortcut (e.g. <tt>Ctrl-Shift-N</tt>) in it.
|
||||
If everything went correctly, KeePassX should now enter
|
||||
"test" in the search box and start the search query
|
||||
by hitting <tt>ENTER</tt>.
|
||||
</p>
|
||||
<p>
|
||||
By modifing the Auto-Type key sequence you can tailor
|
||||
Auto-Type to suit almost every web login page you'll enter.
|
||||
</p>
|
||||
|
||||
<!--
|
||||
<a name="" />
|
||||
<h2></h2>
|
||||
<p>
|
||||
|
||||
</p>
|
||||
-->
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,46 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>KeePassX System Requirements</title>
|
||||
</head>
|
||||
<body>
|
||||
<a name="top" />
|
||||
<h1>KeePassX System Requirements</h1>
|
||||
<p>
|
||||
This guide tells what is required from your system
|
||||
in order to build or run KeePassX.
|
||||
</p>
|
||||
|
||||
<a name="requirements" />
|
||||
<h2>Requirements</h2>
|
||||
<p>
|
||||
These are the minimum requirements for the KeePassX v0.3.1 and higher
|
||||
for building KeePassX from source.
|
||||
</p>
|
||||
<p>
|
||||
Build dependencies:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
Qt library version >= 4.3.<br>
|
||||
(required modules: QtCore, QtGui, QtXML.)
|
||||
</li>
|
||||
<li>libXtst</li>
|
||||
</ul>
|
||||
<p>
|
||||
Application bundle:
|
||||
</p>
|
||||
<ul>
|
||||
<li>X11 with XRanR, Xinerama and XTest extensions.</li>
|
||||
<li>Glibc 2.4</li>
|
||||
</ul>
|
||||
<!--
|
||||
<a name="" />
|
||||
<h2></h2>
|
||||
<p>
|
||||
|
||||
</p>
|
||||
-->
|
||||
</body>
|
||||
</html>
|
|
@ -1,5 +1,12 @@
|
|||
<!DOCTYPE RCC><RCC version="1.0">
|
||||
<qresource>
|
||||
<file>default-detailview.html</file>
|
||||
<file>docs/faq.html</file>
|
||||
<file>docs/features.html</file>
|
||||
<file>docs/index.html</file>
|
||||
<file>docs/installation.html</file>
|
||||
<file>docs/quickstart.html</file>
|
||||
<file>docs/systemreq.html</file>
|
||||
<file>docs/external.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
|
@ -132,6 +132,7 @@ FORMS += forms/AboutDlg.ui \
|
|||
forms/EditEntryDlg.ui \
|
||||
forms/EditGroupDlg.ui \
|
||||
forms/ExpiredEntriesDlg.ui \
|
||||
forms/HelpDlg.ui \
|
||||
forms/MainWindow.ui \
|
||||
forms/ManageBookmarksDlg.ui \
|
||||
forms/PasswordDlg.ui \
|
||||
|
@ -207,6 +208,7 @@ HEADERS += main.h \
|
|||
dialogs/EditEntryDlg.h \
|
||||
dialogs/EditGroupDlg.h \
|
||||
dialogs/ExpiredEntriesDlg.h \
|
||||
dialogs/HelpDlg.h \
|
||||
dialogs/ManageBookmarksDlg.h \
|
||||
dialogs/PasswordDlg.h \
|
||||
dialogs/PasswordGenDlg.h \
|
||||
|
@ -265,6 +267,7 @@ SOURCES += main.cpp \
|
|||
dialogs/EditEntryDlg.cpp \
|
||||
dialogs/EditGroupDlg.cpp \
|
||||
dialogs/ExpiredEntriesDlg.cpp \
|
||||
dialogs/HelpDlg.cpp \
|
||||
dialogs/ManageBookmarksDlg.cpp \
|
||||
dialogs/PasswordDlg.cpp \
|
||||
dialogs/PasswordGenDlg.cpp \
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -544,7 +544,7 @@ Sei sicuro?</translation>
|
|||
<message>
|
||||
<location filename="../dialogs/SettingsDlg.cpp" line="424"/>
|
||||
<source>System Language</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Lingua di sistema</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -1123,7 +1123,7 @@ p, li { white-space: pre-wrap; }
|
|||
<message>
|
||||
<location filename="../export/Export.cpp" line="26"/>
|
||||
<source>Export File...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Esporta file...</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -1329,57 +1329,57 @@ p, li { white-space: pre-wrap; }
|
|||
<message>
|
||||
<location filename="../forms/PasswordGenDlg.ui" line="50"/>
|
||||
<source>Random</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Casuale</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/PasswordGenDlg.ui" line="99"/>
|
||||
<source>&Underline</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>&Sottolinea</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/PasswordGenDlg.ui" line="116"/>
|
||||
<source>&White Spaces</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>S&pazi bianchi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/PasswordGenDlg.ui" line="133"/>
|
||||
<source>&Minus</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>&Meno</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/PasswordGenDlg.ui" line="193"/>
|
||||
<source>Exclude look-alike characters</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Escludi caratteri identici</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/PasswordGenDlg.ui" line="200"/>
|
||||
<source>Ensure that password contains characters from every group</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Assicurati che la password contenga caratteri di ogni gruppo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/PasswordGenDlg.ui" line="216"/>
|
||||
<source>Pronounceable</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Pronunciabile</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/PasswordGenDlg.ui" line="240"/>
|
||||
<source>Lower Letters</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Lettere minuscole</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/PasswordGenDlg.ui" line="247"/>
|
||||
<source>Upper Letters</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Lettere maiuscole</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/PasswordGenDlg.ui" line="254"/>
|
||||
<source>Numbers</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Numeri</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/PasswordGenDlg.ui" line="261"/>
|
||||
<source>Special Characters</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Caratteri speciali</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -1590,12 +1590,12 @@ La chiave è errata oppure il file è danneggiato.</translation>
|
|||
<message>
|
||||
<location filename="../Kdb3Database.cpp" line="598"/>
|
||||
<source>Unable to initalize the twofish algorithm.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Impossibile inizializzare l'algoritmo twofish.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../Kdb3Database.cpp" line="1333"/>
|
||||
<source>The database has been opened read-only.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Il database è stato aperto in sola lettura.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -1629,72 +1629,72 @@ La chiave è errata oppure il file è danneggiato.</translation>
|
|||
<translation>Eliminare?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../lib/EntryView.cpp" line="258"/>
|
||||
<location filename="../lib/EntryView.cpp" line="262"/>
|
||||
<source>Error</source>
|
||||
<translation>Errore</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../lib/EntryView.cpp" line="258"/>
|
||||
<location filename="../lib/EntryView.cpp" line="262"/>
|
||||
<source>At least one group must exist before adding an entry.</source>
|
||||
<translation>Deve esistere almeno un gruppo prima di aggiungere una voce.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../lib/EntryView.cpp" line="258"/>
|
||||
<location filename="../lib/EntryView.cpp" line="262"/>
|
||||
<source>OK</source>
|
||||
<translation>OK</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../lib/EntryView.cpp" line="477"/>
|
||||
<location filename="../lib/EntryView.cpp" line="481"/>
|
||||
<source>Title</source>
|
||||
<translation>Titolo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../lib/EntryView.cpp" line="479"/>
|
||||
<location filename="../lib/EntryView.cpp" line="483"/>
|
||||
<source>Username</source>
|
||||
<translation>Nome utente</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../lib/EntryView.cpp" line="481"/>
|
||||
<location filename="../lib/EntryView.cpp" line="485"/>
|
||||
<source>URL</source>
|
||||
<translation>URL</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../lib/EntryView.cpp" line="483"/>
|
||||
<location filename="../lib/EntryView.cpp" line="487"/>
|
||||
<source>Password</source>
|
||||
<translation>Password</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../lib/EntryView.cpp" line="485"/>
|
||||
<location filename="../lib/EntryView.cpp" line="489"/>
|
||||
<source>Comments</source>
|
||||
<translation>Commenti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../lib/EntryView.cpp" line="487"/>
|
||||
<location filename="../lib/EntryView.cpp" line="491"/>
|
||||
<source>Expires</source>
|
||||
<translation>Scade</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../lib/EntryView.cpp" line="489"/>
|
||||
<location filename="../lib/EntryView.cpp" line="493"/>
|
||||
<source>Creation</source>
|
||||
<translation>Creazione</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../lib/EntryView.cpp" line="491"/>
|
||||
<location filename="../lib/EntryView.cpp" line="495"/>
|
||||
<source>Last Change</source>
|
||||
<translation>Ultima modifica</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../lib/EntryView.cpp" line="493"/>
|
||||
<location filename="../lib/EntryView.cpp" line="497"/>
|
||||
<source>Last Access</source>
|
||||
<translation>Ultimo accesso</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../lib/EntryView.cpp" line="495"/>
|
||||
<location filename="../lib/EntryView.cpp" line="499"/>
|
||||
<source>Attachment</source>
|
||||
<translation>Allegato</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../lib/EntryView.cpp" line="497"/>
|
||||
<location filename="../lib/EntryView.cpp" line="501"/>
|
||||
<source>Group</source>
|
||||
<translation>Gruppo</translation>
|
||||
</message>
|
||||
|
@ -1729,23 +1729,23 @@ La chiave è errata oppure il file è danneggiato.</translation>
|
|||
<message>
|
||||
<location filename="../lib/GroupView.cpp" line="90"/>
|
||||
<source>Are you sure you want to delete this group, all its child groups and all their entries?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Sei sicuro di voler eliminare questo gruppo, tutti i suoi sottogruppi e le loro voci?</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>KeepassMainWindow</name>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="1420"/>
|
||||
<location filename="../mainwindow.cpp" line="1421"/>
|
||||
<source>Ready</source>
|
||||
<translation>Pronto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="1323"/>
|
||||
<location filename="../mainwindow.cpp" line="1324"/>
|
||||
<source>Locked</source>
|
||||
<translation>Bloccato</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="1338"/>
|
||||
<location filename="../mainwindow.cpp" line="1339"/>
|
||||
<source>Unlocked</source>
|
||||
<translation>Sbloccato</translation>
|
||||
</message>
|
||||
|
@ -1845,12 +1845,12 @@ La chiave è errata oppure il file è danneggiato.</translation>
|
|||
<translation>Il file di database non esiste.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="1423"/>
|
||||
<location filename="../mainwindow.cpp" line="1424"/>
|
||||
<source>Loading Database...</source>
|
||||
<translation>Caricamento Database...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="1426"/>
|
||||
<location filename="../mainwindow.cpp" line="1427"/>
|
||||
<source>Loading Failed</source>
|
||||
<translation>Caricamento fallito</translation>
|
||||
</message>
|
||||
|
@ -1877,7 +1877,7 @@ to save the changes?</source>
|
|||
salvare le modifiche?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="1111"/>
|
||||
<location filename="../mainwindow.cpp" line="1112"/>
|
||||
<source>new</source>
|
||||
<translation>nuovo</translation>
|
||||
</message>
|
||||
|
@ -1887,97 +1887,97 @@ salvare le modifiche?</translation>
|
|||
<translation>Apri Database...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="908"/>
|
||||
<location filename="../mainwindow.cpp" line="909"/>
|
||||
<source>KeePass Databases (*.kdb)</source>
|
||||
<translation>Database KeePass (*.kdb)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="908"/>
|
||||
<location filename="../mainwindow.cpp" line="909"/>
|
||||
<source>All Files (*)</source>
|
||||
<translation>Tutti i files (*)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="729"/>
|
||||
<location filename="../mainwindow.cpp" line="730"/>
|
||||
<source>Expired</source>
|
||||
<translation>Scaduta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="743"/>
|
||||
<location filename="../mainwindow.cpp" line="744"/>
|
||||
<source>1 Month</source>
|
||||
<translation>1 Mese</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="745"/>
|
||||
<location filename="../mainwindow.cpp" line="746"/>
|
||||
<source>%1 Months</source>
|
||||
<translation>%1 Mesi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="751"/>
|
||||
<location filename="../mainwindow.cpp" line="752"/>
|
||||
<source>1 Year</source>
|
||||
<translation>1 Anno</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="753"/>
|
||||
<location filename="../mainwindow.cpp" line="754"/>
|
||||
<source>%1 Years</source>
|
||||
<translation>%1 Anni</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="759"/>
|
||||
<location filename="../mainwindow.cpp" line="760"/>
|
||||
<source>1 Day</source>
|
||||
<translation>1 Giorno</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="761"/>
|
||||
<location filename="../mainwindow.cpp" line="762"/>
|
||||
<source>%1 Days</source>
|
||||
<translation>%1 Giorni</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="765"/>
|
||||
<location filename="../mainwindow.cpp" line="766"/>
|
||||
<source>less than 1 day</source>
|
||||
<translation>meno di 1 giorno</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="855"/>
|
||||
<location filename="../mainwindow.cpp" line="856"/>
|
||||
<source>Clone Entry</source>
|
||||
<translation>Duplica voce</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="857"/>
|
||||
<location filename="../mainwindow.cpp" line="858"/>
|
||||
<source>Delete Entry</source>
|
||||
<translation>Elimina voce</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="870"/>
|
||||
<location filename="../mainwindow.cpp" line="871"/>
|
||||
<source>Clone Entries</source>
|
||||
<translation>Duplica voci</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="872"/>
|
||||
<location filename="../mainwindow.cpp" line="873"/>
|
||||
<source>Delete Entries</source>
|
||||
<translation>Elimina voci</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="912"/>
|
||||
<location filename="../mainwindow.cpp" line="913"/>
|
||||
<source>File could not be saved.</source>
|
||||
<translation>Impossibile salvare il file.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="908"/>
|
||||
<location filename="../mainwindow.cpp" line="909"/>
|
||||
<source>Save Database...</source>
|
||||
<translation>Salva Database...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="1324"/>
|
||||
<location filename="../mainwindow.cpp" line="1325"/>
|
||||
<source>Un&lock Workspace</source>
|
||||
<translation>Sb&locca l'area di lavoro</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="1339"/>
|
||||
<location filename="../mainwindow.cpp" line="1340"/>
|
||||
<source>&Lock Workspace</source>
|
||||
<translation>&Blocca l'area di lavoro</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="1105"/>
|
||||
<location filename="../mainwindow.cpp" line="1106"/>
|
||||
<source>Show &Toolbar</source>
|
||||
<translation>Mostra barra degli &strumenti</translation>
|
||||
</message>
|
||||
|
@ -1999,12 +1999,12 @@ salvare le modifiche?</translation>
|
|||
<message>
|
||||
<location filename="../mainwindow.cpp" line="366"/>
|
||||
<source>Ctrl+I</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Ctrl+I</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="407"/>
|
||||
<source>Database locked</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Database bloccato</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="411"/>
|
||||
|
@ -2012,28 +2012,31 @@ salvare le modifiche?</translation>
|
|||
This means that either someone else has opened the file or KeePassX crashed last time it opened the database.
|
||||
|
||||
Do you want to open it anyway?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Il database che stai tentando di aprire è bloccato.
|
||||
Questo significa che qualcun altro ha aperto il file o che KeePassX si è bloccato l'ultima volta che si è aperto il database.
|
||||
|
||||
Vuoi comunque aprirlo?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="517"/>
|
||||
<source>The current file was modified.
|
||||
Do you want to save the changes?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Il file attuale è stato modificato. Vuoi salvare le modifiche?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="535"/>
|
||||
<source>Couldn't remove database lock file.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Impossibile rimuovere il file di blocco del database.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="414"/>
|
||||
<source>Open read-only</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Apri in sola lettura</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="1429"/>
|
||||
<location filename="../mainwindow.cpp" line="1430"/>
|
||||
<source>Couldn't create lock file. Opening the database read-only.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Impossibile creare il file di blocco. Apertura del database in sola lettura.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -2384,32 +2387,32 @@ Do you want to save the changes?</source>
|
|||
<message>
|
||||
<location filename="../forms/MainWindow.ui" line="305"/>
|
||||
<source>&Add New Subgroup...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>&Aggiungi nuovo sottogruppo...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/MainWindow.ui" line="584"/>
|
||||
<source>Copy URL to Clipboard</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Copia URL negli Appunti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/MainWindow.ui" line="589"/>
|
||||
<source>Add New Group...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Aggiungi nuovo gruppo...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/MainWindow.ui" line="172"/>
|
||||
<source>&Entries</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>&Voci</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/MainWindow.ui" line="240"/>
|
||||
<source>&Groups</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>&Gruppi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/MainWindow.ui" line="594"/>
|
||||
<source>Sort groups</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Ordina gruppi</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -3024,52 +3027,52 @@ Il file non è leggibile.</translation>
|
|||
<message>
|
||||
<location filename="../forms/SettingsDlg.ui" line="74"/>
|
||||
<source>General (1)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Generale (1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/SettingsDlg.ui" line="79"/>
|
||||
<source>General (2)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Generale (2)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/SettingsDlg.ui" line="84"/>
|
||||
<source>Appearance</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Aspetto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/SettingsDlg.ui" line="89"/>
|
||||
<source>Language</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Lingua</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/SettingsDlg.ui" line="372"/>
|
||||
<source>Save backups of modified entries into the 'Backup' group</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Salva backup delle voci modificate nel gruppo 'Backup'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/SettingsDlg.ui" line="400"/>
|
||||
<source>Delete backup entries older than:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Elimina le voci di backup più vecchie di:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/SettingsDlg.ui" line="426"/>
|
||||
<source>days</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>giorni</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/SettingsDlg.ui" line="442"/>
|
||||
<source>Automatically save database after every change</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Salva automaticamente il database dopo ogni modifica</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/SettingsDlg.ui" line="845"/>
|
||||
<source>Language:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Lingua:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/SettingsDlg.ui" line="852"/>
|
||||
<source>Author:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Autore:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -3118,13 +3121,14 @@ Il file non è leggibile.</translation>
|
|||
<message>
|
||||
<location filename="../forms/TargetWindowDlg.ui" line="13"/>
|
||||
<source>Auto-Type: Select Target Window</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Auto Digitazione: seleziona la finestra da usare</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../forms/TargetWindowDlg.ui" line="19"/>
|
||||
<source>To specify the target window, either select an existing currently-opened window
|
||||
from the drop-down list, or enter the window title manually:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Per specificare la finestra da usare, o selezioni una finestra attualmente aperta
|
||||
dal menu a tendina, oppure inserisci il titolo della finestra manualmente:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -3132,19 +3136,19 @@ from the drop-down list, or enter the window title manually:</source>
|
|||
<message>
|
||||
<location filename="../lib/tools.cpp" line="352"/>
|
||||
<source>$TRANSLATION_AUTHOR</source>
|
||||
<translation type="unfinished">Diego Pierotto</translation>
|
||||
<translation>Diego Pierotto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/AboutDlg.cpp" line="35"/>
|
||||
<source>$TRANSLATION_AUTHOR_EMAIL</source>
|
||||
<comment>Here you can enter your email or homepage if you want.</comment>
|
||||
<translation type="unfinished">ita.translations@tiscali.it</translation>
|
||||
<translation>ita.translations@tiscali.it</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../lib/tools.cpp" line="351"/>
|
||||
<source>$LANGUAGE_NAME</source>
|
||||
<comment>Insert your language name in the format: English (United States)</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Italiano (Italia)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
|
Loading…
Reference in New Issue