/*************************************************************************** * * * 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. * * * * copyright (C) 2002-2007 * * Umbrello UML Modeller Authors * ***************************************************************************/ // own header #include "diagramprintpage.h" // qt/kde includes #include #include #include #include #include #include #include #include // local includes #include "../uml.h" #include "../umldoc.h" #include "../umlview.h" #include "../umlviewlist.h" #include "../umlnamespace.h" DiagramPrintPage::DiagramPrintPage(TQWidget * parent, UMLDoc * m_pDoc) : KPrintDialogPage(parent), m_pDoc(m_pDoc) { int margin = fontMetrics().height(); setTitle(i18n("&Diagrams")); TQHBoxLayout * mainLayout = new TQHBoxLayout(this); mainLayout -> setSpacing(10); mainLayout -> setMargin(margin); m_pFilterBG = new TQButtonGroup(i18n("Filter"), this); mainLayout -> addWidget(m_pFilterBG); m_pFilterBG -> setExclusive(true); TQVBoxLayout * filter = new TQVBoxLayout(m_pFilterBG); filter -> setSpacing(10); filter-> setMargin(margin); m_pCurrentRB = new TQRadioButton(i18n("&Current diagram"), m_pFilterBG); filter -> addWidget(m_pCurrentRB); m_pCurrentRB -> setChecked(true); m_pFilterBG -> insert(m_pCurrentRB, Current); m_pAllRB = new TQRadioButton(i18n("&All diagrams"), m_pFilterBG); filter -> addWidget(m_pAllRB); m_pFilterBG -> insert(m_pAllRB, All); m_pSelectRB = new TQRadioButton(i18n("&Select diagrams"), m_pFilterBG); filter -> addWidget(m_pSelectRB); m_pFilterBG -> insert(m_pSelectRB, Select); m_pTypeRB = new TQRadioButton(i18n("&Type of diagram"), m_pFilterBG); filter -> addWidget(m_pTypeRB); m_pFilterBG -> insert(m_pTypeRB, Type); m_pSelectGB = new TQGroupBox(i18n("Selection"), this); mainLayout -> addWidget(m_pSelectGB); TQVBoxLayout * select = new TQVBoxLayout(m_pSelectGB); select -> setSpacing(10); select-> setMargin(margin); m_pTypeCB = new TQComboBox(m_pSelectGB); select -> addWidget(m_pTypeCB); m_pTypeCB -> setEnabled(false); m_pSelectLB = new TQListBox(m_pSelectGB); select -> addWidget(m_pSelectLB); m_pSelectLB -> setEnabled(false); m_pSelectLB -> setSelectionMode(TQListBox::Multi); m_pSelectLB -> insertItem(UMLApp::app()->getCurrentView()->getName()); m_pSelectLB -> setSelected(0, true); m_nIdList.clear(); m_nIdList.append(UMLApp::app()->getCurrentView()->getID()); m_ViewType = Uml::dt_Class; connect(m_pFilterBG, TQT_SIGNAL(clicked(int)), this, TQT_SLOT(slotClicked(int))); connect(m_pTypeCB, TQT_SIGNAL(activated(const TQString&)), this, TQT_SLOT(slotActivated(const TQString&))); m_pTypeCB -> insertItem(i18n("Class")); m_pTypeCB -> insertItem(i18n("Use Case")); m_pTypeCB -> insertItem(i18n("Collaboration")); m_pTypeCB -> insertItem(i18n("Sequence")); m_pTypeCB -> insertItem(i18n("State")); m_pTypeCB -> insertItem(i18n("Activity")); m_pTypeCB -> insertItem(i18n("Component")); m_pTypeCB -> insertItem(i18n("Deployment")); } DiagramPrintPage::~DiagramPrintPage() { disconnect(m_pFilterBG, TQT_SIGNAL(clicked(int)), this, TQT_SLOT(slotClicked(int))); disconnect(m_pTypeCB, TQT_SIGNAL(activated(const TQString&)), this, TQT_SLOT(slotActivated(const TQString&))); } void DiagramPrintPage::getOptions( TQMap& opts, bool /*incldef = false*/ ) { int listCount = m_pSelectLB -> count(); int count = 0; TQString diagram(i18n("kde-uml-Diagram")); for(int i=0;i isSelected(i)) { UMLView *view = (UMLView *)m_pDoc -> findView(m_nIdList[i]); TQString sCount = TQString("%1").arg(count); TQString sID = TQString("%1").arg(ID2STR(view -> getID())); opts.insert(diagram + sCount, sID); count++; } } opts.insert("kde-uml-count", TQString("%1").arg(count)); } void DiagramPrintPage::setOptions( const TQMap& /*opts*/ ) {} bool DiagramPrintPage::isValid( TQString& msg ) { int listCount = m_pSelectLB -> count(); bool sel = false; for(int i =0;i isSelected(i)) { sel = true; i = listCount; } } msg = i18n("No diagrams selected."); return sel; } void DiagramPrintPage::slotClicked(int id) { UMLViewList list = m_pDoc -> getViewIterator(); UMLView * view = 0; TQString type; // clear list with diagrams to print m_nIdList.clear(); switch(id) { case Current: m_pTypeCB -> setEnabled(false); m_pSelectLB -> setEnabled(false); m_pSelectLB -> clear(); m_pSelectLB -> insertItem(UMLApp::app()->getCurrentView()->getName()); m_pSelectLB -> setSelected(0, true); m_nIdList.append(UMLApp::app()->getCurrentView()->getID()); break; case All: m_pTypeCB -> setEnabled(false); m_pSelectLB -> setEnabled(false); m_pSelectLB -> clear(); for(view = list.first(); view; view = list.next()) { m_pSelectLB -> insertItem(view -> getName()); m_nIdList.append(view -> getID()); } m_pSelectLB -> selectAll(true); break; case Select: m_pTypeCB -> setEnabled(false); m_pSelectLB -> setEnabled(true); m_pSelectLB -> clear(); for(view = list.first(); view; view = list.next()) { m_pSelectLB -> insertItem(view -> getName()); m_nIdList.append(view -> getID()); } break; case Type: m_pTypeCB -> setEnabled(true); m_pSelectLB -> setEnabled(true); m_pSelectLB -> clear(); for(view = list.first(); view; view = list.next()) { if(view -> getType() == m_ViewType) { m_pSelectLB -> insertItem(view -> getName()); m_nIdList.append(view -> getID()); } } m_pSelectLB -> selectAll(true); break; } } void DiagramPrintPage::slotActivated(const TQString & text) { UMLViewList list = m_pDoc -> getViewIterator(); UMLView * view = 0; if(text == i18n("Class")) m_ViewType = Uml::dt_Class; else if(text == i18n("Sequence")) m_ViewType = Uml::dt_Sequence; else if(text == i18n("Use Case")) m_ViewType = Uml::dt_UseCase; else if(text == i18n("Collaboration")) m_ViewType = Uml::dt_Collaboration; else if(text == i18n("State")) m_ViewType = Uml::dt_State; else if(text == i18n("Activity")) m_ViewType = Uml::dt_Activity; else if(text == i18n("Component")) m_ViewType = Uml::dt_Component; else if(text == i18n("Deployment")) m_ViewType = Uml::dt_Deployment; m_pSelectLB -> clear(); m_nIdList.clear(); for(view = list.first(); view; view = list.next()) { if(view -> getType() == m_ViewType) { m_pSelectLB -> insertItem(view -> getName()); m_nIdList.append(view -> getID()); } } m_pSelectLB -> selectAll(true); } #include "diagramprintpage.moc"