32 #include "ui_prefs_identity.h"
33 #include "ui_prefs_editor.h"
34 #include "ui_prefs_appearance.h"
35 #include "ui_prefs_tm.h"
36 #include "ui_prefs_projectmain.h"
37 #include "ui_prefs_project_advanced.h"
38 #include "ui_prefs_project_local.h"
41 #include <kconfigdialog.h>
43 #include <kstandarddirs.h>
46 #include <kstatusbar.h>
50 #include <kfiledialog.h>
51 #include <kmessagebox.h>
53 #include <kross/core/manager.h>
54 #include <kross/core/actioncollection.h>
55 #include <kross/ui/model.h>
56 #include <threadweaver/ThreadWeaver.h>
58 #include <QDragEnterEvent>
64 void SettingsController::cleanupSettingsController()
66 delete SettingsController::_instance;
67 SettingsController::_instance = 0;
74 qAddPostRoutine(SettingsController::cleanupSettingsController);
83 , m_projectActionsView(0)
93 if (KConfigDialog::showDialog(
"lokalize_settings"))
96 KConfigDialog *dialog =
new KConfigDialog(m_mainWindowPtr,
"lokalize_settings",
Settings::self());
97 dialog->setFaceType(KPageDialog::List);
101 Ui_prefs_identity ui_prefs_identity;
102 ui_prefs_identity.setupUi(w);
108 ui_prefs_identity.DefaultLangCode->setCurrentIndex(
LanguageListModel::instance()->sortModelRowForLangCode( grp.readEntry(
"DefaultLangCode",KGlobal::locale()->language()) ));
110 connect(ui_prefs_identity.DefaultLangCode,SIGNAL(activated(
int)),ui_prefs_identity.kcfg_DefaultLangCode,SLOT(setLangCode(
int)));
111 ui_prefs_identity.kcfg_DefaultLangCode->hide();
113 dialog->addPage(w, i18nc(
"@title:tab",
"Identity"),
"preferences-desktop-user");
117 Ui_prefs_editor ui_prefs_editor;
118 ui_prefs_editor.setupUi(w);
119 dialog->addPage(w, i18nc(
"@title:tab",
"Editing"),
"accessories-text-editor");
123 Ui_prefs_appearance ui_prefs_appearance;
124 ui_prefs_appearance.setupUi(w);
125 dialog->addPage(w, i18nc(
"@title:tab",
"Appearance"),
"preferences-desktop-font");
129 Ui_prefs_tm ui_prefs_tm;
130 ui_prefs_tm.setupUi(w);
131 dialog->addPage(w, i18nc(
"@title:tab",
"Translation Memory"),
"configure");
140 dialog->addPage(w, i18nc(
"@title:tab",
"Spellcheck"),
"spellcheck_setting");
141 connect(dialog,SIGNAL(okClicked()),w,SLOT(save()));
142 connect(dialog,SIGNAL(applyClicked()),w,SLOT(save()));
143 connect(dialog,SIGNAL(defaultClicked()),w,SLOT(slotDefault()));
164 setAcceptDrops(
true);
169 if (!event->mimeData()->urls().isEmpty() &&
event->mimeData()->urls().first().path().endsWith(QLatin1String(
".rc")))
175 Kross::ActionCollectionModel* scriptsModel=
static_cast<Kross::ActionCollectionModel*
>(model());
176 foreach(
const QUrl& url, event->mimeData()->urls())
177 if (url.path().endsWith(
".rc"))
178 scriptsModel->rootCollection()->readXmlFile(url.path());
186 int answer=KMessageBox::questionYesNoCancel(m_mainWindowPtr, i18n(
"You have accessed a feature that requires a project to be loaded. Do you want to create a new project or open an existing project?"),
187 QString(), KGuiItem(i18nc(
"@action",
"New"),KIcon(
"document-new")), KGuiItem(i18nc(
"@action",
"Open"),KIcon(
"project-open"))
189 if (answer==KMessageBox::Yes)
191 if (answer==KMessageBox::No)
201 path=KFileDialog::getOpenFileName(KUrl(),
202 i18n(
"*.lokalize *.ktp|Lokalize translation project"),
207 if (!path.isEmpty() && doOpen)
217 if (desirablePath.isEmpty())
218 desirablePath=QDir::homePath()+
"/index.lokalize";
219 QString path=KFileDialog::getSaveFileName(KUrl(desirablePath), i18n(
"*.lokalize|Lokalize translation project") ,m_mainWindowPtr);
224 if (m_projectActionsView && m_projectActionsView->model())
227 m_projectActionsView->model()->deleteLater();
228 m_projectActionsView->setModel(0);
241 if (KConfigDialog::showDialog(
"project_settings"))
243 if (!m_projectActionsView->model())
244 m_projectActionsView->setModel(
new Kross::ActionCollectionModel(m_projectActionsView,Kross::Manager::self().actionCollection()->collection(
Project::instance()->kind())));
248 KConfigDialog *dialog =
new KConfigDialog(m_mainWindowPtr,
"project_settings",
Project::instance());
249 dialog->setFaceType(KPageDialog::List);
254 Ui_prefs_projectmain ui_prefs_projectmain;
255 ui_prefs_projectmain.setupUi(w);
256 dialog->addPage(w, i18nc(
"@title:tab",
"General"),
"preferences-desktop-locale");
258 ui_prefs_projectmain.kcfg_LangCode->hide();
259 ui_prefs_projectmain.kcfg_PoBaseDir->hide();
260 ui_prefs_projectmain.kcfg_GlossaryTbx->hide();
265 connect(ui_prefs_projectmain.LangCode,SIGNAL(activated(
int)),
266 ui_prefs_projectmain.kcfg_LangCode,SLOT(setLangCode(
int)));
268 ui_prefs_projectmain.poBaseDir->setMode(KFile::Directory|KFile::ExistingOnly|KFile::LocalOnly);
269 ui_prefs_projectmain.glossaryTbx->setMode(KFile::File|KFile::ExistingOnly|KFile::LocalOnly);
270 ui_prefs_projectmain.glossaryTbx->setFilter(
"*.tbx\n*.xml");
271 connect(ui_prefs_projectmain.poBaseDir,SIGNAL(textChanged(QString)),
272 ui_prefs_projectmain.kcfg_PoBaseDir,SLOT(
setText(QString)));
273 connect(ui_prefs_projectmain.glossaryTbx,SIGNAL(textChanged(QString)),
274 ui_prefs_projectmain.kcfg_GlossaryTbx,SLOT(
setText(QString)));
275 ui_prefs_projectmain.poBaseDir->setUrl(p.
poDir());
276 ui_prefs_projectmain.glossaryTbx->setUrl(p.
glossaryPath());
284 Ui_project_advanced ui_project_advanced;
285 ui_project_advanced.setupUi(w);
286 ui_project_advanced.kcfg_PotBaseDir->hide();
287 ui_project_advanced.kcfg_BranchDir->hide();
288 ui_project_advanced.kcfg_AltDir->hide();
289 ui_project_advanced.potBaseDir->setMode(KFile::Directory|KFile::ExistingOnly|KFile::LocalOnly);
290 ui_project_advanced.branchDir->setMode(KFile::Directory|KFile::ExistingOnly|KFile::LocalOnly);
291 ui_project_advanced.altDir->setMode(KFile::Directory|KFile::ExistingOnly|KFile::LocalOnly);
292 connect(ui_project_advanced.potBaseDir,SIGNAL(textChanged(QString)), ui_project_advanced.kcfg_PotBaseDir,SLOT(
setText(QString)));
293 connect(ui_project_advanced.branchDir,SIGNAL(textChanged(QString)), ui_project_advanced.kcfg_BranchDir,SLOT(
setText(QString)));
294 connect(ui_project_advanced.altDir,SIGNAL(textChanged(QString)), ui_project_advanced.kcfg_AltDir,SLOT(
setText(QString)));
295 ui_project_advanced.potBaseDir->setUrl(p.
potDir());
296 ui_project_advanced.branchDir->setUrl(p.
branchDir());
297 ui_project_advanced.altDir->setUrl(p.
altTransDir());
298 dialog->addPage(w, i18nc(
"@title:tab",
"Advanced"),
"applications-development-translation");
302 QVBoxLayout* layout =
new QVBoxLayout(w);
303 layout->setSpacing(6);
304 layout->setMargin(11);
309 layout->addWidget(m_projectActionsView);
310 m_projectActionsView->setModel(
new Kross::ActionCollectionModel(w,Kross::Manager::self().actionCollection()->collection(
Project::instance()->kind())));
312 QHBoxLayout* btns =
new QHBoxLayout();
313 layout->addLayout(btns);
314 btns->addWidget(m_projectActionsView->createButton(w,
"edit"));
317 dialog->addPage(w, i18nc(
"@title:tab",
"Scripts"),
"preferences-system-windows-actions");
321 Ui_prefs_project_local ui_prefs_project_local;
322 ui_prefs_project_local.setupUi(w);
323 dialog->addPage(w,
Project::local(), i18nc(
"@title:tab",
"Personal"),
"preferences-desktop-user");
326 connect(dialog, SIGNAL(settingsChanged(QString)),
Project::instance(), SLOT(populateGlossary()));
327 connect(dialog, SIGNAL(settingsChanged(QString)),
Project::instance(), SLOT(populateDirModel()));
343 QStringList actionz(m_scriptsPrefWidget->items());
345 int i=actionz.size();
347 actionz[i]=KUrl::relativePath(projectDir,actionz.at(i));
348 m_scriptsRelPrefWidget->setItems(actionz);
void setText(const QString &)
static LanguageListModel * instance()
void reflectRelativePathsHack()
ScriptsView(QWidget *parent)
void dragEnterEvent(QDragEnterEvent *event)
ThreadWeaver::Weaver * weaver()
static Project * instance()
QString langCode() const
Get LangCode.
static ProjectLocal * local()
Singleton object that represents project.
void setText(QDomElement element, QString text)
Q_SCRIPTABLE QString desirablePath() const
void openDB(const QString &name)
void dropEvent(QDropEvent *event)
static SettingsController * instance()
QString glossaryPath() const
void load(const QString &file)
void reflectProjectConfigChange()
QString projectOpen(QString path=QString(), bool doOpen=true)
QString altTransDir() const
QString branchDir() const
Singleton that manages cfgs for Lokalize and projects.
void showSettingsDialog()
bool ensureProjectIsLoaded()
void generalSettingsChanged()
static DBFilesModel * instance()