Skip to content

Commit 4037361

Browse files
committed
user-configurable working directory
1 parent 6c9683d commit 4037361

File tree

2 files changed

+39
-9
lines changed

2 files changed

+39
-9
lines changed

mainwindow.cpp

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
}

mainwindow.h

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ public slots:
4040
void documentSaved(KTextEditor::Document *document, bool saveas);
4141
void refresh();
4242
void browse();
43+
void chooseWorkdir();
4344
void render(double scale);
4445
void renderFinished(int code);
4546
void renderFailed(QProcess::ProcessError);
@@ -63,15 +64,18 @@ public slots:
6364

6465
void clearLog();
6566
void appendLog(QString str);
66-
67+
68+
void updateRootDirectory();
6769

6870
QWidget *window;
6971
QSplitter *splitView;
7072
QHBoxLayout *mainLayout;
7173
QHBoxLayout *templateLayout;
74+
QHBoxLayout *workdirLayout;
7275
QHBoxLayout *logLayout;
7376
QSpacerItem *spacerItem;
7477
QVBoxLayout *containerLayout;
78+
QHBoxLayout *wdtmplLayout;
7579
QSplitter* splitLogView;
7680
QWidget *logWidget;
7781

@@ -92,6 +96,9 @@ public slots:
9296
QUrl templateFile;
9397
QLineEdit *templateLabel;
9498
QPushButton *browseButton;
99+
100+
QLineEdit *workdirLabel;
101+
QPushButton *workdirButton;
95102

96103
QPushButton* killButton;
97104

0 commit comments

Comments
 (0)