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); }
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); }
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; }; }
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); }