@@ -93,12 +93,6 @@ void MainWindow::compile() {
9393 texdir = QFileInfo (tmpdir.path ());
9494 }
9595 QFileInfo templateDir = QFileInfo (templateFile.path ());
96- // TODO: make workdir user-configurable
97- if (templateDir.absolutePath () == " " ) {
98- workdir = texdir;
99- } else {
100- workdir = templateDir;
101- }
10296
10397 QString odir (" --output-directory=" );
10498 odir.append (dir->path ());
@@ -273,6 +267,7 @@ MainWindow::MainWindow() : currentDoc(NULL), renderProcess(NULL), currentPage(0)
273267
274268 connect (display, SIGNAL (zoomChanged (double )), this , SLOT (render (double )));
275269 connect (browseButton, SIGNAL (clicked ()), SLOT (browse ()));
270+ connect (workdirButton, SIGNAL (clicked ()), SLOT (chooseWorkdir ()));
276271
277272 connect (prevImage, SIGNAL (triggered ()), this , SLOT (gotoPreviousImage ()));
278273 connect (nextImage, SIGNAL (triggered ()), this , SLOT (gotoNextImage ()));
@@ -336,6 +331,9 @@ void MainWindow::load(const QUrl &url) {
336331 std::cout << " Loading " << url.toString ().toStdString () << std::endl;
337332 texdir = QFileInfo (url.toLocalFile ());
338333 watchme (url.toLocalFile ());
334+
335+ workdir = texdir;
336+ updateRootDirectory ();
339337 katePart->openUrl (url);
340338}
341339
@@ -362,10 +360,23 @@ void MainWindow::setupUI() {
362360 templateLayout = new QHBoxLayout;
363361 templateLayout->addWidget (templateLabel);
364362 templateLayout->addWidget (browseButton);
363+
364+ workdirLabel = new QLineEdit (" Working directory" );
365+ workdirLabel->setReadOnly (true );
366+ workdirButton = new QPushButton (" Change working directory..." );
367+
368+ workdirLayout = new QHBoxLayout;
369+ workdirLayout->addWidget (workdirLabel);
370+ workdirLayout->addWidget (workdirButton);
365371
366372 containerLayout = new QVBoxLayout;
367373 splitLogView = new QSplitter (Qt::Vertical, window);
368- containerLayout->addLayout (templateLayout);
374+
375+ wdtmplLayout = new QHBoxLayout;
376+ wdtmplLayout->addLayout (templateLayout);
377+ wdtmplLayout->addLayout (workdirLayout);
378+ containerLayout->addLayout (wdtmplLayout);
379+
369380 splitView->addWidget (view);
370381
371382 display = new ZoomScrollImage;
@@ -391,7 +402,7 @@ void MainWindow::setupUI() {
391402 logWidget->setLayout (logLayout);
392403
393404 splitLogView->addWidget (logWidget);
394- splitLogView->setStretchFactor (0 , 7 );
405+ splitLogView->setStretchFactor (0 , 9 );
395406 splitLogView->setStretchFactor (1 , 1 );
396407
397408 containerLayout->addWidget (splitLogView);
@@ -478,3 +489,15 @@ void MainWindow::browse() {
478489 updateTemplate (filename);
479490 }
480491}
492+
493+ void MainWindow::chooseWorkdir () {
494+ workdir = QFileInfo (QFileDialog::getExistingDirectory (this , QString (" Select Working Directory" ),
495+ workdir.absolutePath (), QFileDialog::ShowDirsOnly) + " /" );
496+ std::cout << " Selected working directory: " << workdir.path ().toStdString () << std::endl;
497+ updateRootDirectory ();
498+ refresh ();
499+ }
500+
501+ void MainWindow::updateRootDirectory () {
502+ workdirLabel->setText (workdir.absolutePath ());
503+ }
0 commit comments