def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.ui = Ui_Spellcheck() self.ui.setupUi(self) self.hidewidgets() self.checker = hunspell.HunSpell('hunspell/ne_NP.dic', 'hunspell/ne_NP.aff') self.highlighter = Highlighter(self.ui.textEdit.document()) self.highlighter.setDict(self.checker) self.ui.toolBar.setContextMenuPolicy(Qt.NoContextMenu) self.ui.formatBar.setContextMenuPolicy(Qt.NoContextMenu) self.ui.textEdit.setContextMenuPolicy(Qt.CustomContextMenu) self.ui.textEdit.customContextMenuRequested.connect( self.showContextMenu) self.ui.textEdit.mousePressedSignal.connect(self.OnMousePressed) self.ui.textEdit.setAttribute(QtCore.Qt.WA_InputMethodEnabled, True) for i in range(1, 3): self.ui.textEdit.zoomIn() #Define actions for toolbar self.mppAction = QtGui.QAction(QtGui.QIcon('Resources/mpplogo.gif'), 'Madan Puraskar Pustakalaya', self) self.newAction = QtGui.QAction(QtGui.QIcon('Resources/New.png'), 'New', self) self.openAction = QtGui.QAction(QtGui.QIcon('Resources/Open.png'), 'Open', self) self.saveAction = QtGui.QAction(QtGui.QIcon('Resources/Save.png'), 'Save', self) self.saveAsAction = QtGui.QAction(QtGui.QIcon('Resources/SaveAs.png'), 'SaveAs', self) self.cutAction = QtGui.QAction(QtGui.QIcon('Resources/Cut.png'), 'Cut', self) self.copyAction = QtGui.QAction(QtGui.QIcon('Resources/Copy.png'), 'Copy', self) self.pasteAction = QtGui.QAction(QtGui.QIcon('Resources/Paste.png'), 'Paste', self) self.closeAction = QtGui.QAction(QtGui.QIcon('Resources/Close.png'), 'Close', self) #Define Buttons self.bold_button = QtGui.QToolButton(self) self.defineButton(self.bold_button, 'Resources/format-text-bold.png', True, True, 'Ctrl+B', 'Bold', self.set_bold) self.italic_button = QtGui.QToolButton(self) self.defineButton(self.italic_button, 'Resources/format-text-italic.png', True, True, 'Ctrl+I', 'Italic', self.set_italic) self.underline_button = QtGui.QToolButton(self) self.defineButton(self.underline_button, 'Resources/format-text-underline.png', True, True, 'Ctrl+U', 'Underline', self.set_underline) self.alignleft_button = QtGui.QToolButton(self) self.defineButton(self.alignleft_button, 'Resources/format-justify-left.png', True, True, 'Ctrl+L', 'Align Left', self.set_alignleft) self.aligncenter_button = QtGui.QToolButton(self) self.defineButton(self.aligncenter_button, 'Resources/format-justify-center.png', True, True, 'Ctrl+E', 'Align Center', self.set_aligncenter) self.alignright_button = QtGui.QToolButton(self) self.defineButton(self.alignright_button, 'Resources/format-justify-right.png', True, True, 'Ctrl+R', 'Align Right', self.set_alignright) self.zoomin_button = QtGui.QToolButton(self) self.defineButton(self.zoomin_button, 'Resources/list-add.png', True, False, 'Ctrl++', 'Zoom In', self.ui.textEdit.zoomIn) self.zoomout_button = QtGui.QToolButton(self) self.defineButton(self.zoomout_button, 'Resources/list-remove.png', True, False, 'Ctrl+-', 'Zoom Out', self.ui.textEdit.zoomOut) self.color_button = QtGui.QToolButton(self) self.defineButton(self.color_button, 'Resources/color.png', True, False, None, 'Color', self.set_color) #toolbar sequencing self.ui.menubar.setContextMenuPolicy(Qt.NoContextMenu) self.ui.toolBar.setContextMenuPolicy(Qt.NoContextMenu) self.ui.toolBar.setIconSize(QSize(22, 22)) self.ui.toolBar.addSeparator() self.ui.toolBar.addAction(self.newAction) self.ui.toolBar.addAction(self.openAction) self.ui.toolBar.addAction(self.saveAction) self.ui.toolBar.addAction(self.saveAsAction) self.ui.toolBar.addSeparator() self.ui.toolBar.addAction(self.closeAction) #formatbar sequencing self.ui.formatBar.setIconSize(QSize(22, 22)) self.ui.formatBar.addAction(self.mppAction) self.ui.formatBar.addSeparator() self.ui.formatBar.addAction(self.cutAction) self.ui.formatBar.addAction(self.copyAction) self.ui.formatBar.addAction(self.pasteAction) self.ui.formatBar.addSeparator() self.ui.formatBar.addWidget(self.bold_button) self.ui.formatBar.addWidget(self.italic_button) self.ui.formatBar.addWidget(self.underline_button) self.ui.formatBar.addSeparator() self.ui.formatBar.addWidget(self.alignleft_button) self.ui.formatBar.addWidget(self.aligncenter_button) self.ui.formatBar.addWidget(self.alignright_button) self.ui.formatBar.addSeparator() self.ui.formatBar.addWidget(self.color_button) self.ui.formatBar.addSeparator() self.ui.formatBar.addWidget(self.zoomin_button) self.ui.formatBar.addWidget(self.zoomout_button) #slots self.watcher = QtCore.QFileSystemWatcher(self) self.newAction.triggered.connect(self.file_new) self.openAction.triggered.connect(self.file_open) self.saveAction.triggered.connect(self.file_save) self.saveAsAction.triggered.connect(self.file_saveAs) self.cutAction.triggered.connect(self.ui.textEdit.cut) self.copyAction.triggered.connect(self.ui.textEdit.copy) self.pasteAction.triggered.connect(self.ui.textEdit.paste) self.closeAction.triggered.connect(self.close) self.ui.actionAbout.triggered.connect(self.about) self.ui.actionClose.triggered.connect(self.close) self.ui.actionOpen.triggered.connect(self.file_open) self.ui.actionNew.triggered.connect(self.file_new) self.ui.actionSave.triggered.connect(self.file_save) self.ui.actionSaveAs.triggered.connect(self.file_saveAs) self.ui.textEdit.textChanged.connect(self.save_enable) self.ui.actionCut.triggered.connect(self.ui.textEdit.cut) self.ui.actionCopy.triggered.connect(self.ui.textEdit.copy) self.ui.actionPaste.triggered.connect(self.ui.textEdit.paste) self.ui.actionUndo.triggered.connect(self.ui.textEdit.undo) self.ui.actionRedo.triggered.connect(self.ui.textEdit.redo) self.ui.actionGoto.triggered.connect(self.gotoline) self.ui.actionSearch.triggered.connect(self.find) self.ui.actionReplace.triggered.connect(self.replace) self.ui.actionBug.triggered.connect(self.BugReport) self.watcher.fileChanged.connect(self.file_changed) self.mppAction.triggered.connect(self.open_mpp) self.EscAction = QtGui.QShortcut(QtGui.QKeySequence(self.tr("Esc")), self) self.EscAction.activated.connect(self.hidewidgets) self.ui.actionSave.setEnabled(False) self.saveAction.setEnabled(False) self.filename = "" #self.ui.textEdit.setStyleSheet("QTextEdit {color:white}") self.update_text()
def __init__(self,parent=None): QtGui.QWidget.__init__(self,parent) self.ui=Ui_Spellcheck() self.ui.setupUi(self) self.hidewidgets() self.checker=hunspell.HunSpell('hunspell/ne_NP.dic','hunspell/ne_NP.aff') self.highlighter = Highlighter(self.ui.textEdit.document()) self.highlighter.setDict(self.checker) self.ui.toolBar.setContextMenuPolicy(Qt.NoContextMenu) self.ui.formatBar.setContextMenuPolicy(Qt.NoContextMenu) self.ui.textEdit.setContextMenuPolicy(Qt.CustomContextMenu) self.ui.textEdit.customContextMenuRequested.connect(self.showContextMenu) self.ui.textEdit.mousePressedSignal.connect(self.OnMousePressed) self.ui.textEdit.setAttribute(QtCore.Qt.WA_InputMethodEnabled, True) for i in range(1,3): self.ui.textEdit.zoomIn() #Define actions for toolbar self.mppAction = QtGui.QAction(QtGui.QIcon('Resources/mpplogo.gif'), 'Madan Puraskar Pustakalaya', self) self.newAction = QtGui.QAction(QtGui.QIcon('Resources/New.png'), 'New', self) self.openAction = QtGui.QAction(QtGui.QIcon('Resources/Open.png'), 'Open', self) self.saveAction = QtGui.QAction(QtGui.QIcon('Resources/Save.png'), 'Save', self) self.saveAsAction = QtGui.QAction(QtGui.QIcon('Resources/SaveAs.png'), 'SaveAs', self) self.cutAction = QtGui.QAction(QtGui.QIcon('Resources/Cut.png'), 'Cut', self) self.copyAction = QtGui.QAction(QtGui.QIcon('Resources/Copy.png'), 'Copy', self) self.pasteAction = QtGui.QAction(QtGui.QIcon('Resources/Paste.png'), 'Paste', self) self.closeAction = QtGui.QAction(QtGui.QIcon('Resources/Close.png'), 'Close', self) #Define Buttons self.bold_button = QtGui.QToolButton(self) self.defineButton(self.bold_button,'Resources/format-text-bold.png',True,True,'Ctrl+B','Bold',self.set_bold) self.italic_button = QtGui.QToolButton(self) self.defineButton(self.italic_button,'Resources/format-text-italic.png',True,True,'Ctrl+I','Italic',self.set_italic) self.underline_button = QtGui.QToolButton(self) self.defineButton(self.underline_button,'Resources/format-text-underline.png',True,True,'Ctrl+U','Underline',self.set_underline) self.alignleft_button = QtGui.QToolButton(self) self.defineButton(self.alignleft_button,'Resources/format-justify-left.png',True,True,'Ctrl+L','Align Left',self.set_alignleft) self.aligncenter_button = QtGui.QToolButton(self) self.defineButton(self.aligncenter_button,'Resources/format-justify-center.png',True,True,'Ctrl+E','Align Center',self.set_aligncenter) self.alignright_button = QtGui.QToolButton(self) self.defineButton(self.alignright_button,'Resources/format-justify-right.png',True,True,'Ctrl+R','Align Right',self.set_alignright) self.zoomin_button = QtGui.QToolButton(self) self.defineButton(self.zoomin_button,'Resources/list-add.png',True,False,'Ctrl++','Zoom In',self.ui.textEdit.zoomIn) self.zoomout_button = QtGui.QToolButton(self) self.defineButton(self.zoomout_button,'Resources/list-remove.png',True,False,'Ctrl+-','Zoom Out',self.ui.textEdit.zoomOut) self.color_button = QtGui.QToolButton(self) self.defineButton(self.color_button,'Resources/color.png',True,False,None,'Color',self.set_color) #toolbar sequencing self.ui.menubar.setContextMenuPolicy(Qt.NoContextMenu) self.ui.toolBar.setContextMenuPolicy(Qt.NoContextMenu) self.ui.toolBar.setIconSize(QSize(22,22)) self.ui.toolBar.addSeparator() self.ui.toolBar.addAction(self.newAction) self.ui.toolBar.addAction(self.openAction) self.ui.toolBar.addAction(self.saveAction) self.ui.toolBar.addAction(self.saveAsAction) self.ui.toolBar.addSeparator() self.ui.toolBar.addAction(self.closeAction) #formatbar sequencing self.ui.formatBar.setIconSize(QSize(22,22)) self.ui.formatBar.addAction(self.mppAction) self.ui.formatBar.addSeparator() self.ui.formatBar.addAction(self.cutAction) self.ui.formatBar.addAction(self.copyAction) self.ui.formatBar.addAction(self.pasteAction) self.ui.formatBar.addSeparator() self.ui.formatBar.addWidget(self.bold_button) self.ui.formatBar.addWidget(self.italic_button) self.ui.formatBar.addWidget(self.underline_button) self.ui.formatBar.addSeparator() self.ui.formatBar.addWidget(self.alignleft_button) self.ui.formatBar.addWidget(self.aligncenter_button) self.ui.formatBar.addWidget(self.alignright_button) self.ui.formatBar.addSeparator() self.ui.formatBar.addWidget(self.color_button) self.ui.formatBar.addSeparator() self.ui.formatBar.addWidget(self.zoomin_button) self.ui.formatBar.addWidget(self.zoomout_button) #slots self.watcher=QtCore.QFileSystemWatcher(self) self.newAction.triggered.connect(self.file_new) self.openAction.triggered.connect(self.file_open) self.saveAction.triggered.connect(self.file_save) self.saveAsAction.triggered.connect(self.file_saveAs) self.cutAction.triggered.connect(self.ui.textEdit.cut) self.copyAction.triggered.connect(self.ui.textEdit.copy) self.pasteAction.triggered.connect(self.ui.textEdit.paste) self.closeAction.triggered.connect(self.close) self.ui.actionAbout.triggered.connect(self.about) self.ui.actionClose.triggered.connect(self.close) self.ui.actionOpen.triggered.connect(self.file_open) self.ui.actionNew.triggered.connect(self.file_new) self.ui.actionSave.triggered.connect(self.file_save) self.ui.actionSaveAs.triggered.connect(self.file_saveAs) self.ui.textEdit.textChanged.connect(self.save_enable) self.ui.actionCut.triggered.connect(self.ui.textEdit.cut) self.ui.actionCopy.triggered.connect(self.ui.textEdit.copy) self.ui.actionPaste.triggered.connect(self.ui.textEdit.paste) self.ui.actionUndo.triggered.connect(self.ui.textEdit.undo) self.ui.actionRedo.triggered.connect(self.ui.textEdit.redo) self.ui.actionGoto.triggered.connect(self.gotoline) self.ui.actionSearch.triggered.connect(self.find) self.ui.actionReplace.triggered.connect(self.replace) self.ui.actionBug.triggered.connect(self.BugReport) self.watcher.fileChanged.connect(self.file_changed) self.mppAction.triggered.connect(self.open_mpp) self.EscAction = QtGui.QShortcut(QtGui.QKeySequence(self.tr("Esc")), self); self.EscAction.activated.connect(self.hidewidgets) self.ui.actionSave.setEnabled(False) self.saveAction.setEnabled(False) self.filename="" #self.ui.textEdit.setStyleSheet("QTextEdit {color:white}") self.update_text()
class NepalSCGUI(QtGui.QMainWindow): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.ui = Ui_Spellcheck() self.ui.setupUi(self) self.hidewidgets() self.checker = hunspell.HunSpell('hunspell/ne_NP.dic', 'hunspell/ne_NP.aff') self.highlighter = Highlighter(self.ui.textEdit.document()) self.highlighter.setDict(self.checker) self.ui.toolBar.setContextMenuPolicy(Qt.NoContextMenu) self.ui.formatBar.setContextMenuPolicy(Qt.NoContextMenu) self.ui.textEdit.setContextMenuPolicy(Qt.CustomContextMenu) self.ui.textEdit.customContextMenuRequested.connect( self.showContextMenu) self.ui.textEdit.mousePressedSignal.connect(self.OnMousePressed) self.ui.textEdit.setAttribute(QtCore.Qt.WA_InputMethodEnabled, True) for i in range(1, 3): self.ui.textEdit.zoomIn() #Define actions for toolbar self.mppAction = QtGui.QAction(QtGui.QIcon('Resources/mpplogo.gif'), 'Madan Puraskar Pustakalaya', self) self.newAction = QtGui.QAction(QtGui.QIcon('Resources/New.png'), 'New', self) self.openAction = QtGui.QAction(QtGui.QIcon('Resources/Open.png'), 'Open', self) self.saveAction = QtGui.QAction(QtGui.QIcon('Resources/Save.png'), 'Save', self) self.saveAsAction = QtGui.QAction(QtGui.QIcon('Resources/SaveAs.png'), 'SaveAs', self) self.cutAction = QtGui.QAction(QtGui.QIcon('Resources/Cut.png'), 'Cut', self) self.copyAction = QtGui.QAction(QtGui.QIcon('Resources/Copy.png'), 'Copy', self) self.pasteAction = QtGui.QAction(QtGui.QIcon('Resources/Paste.png'), 'Paste', self) self.closeAction = QtGui.QAction(QtGui.QIcon('Resources/Close.png'), 'Close', self) #Define Buttons self.bold_button = QtGui.QToolButton(self) self.defineButton(self.bold_button, 'Resources/format-text-bold.png', True, True, 'Ctrl+B', 'Bold', self.set_bold) self.italic_button = QtGui.QToolButton(self) self.defineButton(self.italic_button, 'Resources/format-text-italic.png', True, True, 'Ctrl+I', 'Italic', self.set_italic) self.underline_button = QtGui.QToolButton(self) self.defineButton(self.underline_button, 'Resources/format-text-underline.png', True, True, 'Ctrl+U', 'Underline', self.set_underline) self.alignleft_button = QtGui.QToolButton(self) self.defineButton(self.alignleft_button, 'Resources/format-justify-left.png', True, True, 'Ctrl+L', 'Align Left', self.set_alignleft) self.aligncenter_button = QtGui.QToolButton(self) self.defineButton(self.aligncenter_button, 'Resources/format-justify-center.png', True, True, 'Ctrl+E', 'Align Center', self.set_aligncenter) self.alignright_button = QtGui.QToolButton(self) self.defineButton(self.alignright_button, 'Resources/format-justify-right.png', True, True, 'Ctrl+R', 'Align Right', self.set_alignright) self.zoomin_button = QtGui.QToolButton(self) self.defineButton(self.zoomin_button, 'Resources/list-add.png', True, False, 'Ctrl++', 'Zoom In', self.ui.textEdit.zoomIn) self.zoomout_button = QtGui.QToolButton(self) self.defineButton(self.zoomout_button, 'Resources/list-remove.png', True, False, 'Ctrl+-', 'Zoom Out', self.ui.textEdit.zoomOut) self.color_button = QtGui.QToolButton(self) self.defineButton(self.color_button, 'Resources/color.png', True, False, None, 'Color', self.set_color) #toolbar sequencing self.ui.menubar.setContextMenuPolicy(Qt.NoContextMenu) self.ui.toolBar.setContextMenuPolicy(Qt.NoContextMenu) self.ui.toolBar.setIconSize(QSize(22, 22)) self.ui.toolBar.addSeparator() self.ui.toolBar.addAction(self.newAction) self.ui.toolBar.addAction(self.openAction) self.ui.toolBar.addAction(self.saveAction) self.ui.toolBar.addAction(self.saveAsAction) self.ui.toolBar.addSeparator() self.ui.toolBar.addAction(self.closeAction) #formatbar sequencing self.ui.formatBar.setIconSize(QSize(22, 22)) self.ui.formatBar.addAction(self.mppAction) self.ui.formatBar.addSeparator() self.ui.formatBar.addAction(self.cutAction) self.ui.formatBar.addAction(self.copyAction) self.ui.formatBar.addAction(self.pasteAction) self.ui.formatBar.addSeparator() self.ui.formatBar.addWidget(self.bold_button) self.ui.formatBar.addWidget(self.italic_button) self.ui.formatBar.addWidget(self.underline_button) self.ui.formatBar.addSeparator() self.ui.formatBar.addWidget(self.alignleft_button) self.ui.formatBar.addWidget(self.aligncenter_button) self.ui.formatBar.addWidget(self.alignright_button) self.ui.formatBar.addSeparator() self.ui.formatBar.addWidget(self.color_button) self.ui.formatBar.addSeparator() self.ui.formatBar.addWidget(self.zoomin_button) self.ui.formatBar.addWidget(self.zoomout_button) #slots self.watcher = QtCore.QFileSystemWatcher(self) self.newAction.triggered.connect(self.file_new) self.openAction.triggered.connect(self.file_open) self.saveAction.triggered.connect(self.file_save) self.saveAsAction.triggered.connect(self.file_saveAs) self.cutAction.triggered.connect(self.ui.textEdit.cut) self.copyAction.triggered.connect(self.ui.textEdit.copy) self.pasteAction.triggered.connect(self.ui.textEdit.paste) self.closeAction.triggered.connect(self.close) self.ui.actionAbout.triggered.connect(self.about) self.ui.actionClose.triggered.connect(self.close) self.ui.actionOpen.triggered.connect(self.file_open) self.ui.actionNew.triggered.connect(self.file_new) self.ui.actionSave.triggered.connect(self.file_save) self.ui.actionSaveAs.triggered.connect(self.file_saveAs) self.ui.textEdit.textChanged.connect(self.save_enable) self.ui.actionCut.triggered.connect(self.ui.textEdit.cut) self.ui.actionCopy.triggered.connect(self.ui.textEdit.copy) self.ui.actionPaste.triggered.connect(self.ui.textEdit.paste) self.ui.actionUndo.triggered.connect(self.ui.textEdit.undo) self.ui.actionRedo.triggered.connect(self.ui.textEdit.redo) self.ui.actionGoto.triggered.connect(self.gotoline) self.ui.actionSearch.triggered.connect(self.find) self.ui.actionReplace.triggered.connect(self.replace) self.ui.actionBug.triggered.connect(self.BugReport) self.watcher.fileChanged.connect(self.file_changed) self.mppAction.triggered.connect(self.open_mpp) self.EscAction = QtGui.QShortcut(QtGui.QKeySequence(self.tr("Esc")), self) self.EscAction.activated.connect(self.hidewidgets) self.ui.actionSave.setEnabled(False) self.saveAction.setEnabled(False) self.filename = "" #self.ui.textEdit.setStyleSheet("QTextEdit {color:white}") self.update_text() #Imports CSS stylesheet to the QMainWindow def importCSS(self, path): sshFile = "stylesheets/" + path with open(sshFile, "r") as fh: self.setStyleSheet(fh.read()) #Links to MPP website def open_mpp(self): webbrowser.open('http://madanpuraskar.org/') #Hides extra widgets def hidewidgets(self): self.ui.Gotowidget.hide() self.ui.Findwidget.hide() self.ui.Replacewidget.hide() self.ui.Bugwidget.hide() self.ui.textEdit.setFocus() #Defines Button Actions def defineButton(self, button, Icon, Raise, Check, Shortcut, Tooltip, Action): button.setIcon(QtGui.QIcon(Icon)) button.setAutoRaise(Raise) button.setCheckable(Check) button.setShortcut(QtGui.QKeySequence(Shortcut)) button.setToolTip(Tooltip) button.clicked.connect(Action) return button #Enables Save feature def save_enable(self): self.ui.actionSave.setEnabled(True) self.saveAction.setEnabled(True) if self.filename: self.setWindowTitle( unicode(self.objectName() + " - " + self.filename + "[*]")) #Creates new file def file_new(self): if self.savecheck_dialog(): return self.ui.textEdit.setText('') self.ui.actionSave.setEnabled(False) self.saveAction.setEnabled(False) #Opens existing File def file_open(self): if self.savecheck_dialog(): return self.filename = QtGui.QFileDialog.getOpenFileName( self, "Open file", ".") from os.path import isfile if isfile(self.filename): if self.filename: self.watcher.removePath(self.filename) import codecs text = codecs.open(self.filename, 'r', 'utf-8').read() self.ui.textEdit.setPlainText(text) self.ui.actionSave.setEnabled(False) self.saveAction.setEnabled(False) self.watcher.addPath(self.filename) self.setWindowTitle( unicode(self.objectName() + " - " + self.filename)) #Checks if file has been changed def file_changed(self, path): res = QMessageBox.question( self, "%s - File has been changed" % self.objectName(), "The opened document has been modified by another program.\n" + "Do you want to reload the file?", QMessageBox.Yes | QMessageBox.No | (QMessageBox.Save if self.button.actionSave.isEnabled() else 0), QMessageBox.Yes) if res == QMessageBox.Yes: self.file_open(self.filename) elif res == QMessageBox.Save: self.file_save() #AboutBox def about(self): res = QMessageBox.about( self, "%s - About" % self.objectName(), "Nepali Spellchecker v2 is a small software created by Language and Technology Kendra (LTK) a division of Madan Puraskar Pustakalaya.\n" + "All rights reserved.") if res == QMessageBox.Ok: return #Saves file def file_save(self): from os.path import isfile self.watcher.removePath(self.filename) if not isfile(self.filename): self.filename = QtGui.QFileDialog.getSaveFileName( self, 'Save File', '.txt') import codecs savetext = codecs.open(self.filename, 'w', 'utf-8') savetext.write(unicode(self.ui.textEdit.toPlainText())) savetext.close() self.ui.actionSave.setEnabled(False) self.saveAction.setEnabled(False) self.watcher.addPath(self.filename) #SaveAs feature def file_saveAs(self): from os.path import isfile self.watcher.removePath(self.filename) self.filename = QtGui.QFileDialog.getSaveFileName( self, 'Save File', '.txt') import codecs savetext = codecs.open(self.filename, 'w', 'utf-8') savetext.write(unicode(self.ui.textEdit.toPlainText())) savetext.close() self.ui.actionSave.setEnabled(False) self.saveAction.setEnabled(False) self.watcher.addPath(self.filename) #Dialog Box before closing def savecheck_dialog(self): if not self.ui.actionSave.isEnabled(): return res = QMessageBox.question( self, "%s - Unsaved Changes" % self.objectName(), "The document has been modified\n" + "Do you want to save your changes?", QMessageBox.Save | QMessageBox.Discard | QMessageBox.Cancel, QMessageBox.Save) print(res) if res == QMessageBox.Save: self.file_save() return res == QMessageBox.Cancel def closeEvent(self, event): if self.savecheck_dialog(): event.ignore() else: event.accept() def set_bold(self): if self.bold_button.isChecked(): self.ui.textEdit.setFocus(Qt.OtherFocusReason) self.ui.textEdit.setFontWeight(QtGui.QFont.Bold) else: self.ui.textEdit.setFocus(Qt.OtherFocusReason) self.ui.textEdit.setFontWeight(QtGui.QFont.Normal) def set_italic(self, bool): if bool: self.ui.textEdit.setFocus(Qt.OtherFocusReason) self.ui.textEdit.setFontItalic(True) else: self.ui.textEdit.setFocus(Qt.OtherFocusReason) self.ui.textEdit.setFontItalic(False) def set_underline(self, bool): if bool: self.ui.textEdit.setFocus(Qt.OtherFocusReason) self.ui.textEdit.setFontUnderline(True) else: self.ui.textEdit.setFocus(Qt.OtherFocusReason) self.ui.textEdit.setFontUnderline(False) def set_alignleft(self, bool): if bool: self.ui.textEdit.setFocus(Qt.OtherFocusReason) self.ui.textEdit.setAlignment(Qt.AlignLeft) self.update_alignment(Qt.AlignLeft) def set_aligncenter(self, bool): if bool: self.ui.textEdit.setFocus(Qt.OtherFocusReason) self.ui.textEdit.setAlignment(Qt.AlignCenter) self.update_alignment(Qt.AlignCenter) def set_alignright(self, bool): if bool: self.ui.textEdit.setFocus(Qt.OtherFocusReason) self.ui.textEdit.setAlignment(Qt.AlignRight) self.update_alignment(Qt.AlignRight) def update_alignment(self, al=None): if al is None: al = self.ui.textEdit.alignment() if al == Qt.AlignLeft: self.alignleft_button.setChecked(True) self.aligncenter_button.setChecked(False) self.alignright_button.setChecked(False) elif al == Qt.AlignCenter: self.aligncenter_button.setChecked(True) self.alignleft_button.setChecked(False) self.alignright_button.setChecked(False) elif al == Qt.AlignRight: self.alignright_button.setChecked(True) self.alignleft_button.setChecked(False) self.aligncenter_button.setChecked(False) def set_color(self): color = QtGui.QColorDialog.getColor(self.ui.textEdit.textColor()) if color.isValid(): self.ui.textEdit.setFocus(Qt.OtherFocusReason) self.ui.textEdit.setTextColor(color) pixmap = QtGui.QPixmap(16, 16) pixmap.fill(color) self.color_button.setIcon(QtGui.QIcon(pixmap)) def update_color(self): color = self.ui.textEdit.textColor() pixmap = QtGui.QPixmap(16, 16) pixmap.fill(color) self.color_button.setIcon(QtGui.QIcon(pixmap)) def update_format(self, format): font = format.font() self.bold_button.setChecked(font.bold()) self.italic_button.setChecked(font.italic()) self.underline_button.setChecked(font.underline()) self.update_alignment(self.ui.textEdit.alignment()) def update_text(self): self.update_alignment() self.update_color() #Function for Goto widget def gotoline(self): if self.ui.Replacewidget.isVisible() or self.ui.Bugwidget.isVisible( ) or self.ui.Findwidget.isVisible(): self.hidewidgets() self.ui.Gotowidget.show() self.ui.lineNo.setFocus() self.ui.lineNo.returnPressed.connect(self.gotoaction) self.ui.GoButton.clicked.connect(self.gotoaction) def gotoaction(self): ln = int(self.ui.lineNo.text()) self.ui.Gotowidget.hide() if (ln == None): return cursor = self.ui.textEdit.textCursor() block = self.ui.textEdit.document().findBlockByLineNumber(ln) pos = block.position() cursor.setPosition(pos) self.ui.textEdit.setTextCursor(cursor) self.ui.textEdit.setFocus() #Function for Find Widget def find(self): if self.ui.Replacewidget.isVisible() or self.ui.Bugwidget.isVisible( ) or self.ui.Gotowidget.isVisible(): self.hidewidgets() self.ui.Findwidget.show() self.ui.SearchKey.setFocus() self.ui.SearchKey.returnPressed.connect(self.doFind) self.ui.next.clicked.connect(self.doFind) self.ui.previous.clicked.connect(self.doFindBackwards) def doFindBackwards(self): return self.doFind(backwards=True) def doFind(self, backwards=False): rotationIncomplete = True flags = QtGui.QTextDocument.FindFlags() if backwards: flags = QtGui.QTextDocument.FindBackward if self.ui.MatchCase.isChecked(): flags = flags | QtGui.QTextDocument.FindCaseSensitively if self.ui.Findwidget.isVisible(): text = unicode(self.ui.SearchKey.text()) elif self.ui.Replacewidget.isVisible(): text = unicode(self.ui.OldText.text()) r = self.ui.textEdit.find(text, flags) if r == False: if rotationIncomplete: self.ui.textEdit.moveCursor(QtGui.QTextCursor.Start) rotationIncomplete = False else: QMessageBox.information( self, "End of Search", "No more occurences of the word can be found.") #Funtion for Replace widget def replace(self): if self.ui.Findwidget.isVisible() or self.ui.Bugwidget.isVisible( ) or self.ui.Gotowidget.isVisible(): self.hidewidgets() self.ui.Replacewidget.show() self.ui.OldText.setFocus() self.ui.OldText.returnPressed.connect(self.doFind) self.ui.next_2.clicked.connect(self.doFind) self.ui.previous_2.clicked.connect(self.doFindBackwards) self.ui.replace.clicked.connect(self.doReplace) self.ui.r_all.clicked.connect(self.doReplaceAll) def doReplace(self, backwards=False): cursor = self.ui.textEdit.textCursor() if cursor.hasSelection(): cursor.insertText(self.ui.NewText.text()) else: flags = QtGui.QTextDocument.FindFlags() if backwards: flags = QtGui.QTextDocument.FindBackward if self.ui.MatchCase_2.isChecked(): flags = flags | QtGui.QTextDocument.FindCaseSensitively text = unicode(self.ui.OldText.text()) r = self.ui.textEdit.find(text, flags) if cursor.hasSelection(): cursor.insertText(self.ui.NewText.text()) if r == False: QMessageBox.information( self, "End of Search", "No more occurences of the word can be found.") def doReplaceAll(self): cursor = self.ui.textEdit.textCursor() cursor.beginEditBlock() flags = QtGui.QTextDocument.FindFlags() if self.ui.MatchCase_2.isChecked(): flags = flags | QtGui.QTextDocument.FindCaseSensitively text = unicode(self.ui.OldText.text()) self.ui.textEdit.moveCursor(QtGui.QTextCursor.Start) while True: r = self.ui.textEdit.find(text, flags) if r: qc = self.ui.textEdit.textCursor() if qc.hasSelection(): qc.insertText(self.ui.NewText.text()) else: QMessageBox.information(self, "End of Search", "All occurences replaced.") break cursor.endEditBlock() #Function to enable Bugwidget def BugReport(self): if self.ui.Replacewidget.isVisible() or self.ui.Findwidget.isVisible( ) or self.ui.Gotowidget.isVisible(): self.hidewidgets() self.ui.Bugwidget.show() self.ui.BugType.setFocus() self.ui.ReportButton.clicked.connect(self.bugsend) #Function to email Bug Report def bugsend(self): login, password = '******', 'silverlines' subject = 'Bug Report - ' + unicode(self.ui.BugType.text()) text = unicode(self.ui.BugDetail.toPlainText()) msg = MIMEText(text, _charset='utf-8') msg['Subject'] = Header(subject, 'utf-8') msg['From'] = login msg['To'] = login try: s = SMTP_SSL('smtp.gmail.com', 465, timeout=10) s.set_debuglevel(0) s.login(login, password) s.sendmail(msg['From'], msg['To'], msg.as_string()) res = QMessageBox.about(self, "%s" % self.objectName(), "Bug Report Successful.") if res == QMessageBox.Ok: s.quit() return except Exception, e: res = QMessageBox.about( self, "%s" % self.objectName(), "Bug Report unuccessful.\nPlease check your internet connection. \n\n Error Details: %s" % e) if res == QMessageBox.Ok: s.quit() return finally:
class NepalSCGUI(QtGui.QMainWindow): def __init__(self,parent=None): QtGui.QWidget.__init__(self,parent) self.ui=Ui_Spellcheck() self.ui.setupUi(self) self.hidewidgets() self.checker=hunspell.HunSpell('hunspell/ne_NP.dic','hunspell/ne_NP.aff') self.highlighter = Highlighter(self.ui.textEdit.document()) self.highlighter.setDict(self.checker) self.ui.toolBar.setContextMenuPolicy(Qt.NoContextMenu) self.ui.formatBar.setContextMenuPolicy(Qt.NoContextMenu) self.ui.textEdit.setContextMenuPolicy(Qt.CustomContextMenu) self.ui.textEdit.customContextMenuRequested.connect(self.showContextMenu) self.ui.textEdit.mousePressedSignal.connect(self.OnMousePressed) self.ui.textEdit.setAttribute(QtCore.Qt.WA_InputMethodEnabled, True) for i in range(1,3): self.ui.textEdit.zoomIn() #Define actions for toolbar self.mppAction = QtGui.QAction(QtGui.QIcon('Resources/mpplogo.gif'), 'Madan Puraskar Pustakalaya', self) self.newAction = QtGui.QAction(QtGui.QIcon('Resources/New.png'), 'New', self) self.openAction = QtGui.QAction(QtGui.QIcon('Resources/Open.png'), 'Open', self) self.saveAction = QtGui.QAction(QtGui.QIcon('Resources/Save.png'), 'Save', self) self.saveAsAction = QtGui.QAction(QtGui.QIcon('Resources/SaveAs.png'), 'SaveAs', self) self.cutAction = QtGui.QAction(QtGui.QIcon('Resources/Cut.png'), 'Cut', self) self.copyAction = QtGui.QAction(QtGui.QIcon('Resources/Copy.png'), 'Copy', self) self.pasteAction = QtGui.QAction(QtGui.QIcon('Resources/Paste.png'), 'Paste', self) self.closeAction = QtGui.QAction(QtGui.QIcon('Resources/Close.png'), 'Close', self) #Define Buttons self.bold_button = QtGui.QToolButton(self) self.defineButton(self.bold_button,'Resources/format-text-bold.png',True,True,'Ctrl+B','Bold',self.set_bold) self.italic_button = QtGui.QToolButton(self) self.defineButton(self.italic_button,'Resources/format-text-italic.png',True,True,'Ctrl+I','Italic',self.set_italic) self.underline_button = QtGui.QToolButton(self) self.defineButton(self.underline_button,'Resources/format-text-underline.png',True,True,'Ctrl+U','Underline',self.set_underline) self.alignleft_button = QtGui.QToolButton(self) self.defineButton(self.alignleft_button,'Resources/format-justify-left.png',True,True,'Ctrl+L','Align Left',self.set_alignleft) self.aligncenter_button = QtGui.QToolButton(self) self.defineButton(self.aligncenter_button,'Resources/format-justify-center.png',True,True,'Ctrl+E','Align Center',self.set_aligncenter) self.alignright_button = QtGui.QToolButton(self) self.defineButton(self.alignright_button,'Resources/format-justify-right.png',True,True,'Ctrl+R','Align Right',self.set_alignright) self.zoomin_button = QtGui.QToolButton(self) self.defineButton(self.zoomin_button,'Resources/list-add.png',True,False,'Ctrl++','Zoom In',self.ui.textEdit.zoomIn) self.zoomout_button = QtGui.QToolButton(self) self.defineButton(self.zoomout_button,'Resources/list-remove.png',True,False,'Ctrl+-','Zoom Out',self.ui.textEdit.zoomOut) self.color_button = QtGui.QToolButton(self) self.defineButton(self.color_button,'Resources/color.png',True,False,None,'Color',self.set_color) #toolbar sequencing self.ui.menubar.setContextMenuPolicy(Qt.NoContextMenu) self.ui.toolBar.setContextMenuPolicy(Qt.NoContextMenu) self.ui.toolBar.setIconSize(QSize(22,22)) self.ui.toolBar.addSeparator() self.ui.toolBar.addAction(self.newAction) self.ui.toolBar.addAction(self.openAction) self.ui.toolBar.addAction(self.saveAction) self.ui.toolBar.addAction(self.saveAsAction) self.ui.toolBar.addSeparator() self.ui.toolBar.addAction(self.closeAction) #formatbar sequencing self.ui.formatBar.setIconSize(QSize(22,22)) self.ui.formatBar.addAction(self.mppAction) self.ui.formatBar.addSeparator() self.ui.formatBar.addAction(self.cutAction) self.ui.formatBar.addAction(self.copyAction) self.ui.formatBar.addAction(self.pasteAction) self.ui.formatBar.addSeparator() self.ui.formatBar.addWidget(self.bold_button) self.ui.formatBar.addWidget(self.italic_button) self.ui.formatBar.addWidget(self.underline_button) self.ui.formatBar.addSeparator() self.ui.formatBar.addWidget(self.alignleft_button) self.ui.formatBar.addWidget(self.aligncenter_button) self.ui.formatBar.addWidget(self.alignright_button) self.ui.formatBar.addSeparator() self.ui.formatBar.addWidget(self.color_button) self.ui.formatBar.addSeparator() self.ui.formatBar.addWidget(self.zoomin_button) self.ui.formatBar.addWidget(self.zoomout_button) #slots self.watcher=QtCore.QFileSystemWatcher(self) self.newAction.triggered.connect(self.file_new) self.openAction.triggered.connect(self.file_open) self.saveAction.triggered.connect(self.file_save) self.saveAsAction.triggered.connect(self.file_saveAs) self.cutAction.triggered.connect(self.ui.textEdit.cut) self.copyAction.triggered.connect(self.ui.textEdit.copy) self.pasteAction.triggered.connect(self.ui.textEdit.paste) self.closeAction.triggered.connect(self.close) self.ui.actionAbout.triggered.connect(self.about) self.ui.actionClose.triggered.connect(self.close) self.ui.actionOpen.triggered.connect(self.file_open) self.ui.actionNew.triggered.connect(self.file_new) self.ui.actionSave.triggered.connect(self.file_save) self.ui.actionSaveAs.triggered.connect(self.file_saveAs) self.ui.textEdit.textChanged.connect(self.save_enable) self.ui.actionCut.triggered.connect(self.ui.textEdit.cut) self.ui.actionCopy.triggered.connect(self.ui.textEdit.copy) self.ui.actionPaste.triggered.connect(self.ui.textEdit.paste) self.ui.actionUndo.triggered.connect(self.ui.textEdit.undo) self.ui.actionRedo.triggered.connect(self.ui.textEdit.redo) self.ui.actionGoto.triggered.connect(self.gotoline) self.ui.actionSearch.triggered.connect(self.find) self.ui.actionReplace.triggered.connect(self.replace) self.ui.actionBug.triggered.connect(self.BugReport) self.watcher.fileChanged.connect(self.file_changed) self.mppAction.triggered.connect(self.open_mpp) self.EscAction = QtGui.QShortcut(QtGui.QKeySequence(self.tr("Esc")), self); self.EscAction.activated.connect(self.hidewidgets) self.ui.actionSave.setEnabled(False) self.saveAction.setEnabled(False) self.filename="" #self.ui.textEdit.setStyleSheet("QTextEdit {color:white}") self.update_text() #Imports CSS stylesheet to the QMainWindow def importCSS(self, path): sshFile="stylesheets/"+path with open(sshFile,"r") as fh: self.setStyleSheet(fh.read()) #Links to MPP website def open_mpp(self): webbrowser.open('http://madanpuraskar.org/') #Hides extra widgets def hidewidgets(self): self.ui.Gotowidget.hide() self.ui.Findwidget.hide() self.ui.Replacewidget.hide() self.ui.Bugwidget.hide() self.ui.textEdit.setFocus() #Defines Button Actions def defineButton(self,button, Icon, Raise, Check, Shortcut, Tooltip, Action): button.setIcon(QtGui.QIcon(Icon)) button.setAutoRaise(Raise) button.setCheckable(Check) button.setShortcut(QtGui.QKeySequence(Shortcut)) button.setToolTip(Tooltip) button.clicked.connect(Action) return button #Enables Save feature def save_enable(self): self.ui.actionSave.setEnabled(True) self.saveAction.setEnabled(True) if self.filename: self.setWindowTitle(unicode(self.objectName()+" - " + self.filename + "[*]") ) #Creates new file def file_new(self): if self.savecheck_dialog(): return self.ui.textEdit.setText('') self.ui.actionSave.setEnabled(False) self.saveAction.setEnabled(False) #Opens existing File def file_open(self): if self.savecheck_dialog(): return self.filename=QtGui.QFileDialog.getOpenFileName(self, "Open file", ".") from os.path import isfile if isfile(self.filename): if self.filename: self.watcher.removePath(self.filename) import codecs text=codecs.open(self.filename,'r','utf-8').read() self.ui.textEdit.setPlainText(text) self.ui.actionSave.setEnabled(False) self.saveAction.setEnabled(False) self.watcher.addPath(self.filename) self.setWindowTitle(unicode(self.objectName()+" - " + self.filename) ) #Checks if file has been changed def file_changed(self,path): res=QMessageBox.question(self, "%s - File has been changed" %self.objectName(),"The opened document has been modified by another program.\n"+"Do you want to reload the file?",QMessageBox.Yes|QMessageBox.No|(QMessageBox.Save if self.button.actionSave.isEnabled() else 0),QMessageBox.Yes) if res == QMessageBox.Yes: self.file_open(self.filename) elif res == QMessageBox.Save: self.file_save() #AboutBox def about(self): res=QMessageBox.about(self, "%s - About" %self.objectName(),"Nepali Spellchecker v2 is a small software created by Language and Technology Kendra (LTK) a division of Madan Puraskar Pustakalaya.\n"+"All rights reserved.") if res == QMessageBox.Ok: return #Saves file def file_save(self): from os.path import isfile self.watcher.removePath(self.filename) if not isfile(self.filename): self.filename = QtGui.QFileDialog.getSaveFileName(self, 'Save File', '.txt') import codecs savetext=codecs.open(self.filename,'w','utf-8') savetext.write(unicode(self.ui.textEdit.toPlainText())) savetext.close() self.ui.actionSave.setEnabled(False) self.saveAction.setEnabled(False) self.watcher.addPath(self.filename) #SaveAs feature def file_saveAs(self): from os.path import isfile self.watcher.removePath(self.filename) self.filename = QtGui.QFileDialog.getSaveFileName(self, 'Save File', '.txt') import codecs savetext=codecs.open(self.filename,'w','utf-8') savetext.write(unicode(self.ui.textEdit.toPlainText())) savetext.close() self.ui.actionSave.setEnabled(False) self.saveAction.setEnabled(False) self.watcher.addPath(self.filename) #Dialog Box before closing def savecheck_dialog(self): if not self.ui.actionSave.isEnabled(): return res=QMessageBox.question(self, "%s - Unsaved Changes"% self.objectName(),"The document has been modified\n"+"Do you want to save your changes?", QMessageBox.Save | QMessageBox.Discard | QMessageBox.Cancel, QMessageBox.Save) print(res) if res==QMessageBox.Save: self.file_save() return res==QMessageBox.Cancel def closeEvent(self,event): if self.savecheck_dialog(): event.ignore() else: event.accept() def set_bold(self): if self.bold_button.isChecked(): self.ui.textEdit.setFocus(Qt.OtherFocusReason) self.ui.textEdit.setFontWeight(QtGui.QFont.Bold) else: self.ui.textEdit.setFocus(Qt.OtherFocusReason) self.ui.textEdit.setFontWeight(QtGui.QFont.Normal) def set_italic(self, bool): if bool: self.ui.textEdit.setFocus(Qt.OtherFocusReason) self.ui.textEdit.setFontItalic(True) else: self.ui.textEdit.setFocus(Qt.OtherFocusReason) self.ui.textEdit.setFontItalic(False) def set_underline(self, bool): if bool: self.ui.textEdit.setFocus(Qt.OtherFocusReason) self.ui.textEdit.setFontUnderline(True) else: self.ui.textEdit.setFocus(Qt.OtherFocusReason) self.ui.textEdit.setFontUnderline(False) def set_alignleft(self, bool): if bool: self.ui.textEdit.setFocus(Qt.OtherFocusReason) self.ui.textEdit.setAlignment(Qt.AlignLeft) self.update_alignment(Qt.AlignLeft) def set_aligncenter(self, bool): if bool: self.ui.textEdit.setFocus(Qt.OtherFocusReason) self.ui.textEdit.setAlignment(Qt.AlignCenter) self.update_alignment(Qt.AlignCenter) def set_alignright(self, bool): if bool: self.ui.textEdit.setFocus(Qt.OtherFocusReason) self.ui.textEdit.setAlignment(Qt.AlignRight) self.update_alignment(Qt.AlignRight) def update_alignment(self, al=None): if al is None: al = self.ui.textEdit.alignment() if al == Qt.AlignLeft: self.alignleft_button.setChecked(True) self.aligncenter_button.setChecked(False) self.alignright_button.setChecked(False) elif al == Qt.AlignCenter: self.aligncenter_button.setChecked(True) self.alignleft_button.setChecked(False) self.alignright_button.setChecked(False) elif al == Qt.AlignRight: self.alignright_button.setChecked(True) self.alignleft_button.setChecked(False) self.aligncenter_button.setChecked(False) def set_color(self): color = QtGui.QColorDialog.getColor(self.ui.textEdit.textColor()) if color.isValid(): self.ui.textEdit.setFocus(Qt.OtherFocusReason) self.ui.textEdit.setTextColor(color) pixmap = QtGui.QPixmap(16, 16) pixmap.fill(color) self.color_button.setIcon(QtGui.QIcon(pixmap)) def update_color(self): color = self.ui.textEdit.textColor() pixmap = QtGui.QPixmap(16, 16) pixmap.fill(color) self.color_button.setIcon(QtGui.QIcon(pixmap)) def update_format(self, format): font = format.font() self.bold_button.setChecked(font.bold()) self.italic_button.setChecked(font.italic()) self.underline_button.setChecked(font.underline()) self.update_alignment(self.ui.textEdit.alignment()) def update_text(self): self.update_alignment() self.update_color() #Function for Goto widget def gotoline(self): if self.ui.Replacewidget.isVisible() or self.ui.Bugwidget.isVisible() or self.ui.Findwidget.isVisible(): self.hidewidgets() self.ui.Gotowidget.show() self.ui.lineNo.setFocus() self.ui.lineNo.returnPressed.connect(self.gotoaction) self.ui.GoButton.clicked.connect(self.gotoaction) def gotoaction(self): ln=int(self.ui.lineNo.text()) self.ui.Gotowidget.hide() if (ln==None): return cursor=self.ui.textEdit.textCursor() block=self.ui.textEdit.document().findBlockByLineNumber(ln) pos=block.position() cursor.setPosition(pos) self.ui.textEdit.setTextCursor(cursor) self.ui.textEdit.setFocus() #Function for Find Widget def find(self): if self.ui.Replacewidget.isVisible() or self.ui.Bugwidget.isVisible() or self.ui.Gotowidget.isVisible(): self.hidewidgets() self.ui.Findwidget.show() self.ui.SearchKey.setFocus() self.ui.SearchKey.returnPressed.connect(self.doFind) self.ui.next.clicked.connect(self.doFind) self.ui.previous.clicked.connect(self.doFindBackwards) def doFindBackwards (self): return self.doFind(backwards=True) def doFind(self, backwards=False): rotationIncomplete=True flags=QtGui.QTextDocument.FindFlags() if backwards: flags=QtGui.QTextDocument.FindBackward if self.ui.MatchCase.isChecked(): flags=flags|QtGui.QTextDocument.FindCaseSensitively if self.ui.Findwidget.isVisible(): text=unicode(self.ui.SearchKey.text()) elif self.ui.Replacewidget.isVisible(): text=unicode(self.ui.OldText.text()) r=self.ui.textEdit.find(text,flags) if r==False: if rotationIncomplete: self.ui.textEdit.moveCursor(QtGui.QTextCursor.Start) rotationIncomplete=False else: QMessageBox.information(self, "End of Search", "No more occurences of the word can be found.") #Funtion for Replace widget def replace(self): if self.ui.Findwidget.isVisible() or self.ui.Bugwidget.isVisible() or self.ui.Gotowidget.isVisible(): self.hidewidgets() self.ui.Replacewidget.show() self.ui.OldText.setFocus() self.ui.OldText.returnPressed.connect(self.doFind) self.ui.next_2.clicked.connect(self.doFind) self.ui.previous_2.clicked.connect(self.doFindBackwards) self.ui.replace.clicked.connect(self.doReplace) self.ui.r_all.clicked.connect(self.doReplaceAll) def doReplace(self, backwards=False): cursor=self.ui.textEdit.textCursor() if cursor.hasSelection(): cursor.insertText(self.ui.NewText.text()) else: flags=QtGui.QTextDocument.FindFlags() if backwards: flags=QtGui.QTextDocument.FindBackward if self.ui.MatchCase_2.isChecked(): flags=flags|QtGui.QTextDocument.FindCaseSensitively text=unicode(self.ui.OldText.text()) r=self.ui.textEdit.find(text,flags) if cursor.hasSelection(): cursor.insertText(self.ui.NewText.text()) if r==False: QMessageBox.information(self, "End of Search", "No more occurences of the word can be found.") def doReplaceAll(self): cursor=self.ui.textEdit.textCursor() cursor.beginEditBlock() flags=QtGui.QTextDocument.FindFlags() if self.ui.MatchCase_2.isChecked(): flags=flags|QtGui.QTextDocument.FindCaseSensitively text=unicode(self.ui.OldText.text()) self.ui.textEdit.moveCursor(QtGui.QTextCursor.Start) while True: r=self.ui.textEdit.find(text,flags) if r: qc=self.ui.textEdit.textCursor() if qc.hasSelection(): qc.insertText(self.ui.NewText.text()) else: QMessageBox.information(self, "End of Search", "All occurences replaced.") break cursor.endEditBlock() #Function to enable Bugwidget def BugReport(self): if self.ui.Replacewidget.isVisible() or self.ui.Findwidget.isVisible() or self.ui.Gotowidget.isVisible(): self.hidewidgets() self.ui.Bugwidget.show() self.ui.BugType.setFocus() self.ui.ReportButton.clicked.connect(self.bugsend) #Function to email Bug Report def bugsend(self): login, password = '******', 'silverlines' subject = 'Bug Report - ' + unicode(self.ui.BugType.text()) text = unicode(self.ui.BugDetail.toPlainText()) msg=MIMEText(text, _charset='utf-8') msg['Subject'] = Header(subject, 'utf-8') msg['From'] = login msg['To'] = login try: s=SMTP_SSL('smtp.gmail.com', 465, timeout=10) s.set_debuglevel(0) s.login(login, password) s.sendmail(msg['From'], msg['To'], msg.as_string()) res=QMessageBox.about(self, "%s" %self.objectName(),"Bug Report Successful.") if res == QMessageBox.Ok: s.quit() return except Exception, e: res=QMessageBox.about(self, "%s" %self.objectName(),"Bug Report unuccessful.\nPlease check your internet connection. \n\n Error Details: %s" % e) if res == QMessageBox.Ok: s.quit() return finally: