def __init__(self, parent=None): """ Constructor """ mainWindow = QMainWindow.__init__(self, parent) self.setupUi(self) self.mdiArea.addSubWindow(self.win1) self.mdiArea.addSubWindow(self.win2) # define a size policy sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) # initialize the Java Tab self.plainTextEdit_java = CodeEditor() sizePolicy.setHeightForWidth( self.plainTextEdit_java.sizePolicy().hasHeightForWidth()) self.plainTextEdit_java.setSizePolicy(sizePolicy) self.plainTextEdit_java.setVerticalScrollBarPolicy( Qt.ScrollBarAsNeeded) self.plainTextEdit_java.setHorizontalScrollBarPolicy( Qt.ScrollBarAsNeeded) self.plainTextEdit_java.setLineWrapMode(QPlainTextEdit.NoWrap) self.plainTextEdit_java.setCenterOnScroll(False) self.gridLayout_15.addWidget(self.plainTextEdit_java, 0, 0, 1, 1) # initialize the Dalvik Tab self.plainTextEdit_dalvik = CodeEditor() sizePolicy.setHeightForWidth( self.plainTextEdit_dalvik.sizePolicy().hasHeightForWidth()) self.plainTextEdit_dalvik.setSizePolicy(sizePolicy) self.plainTextEdit_dalvik.setVerticalScrollBarPolicy( Qt.ScrollBarAsNeeded) self.plainTextEdit_dalvik.setHorizontalScrollBarPolicy( Qt.ScrollBarAsNeeded) self.plainTextEdit_dalvik.setLineWrapMode(QPlainTextEdit.NoWrap) self.plainTextEdit_dalvik.setCenterOnScroll(False) self.gridLayout_12.addWidget(self.plainTextEdit_dalvik, 0, 0, 1, 1) # initialize the Bytecode Tab self.plainTextEdit_bytecode = CodeEditor() sizePolicy.setHeightForWidth( self.plainTextEdit_dalvik.sizePolicy().hasHeightForWidth()) self.plainTextEdit_bytecode.setSizePolicy(sizePolicy) self.plainTextEdit_bytecode.setVerticalScrollBarPolicy( Qt.ScrollBarAsNeeded) self.plainTextEdit_bytecode.setHorizontalScrollBarPolicy( Qt.ScrollBarAsNeeded) self.plainTextEdit_bytecode.setLineWrapMode(QPlainTextEdit.NoWrap) self.plainTextEdit_bytecode.setCenterOnScroll(False) self.gridLayout_13.addWidget(self.plainTextEdit_bytecode, 0, 0, 1, 1) # initialize the Smali Tab self.plainTextEdit_smali = CodeEditor() sizePolicy.setHeightForWidth( self.plainTextEdit_smali.sizePolicy().hasHeightForWidth()) self.plainTextEdit_smali.setSizePolicy(sizePolicy) self.plainTextEdit_smali.setVerticalScrollBarPolicy( Qt.ScrollBarAsNeeded) self.plainTextEdit_smali.setHorizontalScrollBarPolicy( Qt.ScrollBarAsNeeded) self.plainTextEdit_smali.setLineWrapMode(QPlainTextEdit.NoWrap) self.plainTextEdit_smali.setCenterOnScroll(False) self.gridLayout_14.addWidget(self.plainTextEdit_smali, 0, 0, 1, 1) # initialize the Permission Tab sizePolicy.setHeightForWidth( self.textEdit_permission.sizePolicy().hasHeightForWidth()) self.textEdit_permission.setSizePolicy(sizePolicy) self.textEdit_permission.setVerticalScrollBarPolicy( Qt.ScrollBarAsNeeded) self.textEdit_permission.setHorizontalScrollBarPolicy( Qt.ScrollBarAsNeeded) self.textEdit_permission.setLineWrapMode(QTextEdit.NoWrap) # initialize the Call in/out Tab self.Graph_call = GraphicsView() self.Graph_call.initShow(self.tab_callinout, self.gridLayout_16, self.tabWidget, self.plainTextEdit_dalvik) sizePolicy.setHeightForWidth( self.textEdit_call.sizePolicy().hasHeightForWidth()) self.textEdit_call.setSizePolicy(sizePolicy) self.textEdit_call.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded) self.textEdit_call.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded) self.textEdit_call.setLineWrapMode(QTextEdit.NoWrap) print "##Intitialize CALLINOUT" # Yuan initialize the CFG Tab's Graph scene self.Graph = GraphicsView() self.Graph.initShow(self.tab_cfg, self.gridLayout_11, self.tabWidget, self.plainTextEdit_dalvik) # set the editor to "read only" self.plainTextEdit_dalvik.setReadOnly(1) self.plainTextEdit_java.setReadOnly(1) self.plainTextEdit_bytecode.setReadOnly(1) # connect the signal and slot #yuan: connect back #self.connect(self.back, SIGNAL("clicked()"), self.backon) #self.connect(self.forward, SIGNAL("clicked()"), self.forwardon) self.connect(self.pushButton, SIGNAL("clicked()"), self.searchAndFilter) self.connect(self.lineEdit, SIGNAL("editingFinished()"), self.refreshTreeWidget) self.connect(self.lineEdit, SIGNAL("textChanged()"), self.refreshTreeWidget) #self.connect(self.make, SIGNAL("clicked()"), self.makesmali) # define the global variable import Global Global.GRAPH = self.Graph #yuan count the number of method called NAV_NO and NAV_P is the current pointed method Global.NAV_NO = 0 Global.NAV_P = 0 Global.MAINWINDOW = self Global.currentclass = "" # yuan config the flag Global.CONFIG = { "CFG": 1, "Dalvik": 1, "Java": 0, "Bytecode": 1, "Smali": 1, "CallIn": 1, "CallOut": 1, "Permission": 1, "Manifest": 1 } # initialize the class attribute self.findHistroyList = QStringList()