📄 glade2ui.cpp
字号:
emitOpeningWidget( QString("QLayoutWidget"), leftAttach, rightAttach, topAttach, bottomAttach ); emitOpening( boxKind ); emitProperty( QString("name"), fixedName(name).latin1() ); if ( gtkClass == QString("GtkHButtonBox") || childName == QString("Dialog:action_area") ) emitSpacer( orientation ); emitChildWidgets( childWidgets, TRUE ); if ( gtkClass == QString("GtkVButtonBox") || childName == QString("Dialog:action_area") || (boxKind == QString("vbox") && shouldPullup(childWidgets)) ) { emitSpacer( orientation ); } else if ( boxKind == QString("grid") && shouldPullup(childWidgets) ) { emitSpacer( QString("Vertical"), 0, numColumns, numRows, numRows + 1 ); } emitClosing( boxKind ); if ( layouted ) emitClosing( QString("widget") ); } else if ( gtkClass == QString("GtkFixed") && !layouted ) { emitChildWidgets( childWidgets, FALSE ); /* Placeholders in a grid are typically needless. */ } else if ( !(leftAttach >= 0 && gtkClass == QString("Placeholder")) ) { bool needFakeLayout = ( !layouted && !topLevel && x == 0 && y == 0 && width == 0 && height == 0 ); QString qtClass = gtk2qtClass( gtkClass, childWidgets ); bool unknown = FALSE; if ( qtClass == QString("QFrame") && !label.isEmpty() ) { qtClass = QString( "QButtonGroup" ); } else if ( qtClass == QString("QListView") && !showTitles && gtkClass.endsWith(QString("List")) ) { qtClass = QString( "QListBox" ); } else if ( qtClass == QString("Custom") ) { qtClass = creationFunction; yyCustomWidgets.insert( qtClass, QString::null ); } else if ( qtClass == QString("Unknown") ) { qtClass = QString( "QLabel" ); unknown = TRUE; } if ( qtClass.isEmpty() ) { emitChildWidgets( childWidgets, layouted, leftAttach, rightAttach, topAttach, bottomAttach ); } else { if ( needFakeLayout ) { emitOpening( QString("vbox") ); emitProperty( QString("margin"), 11 ); } emitOpeningWidget( qtClass, leftAttach, rightAttach, topAttach, bottomAttach ); // grep 'elsewhere' if ( gtkClass != QString("GtkCombo") ) emitProperty( QString("name"), fixedName(name).latin1() ); if ( !title.isEmpty() ) emitProperty( QString("caption"), title ); if ( !layouted && (x != 0 || y != 0 || width != 0 || height != 0) ) emitProperty( QString("geometry"), QRect(x, y, width, height) ); if ( gtkClass == QString("GtkToggleButton") ) { emitProperty( QString("toggleButton"), QVariant(TRUE, 0) ); if ( active ) emitProperty( QString("on"), QVariant(TRUE, 0) ); } else { if ( active ) emitProperty( QString("checked"), QVariant(TRUE, 0) ); } if ( !editable ) emitProperty( QString("readOnly"), QVariant(TRUE, 0) ); if ( !focusTarget.isEmpty() ) emitProperty( QString("buddy"), fixedName(focusTarget).latin1() ); if ( !hscrollbarPolicy.isEmpty() ) emitProperty( QString("hScrollBarMode"), gtk2qtScrollBarMode(hscrollbarPolicy), QString("enum") ); if ( !vscrollbarPolicy.isEmpty() ) emitProperty( QString("vScrollBarMode"), gtk2qtScrollBarMode(vscrollbarPolicy), QString("enum") ); if ( !justify.isEmpty() || (wrap && gtkClass != QString("GtkSpinButton")) ) { QStringList flags; if ( wrap ) flags.push_back( QString("WordBreak") ); if ( justify.endsWith(QString("_CENTER")) ) { flags.push_back( QString("AlignCenter") ); } else { if ( justify.endsWith(QString("_RIGHT")) ) flags.push_back( QString("AlignRight") ); flags.push_back( QString("AlignVCenter") ); } if ( !flags.isEmpty() ) emitProperty( QString("alignment"), flags.join(QChar('|')), QString("set") ); } if ( !label.isEmpty() ) { if ( gtkClass.endsWith(QString("Frame")) ) { emitProperty( QString("title"), label ); } else { emitProperty( QString("text"), accelerate(label) ); } } if ( lower != -123456789 ) emitProperty( QString("minValue"), lower ); if ( upper != 123456789 ) emitProperty( QString("maxValue"), upper ); if ( value != 123456789 ) { if ( gtkClass == QString("GtkProgressBar") ) { emitProperty( QString("progress"), value ); } else { emitProperty( QString("value"), value ); } } if ( QMAX(page, pageSize) != 10 && gtkClass.endsWith(QString("Scrollbar")) ) emitProperty( QString("pageStep"), QMAX(page, pageSize) ); if ( !selectionMode.isEmpty() ) emitProperty( QString("selectionMode"), gtk2qtSelectionMode(selectionMode), QString("enum") ); if ( !shadowType.endsWith(QString("_NONE")) ) { QString shape = shadowType.contains( QString("_ETCHED_") ) > 0 ? QString( "Box" ) : QString( "WinPanel" ); QString shadow = shadowType.endsWith( QString("_IN") ) ? QString( "Sunken" ) : QString( "Raised" ); emitProperty( QString("frameShape"), shape, QString("enum") ); emitProperty( QString("frameShadow"), shadow, QString("enum") ); } if ( !showText ) emitProperty( QString("percentageVisible"), QVariant(FALSE, 0) ); if ( step != 1 ) emitProperty( QString("lineStep"), step ); if ( tabPos.endsWith(QString("_BOTTOM")) || tabPos.endsWith(QString("_RIGHT")) ) emitProperty( QString("tabPosition"), QString("Bottom") ); if ( !text.isEmpty() ) emitProperty( QString("text"), text ); if ( textMaxLength != 0 ) emitProperty( QString("maxLength"), textMaxLength ); if ( !textVisible ) emitProperty( QString("echoMode"), QString("Password"), QString("enum") ); if ( !tooltip.isEmpty() ) emitProperty( QString("toolTip"), tooltip ); if ( !valueInList ) emitProperty( QString("editable"), QVariant(TRUE, 0) ); if ( wrap && gtkClass == QString("GtkSpinButton") ) emitProperty( QString("wrapping"), QVariant(TRUE, 0) ); if ( gtkClass.endsWith(QString("Tree")) ) { emitProperty( QString("rootIsDecorated"), QVariant(TRUE, 0) ); } else if ( gtkOrientedWidget.exactMatch(gtkClass) ) { QString s = ( gtkOrientedWidget.cap(1) == QChar('H') ) ? QString( "Horizontal" ) : QString( "Vertical" ); emitProperty( QString("orientation"), s, QString("enum") ); } if ( qtClass == QString("QListView") ) emitProperty( QString("resizeMode"), QString("AllColumns"), QString("enum") ); while ( !items.isEmpty() ) { emitOpening( QString("item") ); emitProperty( QString("text"), items.first() ); emitClosing( QString("item") ); items.remove( items.begin() ); } if ( initialChoice != 0 ) emitProperty( QString("currentItem"), initialChoice ); if ( !icon.isEmpty() ) emitProperty( QString("pixmap"), imageName(icon), QString("pixmap") ); if ( gtkClass == QString("GnomeAbout") ) { emitGnomeAbout( copyright, authors, comments ); } else if ( gtkClass == QString("GnomeApp") ) { emitGnomeAppChildWidgetsPass1( childWidgets ); } else if ( gtkClass == QString("GnomePropertyBox") ) { emitOpening( QString("vbox") ); emitChildWidgets( childWidgets, TRUE ); emitOpeningWidget( QString("QLayoutWidget") ); emitOpening( QString("hbox") ); emitPushButton( QString("&Help"), QString("helpButton") ); emitSpacer( QString("Horizontal") ); emitPushButton( QString("&OK"), QString("okButton") ); emitPushButton( QString("&Apply"), QString("applyButton") ); emitPushButton( QString("&Close"), QString("closeButton") ); emitClosing( QString("hbox") ); emitClosing( QString("widget") ); emitClosing( QString("vbox") ); } else if ( gtkClass.endsWith(QString("Button")) ) { if ( label.isEmpty() ) emitGtkButtonChildWidgets( childWidgets ); } else if ( gtkClass == QString("GtkCombo") ) { emitGtkComboChildWidgets( childWidgets, items ); } else if ( gtkClass == QString("GtkNotebook") ) { emitGtkNotebookChildWidgets( childWidgets ); } else if ( gtkClass == QString("GtkWindow") ) { emitGtkWindowChildWidgets( childWidgets, qtClass ); } else if ( gtkClass == QString("GtkScrolledWindow") ) { emitGtkScrolledWindowChildWidgets( childWidgets, qtClass ); } else if ( qtClass == QString("QListView") ) { emitQListViewColumns( widget ); } else if ( unknown || gtkClass == QString("Placeholder") ) { QString prefix; if ( unknown ) prefix = gtkClass; emitProperty( QString("text"), QString("<font color=\"red\">%1<b>?</b></font>") .arg(prefix) ); emitProperty( QString("alignment"), QString("AlignAuto|AlignCenter"), QString("set") ); } else if ( qtClass != QString("QListBox") ) { emitChildWidgets( childWidgets, FALSE ); } emitClosing( QString("widget") ); if ( needFakeLayout ) emitClosing( QString("vbox") ); if ( gtkClass == QString("GnomeApp") ) emitGnomeAppChildWidgetsPass2( childWidgets ); } } return name;}QStringList Glade2Ui::convertGladeFile( const QString& fileName ){ QStringList outFileNames; yyFileName = fileName; QDomDocument doc( QString("GTK-Interface") ); QFile f( fileName ); if ( !f.open(IO_ReadOnly) ) { error( QString("Cannot open file for reading.") ); return QStringList(); } if ( !doc.setContent(&f) ) { error( QString("File is not an XML file.") ); f.close(); return QStringList(); } f.close(); QDomElement root = doc.documentElement(); if ( root.tagName() != QString("GTK-Interface") ) { error( QString("File is not a Glade XML file.") ); return QStringList(); } int widgetNo = 0; int numWidgets = 0; QDomNode n = root.firstChild(); while ( !n.isNull() ) { if ( n.toElement().tagName() == QString("widget") ) numWidgets++; n = n.nextSibling(); } QProgressDialog fremskritt( QString("Converting Glade files..."), QString("Abort Conversion"), numWidgets, 0, "fremskritt", TRUE ); n = root.firstChild(); while ( !n.isNull() ) { QString tagName = n.toElement().tagName(); if ( tagName == QString("project") ) { QDomNode child = n.firstChild(); while ( !child.isNull() ) { QString childTagName = child.toElement().tagName(); if ( childTagName == QString("pixmaps_directory") ) { yyPixmapDirectory = getTextValue( child ); } else if ( childTagName == QString("program_name") ) { yyProgramName = getTextValue( child ); } child = child.nextSibling(); } } else if ( tagName == QString("widget") ) { yyOut = QString::null; yyCustomWidgets.clear(); yyStockItemActions.clear(); yyActions.clear(); yyConnections.clear(); yySlots.clear(); yyFormName = QString::null; yyImages.clear(); uniqueAction = 1; uniqueForm = 1; uniqueMenuBar = 1; uniqueSpacer = 1; uniqueToolBar = 1; emitHeader(); QString name = emitWidget( n.toElement(), FALSE ); if ( !yyCustomWidgets.isEmpty() ) { emitOpening( QString("customwidgets") ); QMap<QString, QString>::Iterator c = yyCustomWidgets.begin(); while ( c != yyCustomWidgets.end() ) { emitOpening( QString("customwidget") ); emitSimpleValue( QString("class"), c.key() ); if ( !(*c).isEmpty() ) emitSimpleValue( QString("header"), *c, attribute(QString("location"), QString("local")) ); emitClosing( QString("customwidget") ); ++c; } emitClosing( QString("customwidgets") ); } if ( !yyActions.isEmpty() ) { emitOpening( QString("actions") ); QMap<QString, GladeAction>::Iterator a = yyActions.begin(); while ( a != yyActions.end() ) { emitOpening( QString("action") ); emitProperty( QString("name"), fixedName(a.key()).latin1() ); emitProperty( QString("text"), (*a).text ); emitProperty( QString("menuText"), (*a).menuText ); if ( (*a).toolTip ) emitProperty( QString("toolTip"), (*a).toolTip ); if ( (*a).accel != 0 ) emitProperty( QString("accel"), (*a).accel ); if ( !(*a).iconSet.isEmpty() ) emitProperty( QString("iconSet"), imageName((*a).iconSet), QString("iconset") ); emitClosing( QString("action") ); ++a; } emitClosing( QString("actions") ); } if ( !yyImages.isEmpty() ) { uint maxLength = 524288; char *data = new char[maxLength]; QString dir = yyFileName; dir.truncate( dir.findRev(QChar('/')) + 1 ); dir += yyPixmapDirectory; emitOpening( QString("images") ); QMap<QString, QString>::ConstIterator im = yyImages.begin(); while ( im != yyImages.end() ) { uint length = 0; const char *format = 0; QString fn = dir + QChar( '/' ) + im.key(); QFile f( fn ); if ( !f.open(IO_ReadOnly) ) { error( QString("Cannot open image '%1' for reading.") .arg(fn) ); } else { length = f.readBlock( data, maxLength ); f.at( 0 ); format = QImageIO::imageFormat( &f ); f.close(); } if ( format == 0 ) format = "XPM"; AttributeMap attr; attr.insert( QString("format"), QString(format) ); attr.insert( QString("length"), QString::number(length) ); emitOpening( QString("image"), attribute(QString("name"), *im) ); emitSimpleValue( QString("data"), hexed(data, length), attr ); emitClosing( QString("image") ); ++im; } emitClosing( QString("images") ); delete[] data; } if ( yyConnections.count() + yySlots.count() > 0 ) { emitOpening( QString("connections") ); QValueList<GladeConnection>::Iterator c = yyConnections.begin(); while ( c != yyConnections.end() ) { emitOpening( QString("connection") ); emitSimpleValue( QString("sender"), (*c).sender ); emitSimpleValue( QString("signal"), (*c).signal ); emitSimpleValue( QString("receiver"), yyFormName ); emitSimpleValue( QString("slot"), (*c).slot ); emitClosing( QString("connection") ); ++c; } QMap<QString, QString>::Iterator s = yySlots.begin(); while ( s != yySlots.end() ) { AttributeMap attr; attr.insert( QString("access"), *s ); attr.insert( QString("language"), QString("C++") ); attr.insert( QString("returntype"), QString("void") ); emitSimpleValue( QString("slot"), s.key(), attr ); ++s; } emitClosing( QString("connections") ); } emitFooter(); QString outFileName = fileName; int k = outFileName.findRev( "." ); if ( k != -1 ) outFileName.truncate( k ); if ( widgetNo != 0 ) outFileName += QString::number( widgetNo + 1 ); outFileName += QString( ".ui" ); FILE *out = fopen( outFileName.latin1(), "w" ); if ( out == 0 ) { qWarning( "glade2ui: Could not open file '%s'", outFileName.latin1() ); } else { if ( !yyOut.isEmpty() ) fprintf( out, "%s",
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -