class sau_edit(qt.QMainWindow): def __init__(self): super(sau_edit, self).__init__() self.screen = qt.QDesktopWidget().screenGeometry() self.ht = (self.screen.height()) self.wd = (self.screen.width()) self.setGeometry(0, 0, self.wd, self.ht) self.setMinimumSize(self.wd / 2, self.ht / 2) #self.setGeometry((self.screen.width()-self.wd)/2,0,self.wd,self.ht-50) #self.setFixedSize(self.wd,self.ht-50) #self.showMaximized() #self.showFullScreen() #self.setAttribute(QtCore.Qt.WA_TranslucentBackground) self.setWindowTitle("SAU-editor") self.setWindowIcon(qt.QIcon("notepad.png")) #---------------------------------status label------------------------------------- """self.status=qt.QLabel(self) self.status.move(750,500)#self.wd-200,self.ht-200) self.status.setStyleSheet("QTextEdit {color:red;background-color:white}")""" #---------------------------------all menu bar entry-------------------------------- new_file_key = qt.QAction("&New file", self) new_file_key.setShortcut("Ctrl+n") new_file_key.setStatusTip('New file') new_file_key.triggered.connect(self.new_file) new_window_file_key = qt.QAction("&New window", self) new_window_file_key.setShortcut("Ctrl+Shift+n") new_window_file_key.setStatusTip('New window') new_window_file_key.triggered.connect(self.new_window_file) open_file_key = qt.QAction("&Open file", self) open_file_key.setShortcut("Ctrl+o") open_file_key.setStatusTip('Open file') open_file_key.triggered.connect(self.open_file) save_key = qt.QAction("&Save", self) save_key.setShortcut("Ctrl+s") save_key.setStatusTip('Save file') save_key.triggered.connect(self.save_file) quit_key = qt.QAction("&Quit application !", self) quit_key.setShortcut("Ctrl+Q") quit_key.setStatusTip('Leave The App') quit_key.triggered.connect(self.close_application) copy_key = qt.QAction("&Copy", self) copy_key.setShortcut("Ctrl+c") copy_key.setStatusTip('copy') copy_key.triggered.connect(self.save_file) cut_key = qt.QAction("&Cut", self) cut_key.setShortcut("Ctrl+x") cut_key.setStatusTip('cut') cut_key.triggered.connect(self.save_file) paste_key = qt.QAction("&Paste", self) paste_key.setShortcut("Ctrl+v") paste_key.setStatusTip('paste') paste_key.triggered.connect(self.save_file) about_key = qt.QAction("&About", self) about_key.setStatusTip('About editor') about_key.triggered.connect(self.about_info) terminal_key = qt.QAction("&Terminal", self) terminal_key.setStatusTip('Open terminal') terminal_key.triggered.connect(self.show_terminal) refresh_key = qt.QAction("&Refresh", self) refresh_key.setStatusTip('Refresh html page') refresh_key.triggered.connect(self.refresh_fun) self.statusBar() self.terminal() #self.terminal1() #-------------------------------------all menu-s------------------------------------- mainMenu = self.menuBar() fileMenu = mainMenu.addMenu('&File') fileMenu.addAction(new_file_key) fileMenu.addAction(new_window_file_key) fileMenu.addAction(open_file_key) fileMenu.addAction(save_key) fileMenu.addAction(quit_key) edit_menu = mainMenu.addMenu('&Edit') edit_menu.addAction(copy_key) edit_menu.addAction(cut_key) edit_menu.addAction(paste_key) tool_menu = mainMenu.addMenu('&Tool') tool_menu.addAction(terminal_key) tool_menu.addAction(refresh_key) help_menu = mainMenu.addMenu('&Help') help_menu.addAction(about_key) #-------------------------------------textEdit----------------------------------------- self.text_edit_field = QsciScintilla(self) self.text_edit_field.setLexer(Qsci.QsciLexerCPP(self)) self.text_edit_field.setMarginType(10, QsciScintilla.NumberMargin) self.text_edit_field.setMarginWidth(0, "0000") self.text_edit_field.setStyleSheet( "QsciScintilla {background-color:red}") self.text_edit_field.setIndentationGuides(True) self.text_edit_field.setAutoIndent(True) self.text_edit_field.setAutoCompletionThreshold(1) self.text_edit_field.setAutoCompletionSource(QsciScintilla.AcsDocument) self.text_edit_field.setCallTipsStyle( QsciScintilla.CallTipsNoAutoCompletionContext) #self.text_edit_field.setCaretLineVisible(True) self.text_edit_field.setFolding(QsciScintilla.BoxedTreeFoldStyle) self.text_edit_field.setMarginsBackgroundColor(QColor("#333333")) #self.text_edit_field.setCaretLineBackgroundColor(QColor("#A9A9A9")) #self.text_edit_field.setFixedSize(self.wd-500,self.ht-80) self.text_edit_field.setMaximumWidth(300) try: self.text_edit_field.setMinimumSize(self.wd / 2, self.ht / 2) except: pass #self.text_edit_field.showMaximized() self.text_edit_field.move(0, 30) self.font = qt.QFont() self.font.setFamily('Courier') self.font.setPointSize(10) self.text_edit_field.setFont(self.font) #self.text_edit_field.setFontItalic(True) self.text_edit_field.setStyleSheet( "QsciScintilla {color:green;background-color:black}") #highlight = syntax.PythonHighlighter(self.text_edit_field.document()) self.text_edit_field.show() self.file_datail() """try: with open("last_opened.file","r") as lo: self.open_file(lo.read()) print( str(lo.read())) except: pass""" self.load_previous_file() self.show() #-------------------------------------functions----------------------------------- def load_previous_file(self): with open("last_opened.file", "r") as lof: f = lof.read() print(lof.read().strip()) if "." in f: with open(f) as data: cont = data.read() self.text_edit_field.setText(cont) self.file_name = f def file_datail(self): self.file_name_title = qt.QLabel("name:\t", self) self.file_name_title.move(710, 350) self.file_name_title.setFixedSize(250, 30) self.file_size = qt.QLabel("size:\t", self) self.file_size.move(710, 370) self.file_size.setFixedSize(250, 30) def new_window_file(self): os.system("python text_editor.py") def show_terminal(self): path = os.getcwd() os.system("xterm") def terminal(self): self.process = QProcess(self) self.terminal = QWidget(self) #layout = QVBoxLayout(self) #layout.addWidget(self.terminal) self.process.start('xterm', ['-into', str(self.terminal.winId())]) self.terminal.move(self.get_window_size()[0] * 0.66, 30) self.terminal.setFixedSize(490, 600) def terminal1(self): self.process = QProcess(self) self.terminal = QWidget(self) #layout = QVBoxLayout(self) #layout.addWidget(self.terminal) self.process.start('xterm', ['-into', str(self.terminal.winId())]) self.terminal.move(700, 350) self.terminal.setFixedSize(490, 600) def syn(self): data = open(self.file_name, "r").read() data = data.replace("int", "<font color='red'>int</font>") return data def resizeEvent(self, event): #print(("resize")) self.x_y = self.get_window_size() print(self.x_y) self.set_type() if self.x_y[0] <= self.wd / 2: self.terminal.setHidden(True) self.browser.move(self.x_y[0], 30) self.browser.setFixedSize(self.x_y[0] * 0.66, 30) self.file_name_title.setHidden(True) self.file_size.setHidden(True) self.text_edit_field.setFixedSize(self.x_y[0], self.x_y[1]) elif self.x_y[0] >= self.wd / 2: self.terminal.show() self.text_edit_field.setFixedSize(self.x_y[0] * .666, self.x_y[1] - 20) self.file_name_title.move((self.x_y[0] * 0.66) + 10, 350) self.file_size.move((self.x_y[0] * 0.66) + 10, 370) self.terminal.move(self.x_y[0] * 0.66, 30) self.terminal.setFixedSize(self.x_y[0] * 0.33, 600) def get_window_size(self): data = str(self.size()).split("PyQt4.QtCore.QSize")[1].split(",") data1 = [] data1.append(int(data[0][1:])) data1.append(int(data[1][1:-1])) return data1 def about_info(self): self.o = about() self.o.show() def close_application(self): try: with open("last_opened.file", "w") as lo: self.write(self.file_name) print("name stored") except: pass choice = qt.QMessageBox.question( self, "Confirm Exit...", "Are you sure you want to exit ?", qt.QMessageBox.Yes | qt.QMessageBox.No) if choice == qt.QMessageBox.Yes: sys.exit() else: pass def new_file(self): print("new file") self.save_file() self.file_name = None self.text_edit_field.setText("") self.browser.setHidden(True) self.terminal.setHidden(False) def open_file(self): self.fileDialog = qt.QFileDialog(self) self.file_name = self.fileDialog.getOpenFileName() self.setWindowTitle("sau-edit: " + self.file_name) try: with open(self.file_name) as f: self.text_edit_field.setText(f.read()) except: pass #print( self.text_edit_field.text()) #self.text_edit_field.appendHtml(f.read()) #self.text_edit_field.appendHtml(self.syn()) self.file_name_title.setText("<font color='red'>name:</font>" + self.file_name.split("/")[-1]) self.file_size.setText("<font color='red'>size:</font>" + str(os.path.getsize(self.file_name)) + " bytes") self.set_type() """def open_file(self,last_file_name): #self.setWindowTitle("sau-edit: "+last_file_name) if last_file_name==None: print( "none") with open(last_file_name) as f: self.text_edit_field.setText(f.read()) #print( self.text_edit_field.text()) #self.text_edit_field.appendHtml(f.read()) #self.text_edit_field.appendHtml(self.syn()) self.file_name_title.setText("<font color='red'>name:</font>"+self.file_name.split("/")[-1]) self.file_size.setText("<font color='red'>size:</font>"+str(os.path.getsize(self.file_name))+" bytes")""" def save_file(self): print("saved") self.set_type() self.hide_web() try: with open(self.file_name, "w") as f: f.write(self.text_edit_field.text()) print("successful") self.file_name_title.setText("<font color='red'>name:</font>" + self.file_name.split("/")[-1]) self.file_size.setText("<font color='red'>size:</font>" + str(os.path.getsize(self.file_name)) + " bytes") self.setWindowTitle("Sau's Editor: " + str(self.file_name)) except: try: name = qt.QFileDialog.getSaveFileName(self, 'Save File') file = open(name, 'w') text = self.text_edit_field.text() file.write(text) file.close() self.file_name = name self.file_name_title.setText("<font color='red'>name:</font>" + self.file_name.split("/")[-1]) self.file_size.setText("<font color='red'>size:</font>" + str(os.path.getsize(self.file_name)) + " bytes") except: pass #self.status.setText("saved") def closeEvent(self, event): print(event) result = qt.QMessageBox.question( self, "Confirm Exit...", "Are you sure you want to exit ?", qt.QMessageBox.Yes | qt.QMessageBox.No) event.ignore() if result == qt.QMessageBox.Yes: try: with open("last_opened.file", "w") as lo: lo.write(self.file_name) print("name stored") except: pass print("close event") event.accept() #sys.exit() def refresh_fun(self): try: self.browser.load(QUrl(self.file_name)) except: pass def set_type(self): try: ext = self.file_name.split(".")[-1] print(ext) except: ext = "" self.text_edit_field.setLexer(Qsci.QsciLexerCPP(self)) pass if ext == "py": self.text_edit_field.setLexer(Qsci.QsciLexerPython(self)) self.hide_web() print("type python") elif ext == "cpp" or ext == "c": self.text_edit_field.setLexer(Qsci.QsciLexerCPP(self)) self.hide_web() print("type cpp") elif ext == "html": self.text_edit_field.setLexer(Qsci.QsciLexerHTML(self)) self.terminal.setHidden(True) self.browser = QWebView(self) self.browser.load(QUrl(self.file_name)) self.browser.move(self.x_y[0] * 66, 30) self.browser.setFixedSize(self.x_y[0] * 0.33, self.x_y[1] - 20) self.browser.show() #self.browser.move(500,0) #self.setGeometry((self.screen.width()-self.wd+200)/2,0,self.wd,self.ht-50) #self.setFixedSize(self.wd+200,self.ht-50) print("type html") def hide_web(self): #try: print("hide html") self.terminal.setHidden(False) try: self.browser.close() self.browser.setHidden(True) except: pass