예제 #1
0
void djvViewInputPrefs::setMouseWheel(djvViewUtil::MOUSE_WHEEL in)
{
    if (in == _mouseWheel)
        return;

    _mouseWheel = in;

    Q_EMIT prefChanged();
}
djvFileBrowserPrefsWidget::djvFileBrowserPrefsWidget() :
    djvAbstractPrefsWidget(tr("File Browser")),
    _p(new P)
{
    // Create the widgets.

    _p->seqWidget = new QComboBox;
    _p->seqWidget->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
    _p->seqWidget->addItems(djvSequence::compressLabels());

    _p->showHiddenWidget = new QCheckBox(tr("Show hidden files"));

    _p->sortWidget = new QComboBox;
    _p->sortWidget->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
    _p->sortWidget->addItems(djvFileBrowserModel::columnsLabels());

    _p->reverseSortWidget = new QCheckBox(tr("Reverse the sort direction"));

    _p->sortDirsFirstWidget = new QCheckBox(tr("Sort directories first"));

    _p->thumbnailsWidget = new QComboBox;
    _p->thumbnailsWidget->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
    _p->thumbnailsWidget->addItems(djvFileBrowserModel::thumbnailsLabels());

    _p->thumbnailsSizeWidget = new QComboBox;
    _p->thumbnailsSizeWidget->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
    _p->thumbnailsSizeWidget->addItems(djvFileBrowserModel::thumbnailsSizeLabels());

    _p->thumbnailsCacheWidget = new djvIntEdit;
    _p->thumbnailsCacheWidget->setRange(0, 4096);
    _p->thumbnailsCacheWidget->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);

    _p->bookmarksWidget = new SmallListWidget;
    
    djvToolButton * addBookmarkButton = new djvToolButton(
        djvIconLibrary::global()->icon("djvAddIcon.png"));
    addBookmarkButton->setToolTip(tr("Add a new bookmark"));
    
    djvToolButton * removeBookmarkButton = new djvToolButton(
        djvIconLibrary::global()->icon("djvRemoveIcon.png"));
    removeBookmarkButton->setAutoRepeat(true);
    removeBookmarkButton->setToolTip(tr("Remove the selected bookmark"));
    
    djvToolButton * moveBookmarkUpButton = new djvToolButton(
        djvIconLibrary::global()->icon("djvUpIcon.png"));
    moveBookmarkUpButton->setAutoRepeat(true);
    moveBookmarkUpButton->setToolTip(tr("Move the selected bookmark up"));
    
    djvToolButton * moveBookmarkDownButton = new djvToolButton(
        djvIconLibrary::global()->icon("djvDownIcon.png"));
    moveBookmarkDownButton->setAutoRepeat(true);
    moveBookmarkDownButton->setToolTip(tr("Move the selected bookmark down"));

    _p->shortcutsWidget = new djvShortcutsWidget;

    // Layout the widgets.

    QVBoxLayout * layout = new QVBoxLayout(this);
    layout->setSpacing(djvStyle::global()->sizeMetric().largeSpacing);

    djvPrefsGroupBox * prefsGroupBox = new djvPrefsGroupBox(tr("General"));
    QFormLayout * formLayout = prefsGroupBox->createLayout();
    formLayout->addRow(tr("File sequencing:"), _p->seqWidget);
    formLayout->addRow(_p->showHiddenWidget);
    layout->addWidget(prefsGroupBox);

    prefsGroupBox = new djvPrefsGroupBox(tr("Sorting"));
    formLayout = prefsGroupBox->createLayout();
    formLayout->addRow(tr("Sort by:"), _p->sortWidget);
    formLayout->addRow(_p->reverseSortWidget);
    formLayout->addRow(_p->sortDirsFirstWidget);
    layout->addWidget(prefsGroupBox);

    prefsGroupBox = new djvPrefsGroupBox(tr("Thumbnails"));
    formLayout = prefsGroupBox->createLayout();
    formLayout->addRow(_p->thumbnailsWidget);
    formLayout->addRow(tr("Size:"), _p->thumbnailsSizeWidget);
    QHBoxLayout * hLayout = new QHBoxLayout;
    hLayout->addWidget(_p->thumbnailsCacheWidget);
    hLayout->addWidget(new QLabel(tr("(MB)")));
    formLayout->addRow(tr("Cache size:"), hLayout);
    layout->addWidget(prefsGroupBox);

    prefsGroupBox = new djvPrefsGroupBox(tr("Bookmarks"));
    formLayout = prefsGroupBox->createLayout();
    formLayout->addRow(_p->bookmarksWidget);
    hLayout = new QHBoxLayout;
    hLayout->addStretch();
    hLayout->addWidget(addBookmarkButton);
    hLayout->addWidget(removeBookmarkButton);
    hLayout->addWidget(moveBookmarkUpButton);
    hLayout->addWidget(moveBookmarkDownButton);
    formLayout->addRow(hLayout);
    layout->addWidget(prefsGroupBox);

    prefsGroupBox = new djvPrefsGroupBox(tr("Keyboard Shortcuts"));
    formLayout = prefsGroupBox->createLayout();
    formLayout->addRow(_p->shortcutsWidget);
    layout->addWidget(prefsGroupBox);
    
    // Initialize.
    
    widgetUpdate();

    // Setup the callbacks.

    connect(
        _p->seqWidget,
        SIGNAL(activated(int)),
        SLOT(seqCallback(int)));

    connect(
        _p->showHiddenWidget,
        SIGNAL(toggled(bool)),
        djvFileBrowserPrefs::global(),
        SLOT(setShowHidden(bool)));

    connect(
        _p->sortWidget,
        SIGNAL(activated(int)),
        SLOT(sortCallback(int)));

    connect(
        _p->reverseSortWidget,
        SIGNAL(toggled(bool)),
        djvFileBrowserPrefs::global(),
        SLOT(setReverseSort(bool)));

    connect(
        _p->sortDirsFirstWidget,
        SIGNAL(toggled(bool)),
        djvFileBrowserPrefs::global(),
        SLOT(setSortDirsFirst(bool)));

    connect(
        _p->thumbnailsWidget,
        SIGNAL(activated(int)),
        SLOT(thumbnailsCallback(int)));

    connect(
        _p->thumbnailsSizeWidget,
        SIGNAL(activated(int)),
        SLOT(thumbnailsSizeCallback(int)));

    connect(
        _p->thumbnailsCacheWidget,
        SIGNAL(valueChanged(int)),
        SLOT(thumbnailsCacheCallback(int)));

    connect(
        _p->bookmarksWidget,
        SIGNAL(itemChanged(QListWidgetItem *)),
        SLOT(bookmarkCallback(QListWidgetItem *)));

    connect(
        addBookmarkButton,
        SIGNAL(clicked()),
        SLOT(addBookmarkCallback()));

    connect(
        removeBookmarkButton,
        SIGNAL(clicked()),
        SLOT(removeBookmarkCallback()));

    connect(
        moveBookmarkUpButton,
        SIGNAL(clicked()),
        SLOT(moveBookmarkUpCallback()));

    connect(
        moveBookmarkDownButton,
        SIGNAL(clicked()),
        SLOT(moveBookmarkDownCallback()));

    connect(
        _p->shortcutsWidget,
        SIGNAL(shortcutsChanged(const QVector<djvShortcut> &)),
        SLOT(shortcutsCallback(const QVector<djvShortcut> &)));

    connect(
        djvFileBrowserPrefs::global(),
        SIGNAL(prefChanged()),
        SLOT(widgetUpdate()));
}