#!
/usr/bin/env python
from PyQt4 import QtCore, QtGui
from [Link] import *
from [Link] import *
import os,sys
try:
_fromUtf8 = [Link].fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = [Link].UnicodeUTF8
def _translate(context, text, disambig):
return [Link](context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return [Link](context, text, disambig)
class Ui_IOTester(object):
def setupUi(self, IOTester):
[Link](_fromUtf8("IOTester"))
[Link](726, 641)
[Link] = [Link](IOTester)
[Link]([Link](50, 40, 651, 241))
[Link](_fromUtf8("CodeWindow"))
# [Link]([Link])
[Link]=MyHighlighter([Link],"Classic")
[Link] = [Link](IOTester)
[Link]([Link](50, 520, 651, 71))
[Link](_fromUtf8("Stdout"))
[Link] = [Link](IOTester)
[Link]([Link](50, 410, 651, 71))
[Link](_fromUtf8("Stdin"))
[Link] = [Link](IOTester)
[Link]([Link](50, 310, 651, 71))
[Link](_fromUtf8("CompileLog"))
[Link] = [Link](IOTester)
[Link]([Link](120, 610, 84, 24))
[Link](_fromUtf8("CompileBtn"))
[Link] = [Link](IOTester)
[Link]([Link](230, 610, 84, 24))
[Link](_fromUtf8("RunBtn"))
[Link] = [Link](IOTester)
[Link]([Link](340, 610, 84, 24))
[Link](_fromUtf8("SaveBtn"))
[Link] = [Link](IOTester)
[Link]([Link](440, 610, 84, 24))
[Link](_fromUtf8("OpenBtn"))
[Link] = [Link](IOTester)
[Link]([Link](50, 20, 111, 16))
[Link](_fromUtf8("label"))
self.label_2 = [Link](IOTester)
self.label_2.setGeometry([Link](50, 290, 101, 16))
self.label_2.setObjectName(_fromUtf8("label_2"))
self.label_3 = [Link](IOTester)
self.label_3.setGeometry([Link](50, 390, 81, 16))
self.label_3.setObjectName(_fromUtf8("label_3"))
self.label_4 = [Link](IOTester)
self.label_4.setGeometry([Link](50, 490, 81, 16))
self.label_4.setObjectName(_fromUtf8("label_4"))
[Link](self.compile_function)
[Link](self.run_function)
[Link](self.open_function)
[Link](self.save_function)
[Link](IOTester)
[Link](IOTester)
def retranslateUi(self, IOTester):
[Link](_translate("IOTester", "IO Tester for C/C++",
None))
[Link](_translate("IOTester", "Compile", None))
[Link](_translate("IOTester", "Run", None))
[Link](_translate("IOTester", "Save", None))
[Link](_translate("IOTester", "Open", None))
[Link](_translate("IOTester", "Code Window", None))
self.label_2.setText(_translate("IOTester", "Compile Log", None))
self.label_3.setText(_translate("IOTester", "Stdin", None))
self.label_4.setText(_translate("IOTester", "Stdout", None))
def compile_function(self):
self.x=str([Link]())
self.text_file=open(".temp.c","w")
self.text_file.write(self.x);
self.text_file.close()
[Link]("bash compile_script.sh")
self.text_file=open(".[Link]","r")
self.x=self.text_file.read()
self.text_file.close()
[Link](self.x)
[Link]("bash flush_script.sh")
def run_function(self):
self.x=str([Link]())
self.text_file=open(".input","w")
self.text_file.write(self.x)
self.text_file.close()
[Link]("bash run_script.sh")
self.text_file=open(".output","r")
self.x=self.text_file.read()
self.text_file.close()
[Link](self.x)
[Link]("bash flush_script.sh")
self.text_file=open("logfile","r")
self.x=self.text_file.read()
self.text_file.close()
[Link](None,"Message","Submission Report:"+self.x)
[Link]("echo \"\"> logfile")
def open_function(self):
[Link] = [Link](IOTester, 'Open file',
'/home')
if([Link]==''):
return;
self.f = open([Link], 'r')
[Link] = [Link]()
[Link]()
[Link]([Link])
def save_function(self):
[Link]=[Link](IOTester,'Save File','/home')
if [Link]=='':
return #do nothing
[Link]=str([Link]())
self.f=open([Link],'w')
[Link]([Link])
[Link]()
class MyHighlighter( QSyntaxHighlighter ):
def __init__( self, parent, theme ):
QSyntaxHighlighter.__init__( self, parent )
[Link] = parent
keyword = QTextCharFormat()
assignmentOperator = QTextCharFormat()
delimiter = QTextCharFormat()
specialConstant = QTextCharFormat()
number = QTextCharFormat()
header = QTextCharFormat()
string = QTextCharFormat()
singleLineComment=QTextCharFormat()
multiLineComment=QTextCharFormat() #this would be a rather complicated regex-
still working on it :P
[Link] = []
# keyword
brush = QBrush( [Link], [Link] )
[Link]( brush )
[Link]( [Link] )
keywords = QStringList( [ "break", "else", "for", "if",
"int","float","double","long","short","signed","unsigned","sizeof","typedef"
"return",
"switch","return","case","struct","union"
"try",
"while","void","char","volatile","register","auto","true","false","goto","do","stat
ic","extern"] )
for word in keywords:
pattern = QRegExp("\\b" + word + "\\b")
rule = HighlightingRule( pattern, keyword )
[Link](rule)
# delimiter
pattern = QRegExp( "[\)\(]+|[\{\}]+|[][]+" )
[Link]( brush )
[Link]( [Link] )
rule = HighlightingRule( pattern, delimiter )
[Link]( rule )
# specialConstant
brush = QBrush( [Link], [Link] )
[Link]( brush )
keywords = QStringList( [ "NULL" ] )
for word in keywords:
pattern = QRegExp("\\b" + word + "\\b")
rule = HighlightingRule( pattern, specialConstant )
[Link]( rule )
# header files
brush = QBrush( [Link], [Link] )
pattern = QRegExp( "#[^\n]*" )
[Link]( brush )
rule = HighlightingRule( pattern, header )
[Link]( rule )
# string
brush = QBrush( [Link], [Link] )
pattern = QRegExp( "\".*\"" )
[Link]( brush )
rule = HighlightingRule( pattern, string )
[Link]( rule )
#single line comment
brush=QBrush([Link],[Link])
pattern=QRegExp("//[^\n]*")
[Link](brush)
rule=HighlightingRule(pattern,singleLineComment)
[Link](rule)
#multi line comment
brush=QBrush([Link],[Link])
pattern=QRegExp("/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/")
[Link](brush)
rule=HighlightingRule(pattern,multiLineComment)
[Link](rule)
def highlightBlock( self, text ):
for rule in [Link]:
expression = QRegExp( [Link] )
index = [Link]( text )
while index >= 0:
length = [Link]()
[Link]( index, length, [Link] )
index = [Link]( expression, index + length )
[Link]( 0 )
class HighlightingRule():
def __init__( self, pattern, format ):
[Link] = pattern
[Link] = format
if __name__ == "__main__":
import sys
app = [Link]([Link])
IOTester=[Link]()
ui=Ui_IOTester()
[Link](IOTester)
[Link]()
[Link](app.exec_())