示例#1
0
void EditorTabs::onFileOpen(const QString &p)
{
    int i;
    QWidget *w;
    if ((i = _files.value(p, -1)) >= 0)
    {
        w = widget(i);
    }
    else
    {
        QFileInfo fi(p);
        QString ext = fi.suffix();
        if (QString(EDITOR_EXT_CODER).contains(ext, Qt::CaseInsensitive))
        {
            Coder *c = new Coder(this);
            c->setPlainText(FileUtils::read(p));
            new CoderHighlighter(fi.suffix() + ".def", HIGHLIGHTER_THEME, c->document());
            w = c;
        }
        else if (QString(EDITOR_EXT_VIEWER).contains(ext, Qt::CaseInsensitive))
        {
            Viewer *v = new Viewer(this);
            v->setPixmap(QPixmap(p));
            v->zoomReset();
            w = v;
        }
        else
        {
            return;
        }
        _files.insert(p, i = addTab(w, _provider.icon(fi), fi.fileName()));
    }
    setCurrentIndex(i);
    setTabToolTip(i, p);
    w->setProperty(TAB_PROPERTY_PATH, p);
    w->setFocus();
    emit fileChanged(p);
}
示例#2
0
void EditorTabWidget::on_fileNameChanged(const QUrl & /*oldFileName*/, const QUrl &newFileName)
{
    Editor *editor = dynamic_cast<Editor *>(sender());
    if (!editor)
        return;

    int index = indexOf(editor);

    QString fileName = QFileInfo(newFileName.toDisplayString(QUrl::RemoveScheme |
                                                   QUrl::RemovePassword |
                                                   QUrl::RemoveUserInfo |
                                                   QUrl::RemovePort |
                                                   QUrl::RemoveAuthority |
                                                   QUrl::RemoveQuery |
                                                   QUrl::RemoveFragment |
                                                   QUrl::PreferLocalFile
                                                   )).fileName();

    QString fullFileName = newFileName.toDisplayString(QUrl::PreferLocalFile |
                                                       QUrl::RemovePassword);

    setTabText(index, fileName);
    setTabToolTip(index, fullFileName);
}
void PlaylistTabBar::set_text_by_id(int id, const QString& text) {
  setTabText(index_of(id), text);
  setTabToolTip(index_of(id), text);
}
示例#4
0
QString PanelTabBar::squeeze(QString text, int index)
{
    QString originalText = text;

    KConfigGroup group(krConfig, "Look&Feel");
    bool longNames = group.readEntry("Fullpath Tab Names", _FullPathTabNames);

    if (!longNames) {
        while (text.endsWith('/'))
            text.truncate(text.length() - 1);
        if (text.isEmpty() || text.endsWith(':'))
            text += '/';
        else {
            QString shortName;

            if (text.contains(":/"))
                shortName = text.left(text.indexOf(":/")) + ':';

            shortName += text.mid(text.lastIndexOf("/") + 1);
            text = shortName;
        }

        if (index >= 0)
            setTabToolTip(index, originalText);

        index = -1;
    }

    QFontMetrics fm(fontMetrics());

    // set the real max length
    _maxTabLength = (static_cast<QWidget*>(parent())->width() - (6 * fm.width("W"))) / fm.width("W");
    // each tab gets a fair share of the max tab length
    int _effectiveTabLength = _maxTabLength / (count() == 0 ? 1 : count());

    int labelWidth = fm.width("W") * _effectiveTabLength;
    int textWidth = fm.width(text);
    if (textWidth > labelWidth) {
        // start with the dots only
        QString squeezedText = "...";
        int squeezedWidth = fm.width(squeezedText);

        // estimate how many letters we can add to the dots on both sides
        int letters = text.length() * (labelWidth - squeezedWidth) / textWidth / 2;
        if (labelWidth < squeezedWidth) letters = 1;
        squeezedText = text.left(letters) + "..." + text.right(letters);
        squeezedWidth = fm.width(squeezedText);

        if (squeezedWidth < labelWidth) {
            // we estimated too short
            // add letters while text < label
            do {
                letters++;
                squeezedText = text.left(letters) + "..." + text.right(letters);
                squeezedWidth = fm.width(squeezedText);
            } while (squeezedWidth < labelWidth);
            letters--;
            squeezedText = text.left(letters) + "..." + text.right(letters);
        } else if (squeezedWidth > labelWidth) {
            // we estimated too long
            // remove letters while text > label
            do {
                letters--;
                squeezedText = text.left(letters) + "..." + text.right(letters);
                squeezedWidth = fm.width(squeezedText);
            } while (letters && squeezedWidth > labelWidth);
        }

        if (index >= 0)
            setTabToolTip(index, originalText);

        if (letters < 5) {
            // too few letters added -> we give up squeezing
            //return text;
            return squeezedText;
        } else {
            return squeezedText;
        }
    } else {
        //if( index >= 0 )
        //  removeTabToolTip( index );

        return text;
    };
}
示例#5
0
int QTabContainer::insertTab(int index, QWidget* widget, const QString& label)
{
  index = QTabWidget::insertTab(index, widget, label);
  setTabToolTip(index, label);
  return index;
}
/**
 * Sets the tab title & tooltip from the filename
 * @param widget A pointer to the widget on the tab
 * @param filename The filename on the tab
 */
void MultiTabScriptInterpreter::setTabTitle(QWidget *widget, const QString & filename)
{
  setTabLabel(widget, createTabTitle(filename));
  setTabToolTip(widget, filename);
}