summaryrefslogtreecommitdiffstats
path: root/src/libgui/new_dialogs.cpp
blob: d26c15c0e0460a30ef7e540330cafbd9d19d869e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/***************************************************************************
 *   Copyright (C) 2005-2007 Nicolas Hadacek <hadacek@kde.org>             *
 *   Copyright (C) 2003-2004 Alain Gibaud <alain.gibaud@free.fr>           *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 ***************************************************************************/
#include "new_dialogs.h"

#include <klocale.h>
#include <kiconloader.h>
#include <kpushbutton.h>

#include "common/gui/purl_gui.h"
#include "project.h"

//----------------------------------------------------------------------------
NewDialog::NewDialog(const QString &caption, QWidget *parent)
  : Dialog(parent, "new_dialog", true, caption, Ok|Cancel, Ok, false)
{
  _top = new QGridLayout(mainWidget(), 0, 0, 10, 10);
  _top->setColStretch(2, 1);

  _fLabel = new QLabel(mainWidget());
  _top->addWidget(_fLabel, 0, 0);
  _filename = new QLineEdit(mainWidget());
  connect(_filename, SIGNAL(textChanged(const QString &)), SLOT(changed()));
  _top->addMultiCellWidget(_filename, 0,0, 1,3);

  QLabel *label= new QLabel(i18n("Location:"), mainWidget());
  _top->addWidget(label, 1, 0);
  _dir = new QLineEdit(mainWidget());
  connect(_dir, SIGNAL(textChanged(const QString &)), SLOT(changed()));
  _top->addMultiCellWidget(_dir, 1,1, 1,2);
  KIconLoader loader;
  QIconSet iconset = loader.loadIcon("fileopen", KIcon::Toolbar);
  KPushButton *button = new KPushButton(iconset, QString::null, mainWidget());
  connect(button, SIGNAL(clicked()), SLOT(browse()));
  _top->addWidget(button, 1, 3);

  _filename->setFocus();
  enableButtonOK(false);
}

void NewDialog::changed()
{
  enableButtonOK(!_filename->text().isEmpty() && !_dir->text().isEmpty());
}

void NewDialog::browse()
{
  PURL::Directory dir = PURL::getExistingDirectory(startDir(), this, QString::null);
  if ( dir.isEmpty() ) return;
  _dir->setText(dir.path());
}

//----------------------------------------------------------------------------
NewFileDialog::NewFileDialog(Project *project, QWidget *parent)
  : NewDialog(i18n("Create New File"), parent), _project(project)
{
  _fLabel->setText(i18n("File Name:"));

  if (project) {
    _add = new QCheckBox(i18n("Add to project"), mainWidget());
    _add->setChecked(project);
    _top->addMultiCellWidget(_add, 2,2, 1,2);
    _top->setRowStretch(3, 1);
    _dir->setText(project->directory().path());
  }
}

QString NewFileDialog::startDir() const
{
  if (_project) return _project->directory().path();
  return ":new_file";
}

PURL::Url NewFileDialog::url() const
{
  return PURL::Url(PURL::Directory(_dir->text()), _filename->text());
}