void FancyTabWidget::MakeTabBar(QTabBar::Shape shape, bool text, bool icons, bool fancy) { QTabBar* bar = new QTabBar(this); bar->setShape(shape); bar->setDocumentMode(true); bar->setUsesScrollButtons(true); bar->setElideMode(Qt::ElideRight); if (shape == QTabBar::RoundedWest) { bar->setIconSize(QSize(22, 22)); } if (fancy) { bar->setStyle(proxy_style_.get()); } if (shape == QTabBar::RoundedNorth) top_layout_->insertWidget(0, bar); else side_layout_->insertWidget(0, bar); foreach (const Item& item, items_) { if (item.type_ != Item::Type_Tab) continue; QString label = item.tab_label_; if (shape == QTabBar::RoundedWest) { label = QFontMetrics(font()).elidedText(label, Qt::ElideMiddle, 100); } int tab_id = -1; if (icons && text) tab_id = bar->addTab(item.tab_icon_, label); else if (icons) tab_id = bar->addTab(item.tab_icon_, QString()); else if (text) tab_id = bar->addTab(label); // Adds tooltips only in Tabs mode or IconOnlyTabs mode // TODO in tab mode, show only if not elided, complicated since this doesn't inherit from QTabWidget if (shape == QTabBar::RoundedNorth && ((!text && icons) || (text && !icons))) bar->setTabToolTip(tab_id, item.tab_label_); } bar->setCurrentIndex(stack_->currentIndex()); connect(bar, SIGNAL(currentChanged(int)), SLOT(ShowWidget(int))); tab_bar_ = bar; }
void FancyTabWidget::MakeTabBar(QTabBar::Shape shape, bool text, bool icons, bool fancy) { QTabBar* bar = new QTabBar(this); bar->setShape(shape); bar->setDocumentMode(true); bar->setUsesScrollButtons(true); if (shape == QTabBar::RoundedWest) { bar->setIconSize(QSize(22, 22)); } if (fancy) { bar->setStyle(proxy_style_.data()); } if (shape == QTabBar::RoundedNorth) top_layout_->insertWidget(0, bar); else side_layout_->insertWidget(0, bar); foreach (const Item& item, items_) { if (item.type_ != Item::Type_Tab) continue; QString label = item.tab_label_; if (shape == QTabBar::RoundedWest) { label = QFontMetrics(font()).elidedText(label, Qt::ElideMiddle, 100); } int tab_id = -1; if (icons && text) tab_id = bar->addTab(item.tab_icon_, label); else if (icons) tab_id = bar->addTab(item.tab_icon_, QString()); else if (text) tab_id = bar->addTab(label); bar->setTabToolTip(tab_id, item.tab_label_); } bar->setCurrentIndex(stack_->currentIndex()); connect(bar, SIGNAL(currentChanged(int)), SLOT(ShowWidget(int))); tab_bar_ = bar; }
void NativeTabItem::SetInfo(const PartInfo& info) { QTabBar* widget = parent->GetTabFolder(); int index = parent->IndexOf(this); if (widget->tabText(index) != info.name) { widget->setTabText(index, info.name); } if (widget->tabToolTip(index) != info.toolTip) { widget->setTabToolTip(index, info.toolTip); } if (widget->tabIcon(index).cacheKey() != info.image.cacheKey()) { widget->setTabIcon(index, info.image); } }
//----------------------------------------------------------------------------------------- bool GenericTextEditor::displayText(QString docName, QString text, QString extension, QString optionalData) { // If there is no extra extension passed, then try to find the matching one based on the doc name ITextEditorCodecFactory* codecFactory; if(extension == "") codecFactory = GenericTextEditor::findMatchingCodecFactory(docName); else codecFactory = GenericTextEditor::findMatchingCodecFactory(extension); if(codecFactory == 0) return false; GenericTextEditorDocument* document = 0; if(!isDocAlreadyShowing(docName, document) || isAllowDoubleDisplay()) { document = new GenericTextEditorDocument(this); ITextEditorCodec* codec = codecFactory->create(document, docName); document->setCodec(codec); document->displayText(docName, text, optionalData); QMdiSubWindow *window = addSubWindow(document); window->setWindowIcon(QIcon(codec->getDocumentIcon())); document->showMaximized(); QTabBar* tabBar = findChildren<QTabBar*>().at(0); tabBar->setTabToolTip(findChildren<QMdiSubWindow*>().size() - 1, docName); } else { document->getCodec()->setOptionalData(optionalData); document->getCodec()->onDisplayRequest(); setActiveSubWindow(qobject_cast<QMdiSubWindow*>(document->window())); document->setFocus(Qt::ActiveWindowFocusReason); } moveToForeground(); connect(document, SIGNAL(textChanged()), document, SLOT(documentWasModified())); mActSave->setEnabled(false); return true; }
//----------------------------------------------------------------------------------------- bool GenericTextEditor::displayTextFromFile(QString filePath, QString optionalData) { ITextEditorCodecFactory* codecFactory = GenericTextEditor::findMatchingCodecFactory(filePath); if(codecFactory == 0) return false; GenericTextEditorDocument* document = 0; if(!isPathAlreadyShowing(filePath, document) || isAllowDoubleDisplay()) { document = new GenericTextEditorDocument(this); ITextEditorCodec* codec = codecFactory->create(document, filePath); document->setCodec(codec); document->displayTextFromFile(QFile(filePath).fileName(), filePath, optionalData); QMdiSubWindow *window = addSubWindow(document); window->setWindowIcon(QIcon(codec->getDocumentIcon())); document->showMaximized(); QTabBar* tabBar = findChildren<QTabBar*>().at(0); tabBar->setTabToolTip(findChildren<QMdiSubWindow*>().size() - 1, QFile(filePath).fileName()); } else { document->getCodec()->setOptionalData(optionalData); document->getCodec()->onDisplayRequest(); setActiveSubWindow(qobject_cast<QMdiSubWindow*>(document->window())); document->setFocus(Qt::ActiveWindowFocusReason); } moveToForeground(); connect(document, SIGNAL(textChanged()), document, SLOT(documentWasModified())); mActSave->setEnabled(false); return true; }