def CropRegion(self): self.CropRegionX = 0 self.CropRegionY = 0 self.CropRegionW = 0 self.CropRegionH = 0 if self.plugin.undockWindowOpened is True: self.message = QMessageBox.critical(self, 'Error', "Please close the Al\'exa - tools menu!", QMessageBox.Ok) return if self.checkBoxRegionOrigin.isChecked() is True: regex = self.lineEditWindowRegEx.text() if self.lineEditWindowRegEx.text() == "": self.message = QMessageBox.critical(self, 'Error', "You have to insert the Window Reg Ex value!", QMessageBox.Ok) return Window.Bind(regex, timeout=0) if Window.x is None or Window.y is None: self.message = QMessageBox.critical(self, 'Error', "The Window was not found.\nTry to adjust the Window Reg Ex value!", QMessageBox.Ok) return self.windowX = Window.x self.windowY = Window.y Window.Unbind() self.setVisible(False) ''' if sys.platform == 'win32': hwnd = win32gui.GetForegroundWindow() win32gui.ShowWindow(hwnd, 0) toplist = [] winlist = [] def enum_callback(hwnd, results): winlist.append((hwnd, win32gui.GetWindowText(hwnd))) win32gui.EnumWindows(enum_callback, toplist) #if self.undocked is False: firefox = [(hwnd, title) for hwnd, title in winlist if 'exa-ide' in title.lower() or 'exa tool' in title.lower() and 'about' not in title.lower() and 'command prompt' not in title.lower()] print firefox # just grab the first window that matches #firefox = firefox[0] for ninja in firefox: #print str(ninja[0]) + " " + ninja[1] win32gui.ShowWindow(ninja[0], 0) #else: #self.undockWindow.hide() ''' time.sleep(1) app = wx.App(False) screen = wx.ScreenDC() size = screen.GetSize() bmp = wx.EmptyBitmap(size[0], size[1]) mem = wx.MemoryDC(bmp) mem.Blit(0, 0, size[0], size[1], screen, 0, 0) del mem # Release bitmap bmp.SaveFile(self.plug_path + os.sep +'alexatools' + os.sep + 'tmp' + os.sep + 'screenshot.png', wx.BITMAP_TYPE_PNG) self.cropWindow = CropRegionClass(self) self.cropWindow.setWindowTitle("alexa screen") self.cropWindow.showFullScreen() self.cropWindow.setMouseTracking(True)
def CropRegion(self): self.CropRegionX = 0 self.CropRegionY = 0 self.CropRegionW = 0 self.CropRegionH = 0 if self.plugin.undockWindowOpened is True: self.message = QMessageBox.critical( self, 'Error', "Please close the Al\'exa - tools menu!", QMessageBox.Ok) return if self.checkBoxRegionOrigin.isChecked() is True: regex = self.lineEditWindowRegEx.text() if self.lineEditWindowRegEx.text() == "": self.message = QMessageBox.critical( self, 'Error', "You have to insert the Window Reg Ex value!", QMessageBox.Ok) return Window.Bind(regex, timeout=0) if Window.x is None or Window.y is None: self.message = QMessageBox.critical( self, 'Error', "The Window was not found.\nTry to adjust the Window Reg Ex value!", QMessageBox.Ok) return self.windowX = Window.x self.windowY = Window.y Window.Unbind() self.setVisible(False) ''' if sys.platform == 'win32': hwnd = win32gui.GetForegroundWindow() win32gui.ShowWindow(hwnd, 0) toplist = [] winlist = [] def enum_callback(hwnd, results): winlist.append((hwnd, win32gui.GetWindowText(hwnd))) win32gui.EnumWindows(enum_callback, toplist) #if self.undocked is False: firefox = [(hwnd, title) for hwnd, title in winlist if 'exa-ide' in title.lower() or 'exa tool' in title.lower() and 'about' not in title.lower() and 'command prompt' not in title.lower()] print firefox # just grab the first window that matches #firefox = firefox[0] for ninja in firefox: #print str(ninja[0]) + " " + ninja[1] win32gui.ShowWindow(ninja[0], 0) #else: #self.undockWindow.hide() ''' time.sleep(1) app = wx.App(False) screen = wx.ScreenDC() size = screen.GetSize() bmp = wx.EmptyBitmap(size[0], size[1]) mem = wx.MemoryDC(bmp) mem.Blit(0, 0, size[0], size[1], screen, 0, 0) del mem # Release bitmap bmp.SaveFile( self.plug_path + os.sep + 'alexatools' + os.sep + 'tmp' + os.sep + 'screenshot.png', wx.BITMAP_TYPE_PNG) self.cropWindow = CropRegionClass(self) self.cropWindow.setWindowTitle("alexa screen") self.cropWindow.showFullScreen() self.cropWindow.setMouseTracking(True)
class WindowRegion(QWidget): def __init__(self, plugin): super(WindowRegion, self).__init__() self.plugin = plugin self.plug_path = plugin.plug_path self.FirstTimeCheckBox = True self.hwndInComboBox = [] self.CropRegionX = 0 self.CropRegionY = 0 self.CropRegionW = 0 self.CropRegionH = 0 self.windowX = 0 self.windowY = 0 self.initUI() def initUI(self): icon = QIcon() icon.addPixmap(QPixmap(self.plug_path + "/alexatools/images/preferences-desktop-theme.png"), QIcon.Normal, QIcon.Off) self.setWindowIcon(icon) self.setWindowTitle("Al\'exa - Windows and Region") self.setObjectName("self") self.resize(639, 412) self.tabWidget = QTabWidget(self) self.tabWidget.setGeometry(QRect(10, 10, 621, 361)) self.tabWidget.setObjectName("tabWidget") self.tab = QWidget() self.tab.setObjectName("tab") self.pushButton = QPushButton(self.tab) self.pushButton.setGeometry(QRect(568, 10, 24, 20)) self.pushButton.setText("") icon = QIcon() icon.addPixmap(QPixmap(self.plug_path + "/alexatools/images/arrow-down-4.png"), QIcon.Normal, QIcon.Off) self.pushButton.setIcon(icon) self.pushButton.setObjectName("pushButton") self.formLayoutWidget_2 = QWidget(self.tab) self.formLayoutWidget_2.setGeometry(QRect(10, 40, 521, 22)) self.formLayoutWidget_2.setObjectName("formLayoutWidget_2") self.formLayout_2 = QFormLayout(self.formLayoutWidget_2) self.formLayout_2.setMargin(0) self.formLayout_2.setObjectName("formLayout_2") self.lineEditWindowRegEx = QLineEdit(self.formLayoutWidget_2) self.lineEditWindowRegEx.setObjectName("lineEditWindowRegEx") self.formLayout_2.setWidget(0, QFormLayout.FieldRole, self.lineEditWindowRegEx) self.label_2 = QLabel(self.formLayoutWidget_2) self.label_2.setObjectName("label_2") self.formLayout_2.setWidget(0, QFormLayout.LabelRole, self.label_2) self.gridLayoutWidget = QWidget(self.tab) self.gridLayoutWidget.setGeometry(QRect(10, 200, 351, 81)) self.gridLayoutWidget.setObjectName("gridLayoutWidget") self.gridLayout = QGridLayout(self.gridLayoutWidget) self.gridLayout.setMargin(0) self.gridLayout.setObjectName("gridLayout") self.spinBoxWindowMoveHeight = QSpinBox(self.gridLayoutWidget) self.spinBoxWindowMoveHeight.setMinimum(-9999) self.spinBoxWindowMoveHeight.setMaximum(9999) self.spinBoxWindowMoveHeight.setObjectName("spinBoxWindowMoveHeight") self.gridLayout.addWidget(self.spinBoxWindowMoveHeight, 2, 1, 1, 1) self.label_4 = QLabel(self.gridLayoutWidget) self.label_4.setObjectName("label_4") self.gridLayout.addWidget(self.label_4, 1, 2, 1, 1) self.label_6 = QLabel(self.gridLayoutWidget) self.label_6.setObjectName("label_6") self.gridLayout.addWidget(self.label_6, 2, 2, 1, 1) self.spinBoxWindowMoveX = QSpinBox(self.gridLayoutWidget) self.spinBoxWindowMoveX.setMinimum(-999999) self.spinBoxWindowMoveX.setMaximum(9999) self.spinBoxWindowMoveX.setObjectName("spinBoxWindowMoveX") self.gridLayout.addWidget(self.spinBoxWindowMoveX, 1, 1, 1, 1) self.label_3 = QLabel(self.gridLayoutWidget) self.label_3.setObjectName("label_3") self.gridLayout.addWidget(self.label_3, 1, 0, 1, 1) self.spinBoxWindowMoveWidth = QSpinBox(self.gridLayoutWidget) self.spinBoxWindowMoveWidth.setMinimum(-9999) self.spinBoxWindowMoveWidth.setMaximum(9999) self.spinBoxWindowMoveWidth.setObjectName("spinBoxWindowMoveWidth") self.gridLayout.addWidget(self.spinBoxWindowMoveWidth, 2, 3, 1, 1) self.label_5 = QLabel(self.gridLayoutWidget) self.label_5.setObjectName("label_5") self.gridLayout.addWidget(self.label_5, 2, 0, 1, 1) self.spinBoxWindowMoveY = QSpinBox(self.gridLayoutWidget) self.spinBoxWindowMoveY.setMinimum(-999999) self.spinBoxWindowMoveY.setMaximum(9999) self.spinBoxWindowMoveY.setObjectName("spinBoxWindowMoveY") self.gridLayout.addWidget(self.spinBoxWindowMoveY, 1, 3, 1, 1) self.radioButtonWindowResize = QRadioButton(self.gridLayoutWidget) self.radioButtonWindowResize.setChecked(True) self.radioButtonWindowResize.setObjectName("radioButtonWindowResize") self.gridLayout.addWidget(self.radioButtonWindowResize, 0, 0, 1, 1) self.radioButtonWindowMove = QRadioButton(self.gridLayoutWidget) self.radioButtonWindowMove.setObjectName("radioButtonWindowMove") self.gridLayout.addWidget(self.radioButtonWindowMove, 0, 1, 1, 1) self.horizontalLayoutWidget = QWidget(self.tab) self.horizontalLayoutWidget.setGeometry(QRect(10, 290, 111, 31)) self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget") self.horizontalLayout_2 = QHBoxLayout(self.horizontalLayoutWidget) self.horizontalLayout_2.setMargin(0) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.pushButtonMoveResize = QPushButton(self.horizontalLayoutWidget) self.pushButtonMoveResize.setObjectName("pushButtonMoveResize") self.horizontalLayout_2.addWidget(self.pushButtonMoveResize) self.horizontalLayoutWidget_2 = QWidget(self.tab) self.horizontalLayoutWidget_2.setGeometry(QRect(10, 90, 411, 31)) self.horizontalLayoutWidget_2.setObjectName("horizontalLayoutWidget_2") self.horizontalLayout = QHBoxLayout(self.horizontalLayoutWidget_2) self.horizontalLayout.setMargin(0) self.horizontalLayout.setObjectName("horizontalLayout") self.pushButtonWindowBind = QPushButton(self.horizontalLayoutWidget_2) self.pushButtonWindowBind.setObjectName("pushButtonWindowBind") self.horizontalLayout.addWidget(self.pushButtonWindowBind) self.pushButtonWindowUnbind = QPushButton(self.horizontalLayoutWidget_2) self.pushButtonWindowUnbind.setObjectName("pushButtonWindowUnbind") self.horizontalLayout.addWidget(self.pushButtonWindowUnbind) self.pushButtonWindowWaitForExit = QPushButton(self.horizontalLayoutWidget_2) self.pushButtonWindowWaitForExit.setObjectName("pushButtonWindowWaitForExit") self.horizontalLayout.addWidget(self.pushButtonWindowWaitForExit) self.pushButtonWindowClose = QPushButton(self.horizontalLayoutWidget_2) self.pushButtonWindowClose.setObjectName("pushButtonWindowClose") self.horizontalLayout.addWidget(self.pushButtonWindowClose) self.label = QLabel(self.tab) self.label.setGeometry(QRect(10, 10, 77, 20)) self.label.setObjectName("label") self.verticalLayoutWidget = QWidget(self.tab) self.verticalLayoutWidget.setGeometry(QRect(90, 10, 441, 22)) self.verticalLayoutWidget.setObjectName("verticalLayoutWidget") self.verticalLayout = QVBoxLayout(self.verticalLayoutWidget) self.verticalLayout.setMargin(0) self.verticalLayout.setObjectName("verticalLayout") self.comboBoxVisibleWindows = QComboBox(self.verticalLayoutWidget) self.comboBoxVisibleWindows.setObjectName("comboBoxVisibleWindows") self.verticalLayout.addWidget(self.comboBoxVisibleWindows) self.pushButton_2 = QPushButton(self.tab) self.pushButton_2.setGeometry(QRect(538, 10, 24, 20)) self.pushButton_2.setText("") icon1 = QIcon() icon1.addPixmap(QPixmap(self.plug_path + "/alexatools/images/view-refresh-3.png"), QIcon.Normal, QIcon.Off) self.pushButton_2.setIcon(icon1) self.pushButton_2.setObjectName("pushButton_2") self.pushButtonTestBind = QPushButton(self.tab) self.pushButtonTestBind.setGeometry(QRect(539, 40, 53, 23)) self.pushButtonTestBind.setObjectName("pushButtonTestBind") self.checkBoxMaximizeWindow = QCheckBox(self.tab) self.checkBoxMaximizeWindow.setGeometry(QRect(11, 65, 91, 17)) self.checkBoxMaximizeWindow.setObjectName("checkBoxMaximizeWindow") self.pushButtonAddSize = QPushButton(self.tab) self.pushButtonAddSize.setGeometry(QRect(387, 227, 24, 22)) self.pushButtonAddSize.setText("") icon2 = QIcon() icon2.addPixmap(QPixmap(self.plug_path + "/alexatools/images/view-restore.png"), QIcon.Normal, QIcon.Off) self.pushButtonAddSize.setIcon(icon2) self.pushButtonAddSize.setObjectName("pushButtonAddSize") self.gridLayoutWidget_3 = QWidget(self.tab) self.gridLayoutWidget_3.setGeometry(QRect(10, 130, 481, 61)) self.gridLayoutWidget_3.setObjectName("gridLayoutWidget_3") self.gridLayout_3 = QGridLayout(self.gridLayoutWidget_3) self.gridLayout_3.setMargin(0) self.gridLayout_3.setObjectName("gridLayout_3") self.label_11 = QLabel(self.gridLayoutWidget_3) self.label_11.setObjectName("label_11") self.gridLayout_3.addWidget(self.label_11, 1, 2, 1, 1) self.spinBoxPerfWarning = QSpinBox(self.gridLayoutWidget_3) self.spinBoxPerfWarning.setMaximum(9999) self.spinBoxPerfWarning.setObjectName("spinBoxPerfWarning") self.gridLayout_3.addWidget(self.spinBoxPerfWarning, 1, 3, 1, 1) self.label_12 = QLabel(self.gridLayoutWidget_3) self.label_12.setObjectName("label_12") self.gridLayout_3.addWidget(self.label_12, 1, 4, 1, 1) self.spinBoxPerfCritical = QSpinBox(self.gridLayoutWidget_3) self.spinBoxPerfCritical.setMaximum(9999) self.spinBoxPerfCritical.setObjectName("spinBoxPerfCritical") self.gridLayout_3.addWidget(self.spinBoxPerfCritical, 1, 5, 1, 1) self.label_13 = QLabel(self.gridLayoutWidget_3) self.label_13.setObjectName("label_13") self.gridLayout_3.addWidget(self.label_13, 1, 0, 1, 1) self.lineEdit = QLineEdit(self.gridLayoutWidget_3) self.lineEdit.setObjectName("lineEdit") self.gridLayout_3.addWidget(self.lineEdit, 1, 1, 1, 1) self.checkBoxEnablePerfData = QCheckBox(self.gridLayoutWidget_3) self.checkBoxEnablePerfData.setObjectName("checkBoxEnablePerfData") self.gridLayout_3.addWidget(self.checkBoxEnablePerfData, 0, 0, 1, 2) self.tabWidget.addTab(self.tab, "") self.tab_2 = QWidget() self.tab_2.setObjectName("tab_2") self.gridLayoutWidget_2 = QWidget(self.tab_2) self.gridLayoutWidget_2.setGeometry(QRect(10, 50, 351, 61)) self.gridLayoutWidget_2.setObjectName("gridLayoutWidget_2") self.gridLayout_2 = QGridLayout(self.gridLayoutWidget_2) self.gridLayout_2.setMargin(0) self.gridLayout_2.setObjectName("gridLayout_2") self.label_7 = QLabel(self.gridLayoutWidget_2) self.label_7.setObjectName("label_7") self.gridLayout_2.addWidget(self.label_7, 0, 0, 1, 1) self.label_10 = QLabel(self.gridLayoutWidget_2) self.label_10.setObjectName("label_10") self.gridLayout_2.addWidget(self.label_10, 1, 2, 1, 1) self.spinBoxRegionHeight = QSpinBox(self.gridLayoutWidget_2) self.spinBoxRegionHeight.setMaximum(9999) self.spinBoxRegionHeight.setObjectName("spinBoxRegionHeight") self.gridLayout_2.addWidget(self.spinBoxRegionHeight, 1, 1, 1, 1) self.spinBoxRegionX_2 = QSpinBox(self.gridLayoutWidget_2) self.spinBoxRegionX_2.setMinimum(-999999) self.spinBoxRegionX_2.setMaximum(9999) self.spinBoxRegionX_2.setObjectName("spinBoxRegionX_2") self.gridLayout_2.addWidget(self.spinBoxRegionX_2, 0, 3, 1, 1) self.label_9 = QLabel(self.gridLayoutWidget_2) self.label_9.setObjectName("label_9") self.gridLayout_2.addWidget(self.label_9, 1, 0, 1, 1) self.label_8 = QLabel(self.gridLayoutWidget_2) self.label_8.setObjectName("label_8") self.gridLayout_2.addWidget(self.label_8, 0, 2, 1, 1) self.spinBoxRegionX = QSpinBox(self.gridLayoutWidget_2) self.spinBoxRegionX.setMinimum(-999999) self.spinBoxRegionX.setMaximum(9999) self.spinBoxRegionX.setObjectName("spinBoxRegionX") self.gridLayout_2.addWidget(self.spinBoxRegionX, 0, 1, 1, 1) self.spinBoxRegionWidth = QSpinBox(self.gridLayoutWidget_2) self.spinBoxRegionWidth.setMaximum(9999) self.spinBoxRegionWidth.setObjectName("spinBoxRegionWidth") self.gridLayout_2.addWidget(self.spinBoxRegionWidth, 1, 3, 1, 1) self.horizontalLayoutWidget_3 = QWidget(self.tab_2) self.horizontalLayoutWidget_3.setGeometry(QRect(10, 130, 291, 41)) self.horizontalLayoutWidget_3.setObjectName("horizontalLayoutWidget_3") self.horizontalLayout_3 = QHBoxLayout(self.horizontalLayoutWidget_3) self.horizontalLayout_3.setMargin(0) self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.pushButtonCropRegion = QPushButton(self.horizontalLayoutWidget_3) self.pushButtonCropRegion.setObjectName("pushButtonCropRegion") self.horizontalLayout_3.addWidget(self.pushButtonCropRegion) self.pushButtonBindRegion = QPushButton(self.horizontalLayoutWidget_3) self.pushButtonBindRegion.setObjectName("pushButtonBindRegion") self.horizontalLayout_3.addWidget(self.pushButtonBindRegion) self.pushButtonUnbindRegion = QPushButton(self.horizontalLayoutWidget_3) self.pushButtonUnbindRegion.setObjectName("pushButtonUnbindRegion") self.horizontalLayout_3.addWidget(self.pushButtonUnbindRegion) self.checkBoxRegionOrigin = QCheckBox(self.tab_2) self.checkBoxRegionOrigin.setGeometry(QRect(10, 20, 161, 17)) self.checkBoxRegionOrigin.setChecked(True) self.checkBoxRegionOrigin.setObjectName("checkBoxRegionOrigin") self.tabWidget.addTab(self.tab_2, "") self.pushButtonCancel = QPushButton(self) self.pushButtonCancel.setGeometry(QRect(20, 380, 75, 23)) self.pushButtonCancel.setObjectName("pushButtonCancel") #self.retranslateUi(self) self.tabWidget.setCurrentIndex(0) #QMetaObject.connectSlotsByName(self) self.label_2.setText("Window Reg Ex") self.label_4.setText("y") self.label_6.setText("Width") self.label_3.setText("x") self.label_5.setText("Height") self.radioButtonWindowResize.setText("Resize") self.radioButtonWindowMove.setText("Move") self.pushButtonMoveResize.setText("Move or Resize") self.pushButtonWindowBind.setText("Bind") self.pushButtonWindowUnbind.setText("Unbind") self.pushButtonWindowWaitForExit.setText("Wait For Exit") self.pushButtonWindowClose.setText("Close") self.label.setText("Visible Windows") self.pushButtonTestBind.setText("Test") self.checkBoxMaximizeWindow.setText("Maximize") self.label_11.setText("Warning") self.label_12.setText("Critical") self.label_13.setText("Name") self.checkBoxEnablePerfData.setText("Enable Performance Data") self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), "Windows") self.label_7.setText("Offset x") self.label_10.setText("Width") self.label_9.setText("Height") self.label_8.setText("Offset y") self.pushButtonCropRegion.setText("Crop") self.pushButtonBindRegion.setText("Bind") self.pushButtonUnbindRegion.setText("Unbind") self.checkBoxRegionOrigin.setText("Origin point is the window...") self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), "Region") self.pushButtonCancel.setText("Cancel") self.setWindowFlags(Qt.WindowMinimizeButtonHint | Qt.WindowCloseButtonHint | Qt.WindowStaysOnTopHint) self.setFixedSize(self.size()) self.connect(self.pushButtonCancel, SIGNAL("clicked()"), self.CancelEvent) self.connect(self.pushButton_2, SIGNAL("clicked()"), self.UpdateWinComboBox) self.connect(self.pushButton, SIGNAL("clicked()"), self.UpdateWinLineEdit) #self.connect(self.comboBoxVisibleWindows, SIGNAL("activated(int)"), self.WindowTitleSelectEvent) self.connect(self.pushButtonTestBind, SIGNAL("clicked()"), self.TestEvent) self.connect(self.pushButtonWindowBind, SIGNAL("clicked()"), self.BindWindow) self.connect(self.pushButtonWindowClose, SIGNAL("clicked()"), self.CloseWindow) self.connect(self.pushButtonWindowWaitForExit, SIGNAL("clicked()"), self.WaitForExit) self.connect(self.pushButtonWindowUnbind, SIGNAL("clicked()"), self.UnbindWindow) self.connect(self.checkBoxEnablePerfData, SIGNAL("clicked()"), self.UpdateNagiosSpinBoxes) self.connect(self.pushButtonAddSize, SIGNAL("clicked()"), self.ImportSizeEvent) self.connect(self.radioButtonWindowMove, SIGNAL("clicked()"), self.EnableMoveSpinBox) self.connect(self.radioButtonWindowResize, SIGNAL("clicked()"), self.EnableMoveSpinBox) self.connect(self.pushButtonMoveResize, SIGNAL("clicked()"), self.MoveOrResize) self.connect(self.pushButtonCropRegion, SIGNAL("clicked()"), self.CropRegion) self.connect(self.pushButtonBindRegion, SIGNAL("clicked()"), self.AddBindRegion) self.connect(self.pushButtonUnbindRegion, SIGNAL("clicked()"), self.AddUnbindRegion) self.UpdateWinComboBox() self.UpdateCropSpinBoxes() self.UpdateNagiosSpinBoxes() def UpdateNagiosSpinBoxes(self): if self.checkBoxEnablePerfData.isChecked() is False: self.label_13.setEnabled(False) self.label_11.setEnabled(False) self.label_12.setEnabled(False) self.lineEdit.setEnabled(False) self.spinBoxPerfCritical.setEnabled(False) self.spinBoxPerfWarning.setEnabled(False) else: self.label_13.setEnabled(True) self.label_11.setEnabled(True) self.label_12.setEnabled(True) self.lineEdit.setEnabled(True) self.spinBoxPerfCritical.setEnabled(True) self.spinBoxPerfWarning.setEnabled(True) def UpdateCropSpinBoxes(self): self.spinBoxRegionX.setValue(self.CropRegionX) self.spinBoxRegionX_2.setValue(self.CropRegionY) self.spinBoxRegionHeight.setValue(self.CropRegionH) self.spinBoxRegionWidth.setValue(self.CropRegionW) ''' if self.checkBoxRegionOrigin.isChecked() is True: self.spinBoxRegionX.setValue(self.CropRegionX - self.windowX) self.spinBoxRegionX_2.setValue(self.CropRegionY - self.windowY) self.spinBoxRegionHeight.setValue(self.CropRegionH) self.spinBoxRegionWidth.setValue(self.CropRegionW) else: self.spinBoxRegionX.setValue(self.CropRegionX) self.spinBoxRegionX_2.setValue(self.CropRegionY) self.spinBoxRegionHeight.setValue(self.CropRegionH) self.spinBoxRegionWidth.setValue(self.CropRegionW) ''' def WindowTitleSelectEvent(self, index): bbox = win32gui.GetWindowRect(self.hwndInComboBox[index]) x = bbox[0] y = bbox[1] width = bbox[2] - bbox[0] height = bbox[3] - bbox[1] self.spinBoxWindowMoveX.setValue(x) self.spinBoxWindowMoveY.setValue(y) self.spinBoxWindowMoveWidth.setValue(width) self.spinBoxWindowMoveHeight.setValue(height) def TestEvent(self): #print self.lineEditWindowRegEx.text() if self.lineEditWindowRegEx.text() == "": self.message = QMessageBox.critical(self, 'Error', "You have to insert the Window Reg Ex value!", QMessageBox.Ok) return regex = self.lineEditWindowRegEx.text() Window.Bind(regex, timeout=0) Window.Unbind() def ImportSizeEvent(self): index = self.comboBoxVisibleWindows.currentIndex() bbox = win32gui.GetWindowRect(self.hwndInComboBox[index]) x = bbox[0] y = bbox[1] width = bbox[2] - bbox[0] height = bbox[3] - bbox[1] self.spinBoxWindowMoveX.setValue(x) self.spinBoxWindowMoveY.setValue(y) self.spinBoxWindowMoveWidth.setValue(width) self.spinBoxWindowMoveHeight.setValue(height) def UpdateWinComboBox(self): self.comboBoxVisibleWindows.clear() self.hwndInComboBox = [] if sys.platform == 'win32': toplist, winlist = [], [] def enum_callback(hwnd, results): winlist.append((hwnd, win32gui.GetWindowText(hwnd))) win32gui.EnumWindows(enum_callback, toplist) visibleWindows = [(hwnd, curTitle) for hwnd, curTitle in winlist if win32gui.IsWindowVisible(hwnd) != 0] for window in visibleWindows: if window[1] != "" and window[1].lower() != "start": self.comboBoxVisibleWindows.addItem(window[1]) self.hwndInComboBox.append(window[0]) #self.comboBoxVisibleWindows.Width = 424 #pass #win32gui.PostMessage(hiddenTool[0], win32con.WM_CLOSE, 0, 0) def BindWindow(self): if self.lineEditWindowRegEx.text() == "": self.message = QMessageBox.critical(self, 'Error', "You have to insert the Window Reg Ex value!", QMessageBox.Ok) return if self.checkBoxEnablePerfData.isChecked() is True and self.lineEdit.text() == "": self.message = QMessageBox.critical(self, 'Error', "You have to insert a valid Performance Data Name", QMessageBox.Ok) return SERVICE_NAME = "editor" editor_service = self.plugin.locator.get_service(SERVICE_NAME) curLineText = editor_service.get_current_line_text() if editor_service.use_tab() is False: leadingSpaceNumber = len(curLineText) - len(curLineText.lstrip(' ')) tabChar = ' ' * editor_service.get_indentation() else: leadingSpaceNumber = len(curLineText) - len(curLineText.lstrip('\t')) tabChar = '\t' leadingChar = "" if editor_service.use_tab() is False: for x in range(leadingSpaceNumber): leadingChar = leadingChar + " " else: for x in range(leadingSpaceNumber): leadingChar = leadingChar + "\t" regex = self.lineEditWindowRegEx.text().replace("\\","\\\\") if self.checkBoxEnablePerfData.isChecked() is True: timeOut = self.spinBoxPerfCritical.value() + 15 else: timeOut = 15 if self.checkBoxMaximizeWindow.isChecked() is True: editor_service.insert_text("performance = Window.Bind(\"" + regex + "\", timeout=" + str(timeOut) + ", maximize=True)") else: editor_service.insert_text("performance = Window.Bind(\"" + regex + "\", timeout=" + str(timeOut) + ")") if self.checkBoxEnablePerfData.isChecked() is True: editor_service.insert_text(os.linesep) editor_service.insert_text(leadingChar + "NagiosUtils.AddPerformanceData(\"" + self.lineEdit.text() + "\", performance, " + str(self.spinBoxPerfWarning.value()) + ", " + str(self.spinBoxPerfCritical.value()) + ")") editor_service.insert_text(os.linesep) editor_service.insert_text(leadingChar) def UnbindWindow(self): if self.lineEditWindowRegEx.text() == "": self.message = QMessageBox.critical(self, 'Error', "You have to insert the Window Reg Ex value!", QMessageBox.Ok) return SERVICE_NAME = "editor" editor_service = self.plugin.locator.get_service(SERVICE_NAME) curLineText = editor_service.get_current_line_text() if editor_service.use_tab() is False: leadingSpaceNumber = len(curLineText) - len(curLineText.lstrip(' ')) tabChar = ' ' * editor_service.get_indentation() else: leadingSpaceNumber = len(curLineText) - len(curLineText.lstrip('\t')) tabChar = '\t' leadingChar = "" if editor_service.use_tab() is False: for x in range(leadingSpaceNumber): leadingChar = leadingChar + " " else: for x in range(leadingSpaceNumber): leadingChar = leadingChar + "\t" editor_service.insert_text("Window.Unbind()") editor_service.insert_text(os.linesep) editor_service.insert_text(leadingChar) def CloseWindow(self): if self.lineEditWindowRegEx.text() == "": self.message = QMessageBox.critical(self, 'Error', "You have to insert the Window Reg Ex value!", QMessageBox.Ok) return SERVICE_NAME = "editor" editor_service = self.plugin.locator.get_service(SERVICE_NAME) curLineText = editor_service.get_current_line_text() if editor_service.use_tab() is False: leadingSpaceNumber = len(curLineText) - len(curLineText.lstrip(' ')) tabChar = ' ' * editor_service.get_indentation() else: leadingSpaceNumber = len(curLineText) - len(curLineText.lstrip('\t')) tabChar = '\t' leadingChar = "" if editor_service.use_tab() is False: for x in range(leadingSpaceNumber): leadingChar = leadingChar + " " else: for x in range(leadingSpaceNumber): leadingChar = leadingChar + "\t" regex = self.lineEditWindowRegEx.text().replace("\\","\\\\") editor_service.insert_text("Window.Close(\"" + regex + "\")") editor_service.insert_text(os.linesep) editor_service.insert_text(leadingChar) def WaitForExit(self): if self.lineEditWindowRegEx.text() == "": self.message = QMessageBox.critical(self, 'Error', "You have to insert the Window Reg Ex value!", QMessageBox.Ok) return if self.checkBoxEnablePerfData.isChecked() is True and self.lineEdit.text() == "": self.message = QMessageBox.critical(self, 'Error', "You have to insert a valid Performance Data Name", QMessageBox.Ok) return SERVICE_NAME = "editor" editor_service = self.plugin.locator.get_service(SERVICE_NAME) curLineText = editor_service.get_current_line_text() if editor_service.use_tab() is False: leadingSpaceNumber = len(curLineText) - len(curLineText.lstrip(' ')) tabChar = ' ' * editor_service.get_indentation() else: leadingSpaceNumber = len(curLineText) - len(curLineText.lstrip('\t')) tabChar = '\t' leadingChar = "" if editor_service.use_tab() is False: for x in range(leadingSpaceNumber): leadingChar = leadingChar + " " else: for x in range(leadingSpaceNumber): leadingChar = leadingChar + "\t" regex = self.lineEditWindowRegEx.text().replace("\\","\\\\") if self.checkBoxEnablePerfData.isChecked() is True: timeOut = self.spinBoxPerfCritical.value() + 15 else: timeOut = 15 editor_service.insert_text("performance = Window.WaitForExit(\"" + regex + "\", timeout=" + str(timeOut) + ")") if self.checkBoxEnablePerfData.isChecked() is True: editor_service.insert_text(os.linesep) editor_service.insert_text(leadingChar + "NagiosUtils.AddPerformanceData(\"" + self.lineEdit.text() + "\", performance, " + str(self.spinBoxPerfWarning.value()) + ", " + str(self.spinBoxPerfCritical.value()) + ")") editor_service.insert_text(os.linesep) editor_service.insert_text(leadingChar) def UpdateWinLineEdit(self): self.lineEditWindowRegEx.setText(self.comboBoxVisibleWindows.currentText()) def EnableMoveSpinBox(self): if self.radioButtonWindowMove.isChecked() is True: self.spinBoxWindowMoveHeight.setEnabled(False) self.spinBoxWindowMoveWidth.setEnabled(False) self.label_5.setEnabled(False) self.label_6.setEnabled(False) else: self.spinBoxWindowMoveHeight.setEnabled(True) self.spinBoxWindowMoveWidth.setEnabled(True) self.label_5.setEnabled(True) self.label_6.setEnabled(True) def MoveOrResize(self): #if self.lineEditWindowRegEx.text() == "": # return SERVICE_NAME = "editor" editor_service = self.plugin.locator.get_service(SERVICE_NAME) curLineText = editor_service.get_current_line_text() if editor_service.use_tab() is False: leadingSpaceNumber = len(curLineText) - len(curLineText.lstrip(' ')) tabChar = ' ' * editor_service.get_indentation() else: leadingSpaceNumber = len(curLineText) - len(curLineText.lstrip('\t')) tabChar = '\t' leadingChar = "" if editor_service.use_tab() is False: for x in range(leadingSpaceNumber): leadingChar = leadingChar + " " else: for x in range(leadingSpaceNumber): leadingChar = leadingChar + "\t" #regex = self.lineEditWindowRegEx.text().replace("\\","\\\\") if self.radioButtonWindowResize.isChecked() is True: editor_service.insert_text("Window.Resize(" + str(self.spinBoxWindowMoveX.value()) + ", " + str(self.spinBoxWindowMoveY.value()) + ", " + str(self.spinBoxWindowMoveWidth.value()) + ", " + str(self.spinBoxWindowMoveHeight.value()) +")") else: editor_service.insert_text("Window.Move(" + str(self.spinBoxWindowMoveX.value()) + ", " + str(self.spinBoxWindowMoveY.value()) +")") editor_service.insert_text(os.linesep) editor_service.insert_text(leadingChar) def keyPressEvent(self, event): if event.key() == Qt.Key_Escape: self.close() def CancelEvent(self): self.close() def CropRegion(self): self.CropRegionX = 0 self.CropRegionY = 0 self.CropRegionW = 0 self.CropRegionH = 0 if self.plugin.undockWindowOpened is True: self.message = QMessageBox.critical(self, 'Error', "Please close the Al\'exa - tools menu!", QMessageBox.Ok) return if self.checkBoxRegionOrigin.isChecked() is True: regex = self.lineEditWindowRegEx.text() if self.lineEditWindowRegEx.text() == "": self.message = QMessageBox.critical(self, 'Error', "You have to insert the Window Reg Ex value!", QMessageBox.Ok) return Window.Bind(regex, timeout=0) if Window.x is None or Window.y is None: self.message = QMessageBox.critical(self, 'Error', "The Window was not found.\nTry to adjust the Window Reg Ex value!", QMessageBox.Ok) return self.windowX = Window.x self.windowY = Window.y Window.Unbind() self.setVisible(False) ''' if sys.platform == 'win32': hwnd = win32gui.GetForegroundWindow() win32gui.ShowWindow(hwnd, 0) toplist = [] winlist = [] def enum_callback(hwnd, results): winlist.append((hwnd, win32gui.GetWindowText(hwnd))) win32gui.EnumWindows(enum_callback, toplist) #if self.undocked is False: firefox = [(hwnd, title) for hwnd, title in winlist if 'exa-ide' in title.lower() or 'exa tool' in title.lower() and 'about' not in title.lower() and 'command prompt' not in title.lower()] print firefox # just grab the first window that matches #firefox = firefox[0] for ninja in firefox: #print str(ninja[0]) + " " + ninja[1] win32gui.ShowWindow(ninja[0], 0) #else: #self.undockWindow.hide() ''' time.sleep(1) app = wx.App(False) screen = wx.ScreenDC() size = screen.GetSize() bmp = wx.EmptyBitmap(size[0], size[1]) mem = wx.MemoryDC(bmp) mem.Blit(0, 0, size[0], size[1], screen, 0, 0) del mem # Release bitmap bmp.SaveFile(self.plug_path + os.sep +'alexatools' + os.sep + 'tmp' + os.sep + 'screenshot.png', wx.BITMAP_TYPE_PNG) self.cropWindow = CropRegionClass(self) self.cropWindow.setWindowTitle("alexa screen") self.cropWindow.showFullScreen() self.cropWindow.setMouseTracking(True) def AddBindRegion(self): if self.spinBoxRegionX.value() == 0 and self.spinBoxRegionX_2.value() == 0 and self.spinBoxRegionHeight.value() == 0 and self.spinBoxRegionWidth.value() == 0: self.message = QMessageBox.critical(self, 'Error', "You have to crop a region before to add the code!", QMessageBox.Ok) return SERVICE_NAME = "editor" editor_service = self.plugin.locator.get_service(SERVICE_NAME) curLineText = editor_service.get_current_line_text() if editor_service.use_tab() is False: leadingSpaceNumber = len(curLineText) - len(curLineText.lstrip(' ')) tabChar = ' ' * editor_service.get_indentation() else: leadingSpaceNumber = len(curLineText) - len(curLineText.lstrip('\t')) tabChar = '\t' leadingChar = "" if editor_service.use_tab() is False: for x in range(leadingSpaceNumber): leadingChar = leadingChar + " " else: for x in range(leadingSpaceNumber): leadingChar = leadingChar + "\t" if self.checkBoxRegionOrigin.isChecked() is True: editor_service.insert_text("SearchRegion.Bind(" + str(self.spinBoxRegionX.value()) + " - Window.x, " + str(self.spinBoxRegionX_2.value()) + " - Window.y, " + str(self.spinBoxRegionWidth.value()) + ", " + str(self.spinBoxRegionHeight.value()) + ")") else: editor_service.insert_text("SearchRegion.Bind(" + str(self.spinBoxRegionX.value()) + ", " + str(self.spinBoxRegionX_2.value()) + ", " + str(self.spinBoxRegionWidth.value()) + ", " + str(self.spinBoxRegionHeight.value()) + ")") editor_service.insert_text(os.linesep) editor_service.insert_text(leadingChar) def AddUnbindRegion(self): if self.spinBoxRegionX.value() == 0 and self.spinBoxRegionX_2.value() == 0 and self.spinBoxRegionHeight.value() == 0 and self.spinBoxRegionWidth.value() == 0: self.message = QMessageBox.critical(self, 'Error', "You have to crop a region before to add the code!", QMessageBox.Ok) return SERVICE_NAME = "editor" editor_service = self.plugin.locator.get_service(SERVICE_NAME) curLineText = editor_service.get_current_line_text() if editor_service.use_tab() is False: leadingSpaceNumber = len(curLineText) - len(curLineText.lstrip(' ')) tabChar = ' ' * editor_service.get_indentation() else: leadingSpaceNumber = len(curLineText) - len(curLineText.lstrip('\t')) tabChar = '\t' leadingChar = "" if editor_service.use_tab() is False: for x in range(leadingSpaceNumber): leadingChar = leadingChar + " " else: for x in range(leadingSpaceNumber): leadingChar = leadingChar + "\t" editor_service.insert_text("SearchRegion.Unbind()") editor_service.insert_text(os.linesep) editor_service.insert_text(leadingChar)
class WindowRegion(QWidget): def __init__(self, plugin): super(WindowRegion, self).__init__() self.plugin = plugin self.plug_path = plugin.plug_path self.FirstTimeCheckBox = True self.hwndInComboBox = [] self.CropRegionX = 0 self.CropRegionY = 0 self.CropRegionW = 0 self.CropRegionH = 0 self.windowX = 0 self.windowY = 0 self.initUI() def initUI(self): icon = QIcon() icon.addPixmap( QPixmap(self.plug_path + "/alexatools/images/preferences-desktop-theme.png"), QIcon.Normal, QIcon.Off) self.setWindowIcon(icon) self.setWindowTitle("Al\'exa - Windows and Region") self.setObjectName("self") self.resize(639, 412) self.tabWidget = QTabWidget(self) self.tabWidget.setGeometry(QRect(10, 10, 621, 361)) self.tabWidget.setObjectName("tabWidget") self.tab = QWidget() self.tab.setObjectName("tab") self.pushButton = QPushButton(self.tab) self.pushButton.setGeometry(QRect(568, 10, 24, 20)) self.pushButton.setText("") icon = QIcon() icon.addPixmap( QPixmap(self.plug_path + "/alexatools/images/arrow-down-4.png"), QIcon.Normal, QIcon.Off) self.pushButton.setIcon(icon) self.pushButton.setObjectName("pushButton") self.formLayoutWidget_2 = QWidget(self.tab) self.formLayoutWidget_2.setGeometry(QRect(10, 40, 521, 22)) self.formLayoutWidget_2.setObjectName("formLayoutWidget_2") self.formLayout_2 = QFormLayout(self.formLayoutWidget_2) self.formLayout_2.setMargin(0) self.formLayout_2.setObjectName("formLayout_2") self.lineEditWindowRegEx = QLineEdit(self.formLayoutWidget_2) self.lineEditWindowRegEx.setObjectName("lineEditWindowRegEx") self.formLayout_2.setWidget(0, QFormLayout.FieldRole, self.lineEditWindowRegEx) self.label_2 = QLabel(self.formLayoutWidget_2) self.label_2.setObjectName("label_2") self.formLayout_2.setWidget(0, QFormLayout.LabelRole, self.label_2) self.gridLayoutWidget = QWidget(self.tab) self.gridLayoutWidget.setGeometry(QRect(10, 200, 351, 81)) self.gridLayoutWidget.setObjectName("gridLayoutWidget") self.gridLayout = QGridLayout(self.gridLayoutWidget) self.gridLayout.setMargin(0) self.gridLayout.setObjectName("gridLayout") self.spinBoxWindowMoveHeight = QSpinBox(self.gridLayoutWidget) self.spinBoxWindowMoveHeight.setMinimum(-9999) self.spinBoxWindowMoveHeight.setMaximum(9999) self.spinBoxWindowMoveHeight.setObjectName("spinBoxWindowMoveHeight") self.gridLayout.addWidget(self.spinBoxWindowMoveHeight, 2, 1, 1, 1) self.label_4 = QLabel(self.gridLayoutWidget) self.label_4.setObjectName("label_4") self.gridLayout.addWidget(self.label_4, 1, 2, 1, 1) self.label_6 = QLabel(self.gridLayoutWidget) self.label_6.setObjectName("label_6") self.gridLayout.addWidget(self.label_6, 2, 2, 1, 1) self.spinBoxWindowMoveX = QSpinBox(self.gridLayoutWidget) self.spinBoxWindowMoveX.setMinimum(-999999) self.spinBoxWindowMoveX.setMaximum(9999) self.spinBoxWindowMoveX.setObjectName("spinBoxWindowMoveX") self.gridLayout.addWidget(self.spinBoxWindowMoveX, 1, 1, 1, 1) self.label_3 = QLabel(self.gridLayoutWidget) self.label_3.setObjectName("label_3") self.gridLayout.addWidget(self.label_3, 1, 0, 1, 1) self.spinBoxWindowMoveWidth = QSpinBox(self.gridLayoutWidget) self.spinBoxWindowMoveWidth.setMinimum(-9999) self.spinBoxWindowMoveWidth.setMaximum(9999) self.spinBoxWindowMoveWidth.setObjectName("spinBoxWindowMoveWidth") self.gridLayout.addWidget(self.spinBoxWindowMoveWidth, 2, 3, 1, 1) self.label_5 = QLabel(self.gridLayoutWidget) self.label_5.setObjectName("label_5") self.gridLayout.addWidget(self.label_5, 2, 0, 1, 1) self.spinBoxWindowMoveY = QSpinBox(self.gridLayoutWidget) self.spinBoxWindowMoveY.setMinimum(-999999) self.spinBoxWindowMoveY.setMaximum(9999) self.spinBoxWindowMoveY.setObjectName("spinBoxWindowMoveY") self.gridLayout.addWidget(self.spinBoxWindowMoveY, 1, 3, 1, 1) self.radioButtonWindowResize = QRadioButton(self.gridLayoutWidget) self.radioButtonWindowResize.setChecked(True) self.radioButtonWindowResize.setObjectName("radioButtonWindowResize") self.gridLayout.addWidget(self.radioButtonWindowResize, 0, 0, 1, 1) self.radioButtonWindowMove = QRadioButton(self.gridLayoutWidget) self.radioButtonWindowMove.setObjectName("radioButtonWindowMove") self.gridLayout.addWidget(self.radioButtonWindowMove, 0, 1, 1, 1) self.horizontalLayoutWidget = QWidget(self.tab) self.horizontalLayoutWidget.setGeometry(QRect(10, 290, 111, 31)) self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget") self.horizontalLayout_2 = QHBoxLayout(self.horizontalLayoutWidget) self.horizontalLayout_2.setMargin(0) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.pushButtonMoveResize = QPushButton(self.horizontalLayoutWidget) self.pushButtonMoveResize.setObjectName("pushButtonMoveResize") self.horizontalLayout_2.addWidget(self.pushButtonMoveResize) self.horizontalLayoutWidget_2 = QWidget(self.tab) self.horizontalLayoutWidget_2.setGeometry(QRect(10, 90, 411, 31)) self.horizontalLayoutWidget_2.setObjectName("horizontalLayoutWidget_2") self.horizontalLayout = QHBoxLayout(self.horizontalLayoutWidget_2) self.horizontalLayout.setMargin(0) self.horizontalLayout.setObjectName("horizontalLayout") self.pushButtonWindowBind = QPushButton(self.horizontalLayoutWidget_2) self.pushButtonWindowBind.setObjectName("pushButtonWindowBind") self.horizontalLayout.addWidget(self.pushButtonWindowBind) self.pushButtonWindowUnbind = QPushButton( self.horizontalLayoutWidget_2) self.pushButtonWindowUnbind.setObjectName("pushButtonWindowUnbind") self.horizontalLayout.addWidget(self.pushButtonWindowUnbind) self.pushButtonWindowWaitForExit = QPushButton( self.horizontalLayoutWidget_2) self.pushButtonWindowWaitForExit.setObjectName( "pushButtonWindowWaitForExit") self.horizontalLayout.addWidget(self.pushButtonWindowWaitForExit) self.pushButtonWindowClose = QPushButton(self.horizontalLayoutWidget_2) self.pushButtonWindowClose.setObjectName("pushButtonWindowClose") self.horizontalLayout.addWidget(self.pushButtonWindowClose) self.label = QLabel(self.tab) self.label.setGeometry(QRect(10, 10, 77, 20)) self.label.setObjectName("label") self.verticalLayoutWidget = QWidget(self.tab) self.verticalLayoutWidget.setGeometry(QRect(90, 10, 441, 22)) self.verticalLayoutWidget.setObjectName("verticalLayoutWidget") self.verticalLayout = QVBoxLayout(self.verticalLayoutWidget) self.verticalLayout.setMargin(0) self.verticalLayout.setObjectName("verticalLayout") self.comboBoxVisibleWindows = QComboBox(self.verticalLayoutWidget) self.comboBoxVisibleWindows.setObjectName("comboBoxVisibleWindows") self.verticalLayout.addWidget(self.comboBoxVisibleWindows) self.pushButton_2 = QPushButton(self.tab) self.pushButton_2.setGeometry(QRect(538, 10, 24, 20)) self.pushButton_2.setText("") icon1 = QIcon() icon1.addPixmap( QPixmap(self.plug_path + "/alexatools/images/view-refresh-3.png"), QIcon.Normal, QIcon.Off) self.pushButton_2.setIcon(icon1) self.pushButton_2.setObjectName("pushButton_2") self.pushButtonTestBind = QPushButton(self.tab) self.pushButtonTestBind.setGeometry(QRect(539, 40, 53, 23)) self.pushButtonTestBind.setObjectName("pushButtonTestBind") self.checkBoxMaximizeWindow = QCheckBox(self.tab) self.checkBoxMaximizeWindow.setGeometry(QRect(11, 65, 91, 17)) self.checkBoxMaximizeWindow.setObjectName("checkBoxMaximizeWindow") self.pushButtonAddSize = QPushButton(self.tab) self.pushButtonAddSize.setGeometry(QRect(387, 227, 24, 22)) self.pushButtonAddSize.setText("") icon2 = QIcon() icon2.addPixmap( QPixmap(self.plug_path + "/alexatools/images/view-restore.png"), QIcon.Normal, QIcon.Off) self.pushButtonAddSize.setIcon(icon2) self.pushButtonAddSize.setObjectName("pushButtonAddSize") self.gridLayoutWidget_3 = QWidget(self.tab) self.gridLayoutWidget_3.setGeometry(QRect(10, 130, 481, 61)) self.gridLayoutWidget_3.setObjectName("gridLayoutWidget_3") self.gridLayout_3 = QGridLayout(self.gridLayoutWidget_3) self.gridLayout_3.setMargin(0) self.gridLayout_3.setObjectName("gridLayout_3") self.label_11 = QLabel(self.gridLayoutWidget_3) self.label_11.setObjectName("label_11") self.gridLayout_3.addWidget(self.label_11, 1, 2, 1, 1) self.spinBoxPerfWarning = QSpinBox(self.gridLayoutWidget_3) self.spinBoxPerfWarning.setMaximum(9999) self.spinBoxPerfWarning.setObjectName("spinBoxPerfWarning") self.gridLayout_3.addWidget(self.spinBoxPerfWarning, 1, 3, 1, 1) self.label_12 = QLabel(self.gridLayoutWidget_3) self.label_12.setObjectName("label_12") self.gridLayout_3.addWidget(self.label_12, 1, 4, 1, 1) self.spinBoxPerfCritical = QSpinBox(self.gridLayoutWidget_3) self.spinBoxPerfCritical.setMaximum(9999) self.spinBoxPerfCritical.setObjectName("spinBoxPerfCritical") self.gridLayout_3.addWidget(self.spinBoxPerfCritical, 1, 5, 1, 1) self.label_13 = QLabel(self.gridLayoutWidget_3) self.label_13.setObjectName("label_13") self.gridLayout_3.addWidget(self.label_13, 1, 0, 1, 1) self.lineEdit = QLineEdit(self.gridLayoutWidget_3) self.lineEdit.setObjectName("lineEdit") self.gridLayout_3.addWidget(self.lineEdit, 1, 1, 1, 1) self.checkBoxEnablePerfData = QCheckBox(self.gridLayoutWidget_3) self.checkBoxEnablePerfData.setObjectName("checkBoxEnablePerfData") self.gridLayout_3.addWidget(self.checkBoxEnablePerfData, 0, 0, 1, 2) self.tabWidget.addTab(self.tab, "") self.tab_2 = QWidget() self.tab_2.setObjectName("tab_2") self.gridLayoutWidget_2 = QWidget(self.tab_2) self.gridLayoutWidget_2.setGeometry(QRect(10, 50, 351, 61)) self.gridLayoutWidget_2.setObjectName("gridLayoutWidget_2") self.gridLayout_2 = QGridLayout(self.gridLayoutWidget_2) self.gridLayout_2.setMargin(0) self.gridLayout_2.setObjectName("gridLayout_2") self.label_7 = QLabel(self.gridLayoutWidget_2) self.label_7.setObjectName("label_7") self.gridLayout_2.addWidget(self.label_7, 0, 0, 1, 1) self.label_10 = QLabel(self.gridLayoutWidget_2) self.label_10.setObjectName("label_10") self.gridLayout_2.addWidget(self.label_10, 1, 2, 1, 1) self.spinBoxRegionHeight = QSpinBox(self.gridLayoutWidget_2) self.spinBoxRegionHeight.setMaximum(9999) self.spinBoxRegionHeight.setObjectName("spinBoxRegionHeight") self.gridLayout_2.addWidget(self.spinBoxRegionHeight, 1, 1, 1, 1) self.spinBoxRegionX_2 = QSpinBox(self.gridLayoutWidget_2) self.spinBoxRegionX_2.setMinimum(-999999) self.spinBoxRegionX_2.setMaximum(9999) self.spinBoxRegionX_2.setObjectName("spinBoxRegionX_2") self.gridLayout_2.addWidget(self.spinBoxRegionX_2, 0, 3, 1, 1) self.label_9 = QLabel(self.gridLayoutWidget_2) self.label_9.setObjectName("label_9") self.gridLayout_2.addWidget(self.label_9, 1, 0, 1, 1) self.label_8 = QLabel(self.gridLayoutWidget_2) self.label_8.setObjectName("label_8") self.gridLayout_2.addWidget(self.label_8, 0, 2, 1, 1) self.spinBoxRegionX = QSpinBox(self.gridLayoutWidget_2) self.spinBoxRegionX.setMinimum(-999999) self.spinBoxRegionX.setMaximum(9999) self.spinBoxRegionX.setObjectName("spinBoxRegionX") self.gridLayout_2.addWidget(self.spinBoxRegionX, 0, 1, 1, 1) self.spinBoxRegionWidth = QSpinBox(self.gridLayoutWidget_2) self.spinBoxRegionWidth.setMaximum(9999) self.spinBoxRegionWidth.setObjectName("spinBoxRegionWidth") self.gridLayout_2.addWidget(self.spinBoxRegionWidth, 1, 3, 1, 1) self.horizontalLayoutWidget_3 = QWidget(self.tab_2) self.horizontalLayoutWidget_3.setGeometry(QRect(10, 130, 291, 41)) self.horizontalLayoutWidget_3.setObjectName("horizontalLayoutWidget_3") self.horizontalLayout_3 = QHBoxLayout(self.horizontalLayoutWidget_3) self.horizontalLayout_3.setMargin(0) self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.pushButtonCropRegion = QPushButton(self.horizontalLayoutWidget_3) self.pushButtonCropRegion.setObjectName("pushButtonCropRegion") self.horizontalLayout_3.addWidget(self.pushButtonCropRegion) self.pushButtonBindRegion = QPushButton(self.horizontalLayoutWidget_3) self.pushButtonBindRegion.setObjectName("pushButtonBindRegion") self.horizontalLayout_3.addWidget(self.pushButtonBindRegion) self.pushButtonUnbindRegion = QPushButton( self.horizontalLayoutWidget_3) self.pushButtonUnbindRegion.setObjectName("pushButtonUnbindRegion") self.horizontalLayout_3.addWidget(self.pushButtonUnbindRegion) self.checkBoxRegionOrigin = QCheckBox(self.tab_2) self.checkBoxRegionOrigin.setGeometry(QRect(10, 20, 161, 17)) self.checkBoxRegionOrigin.setChecked(True) self.checkBoxRegionOrigin.setObjectName("checkBoxRegionOrigin") self.tabWidget.addTab(self.tab_2, "") self.pushButtonCancel = QPushButton(self) self.pushButtonCancel.setGeometry(QRect(20, 380, 75, 23)) self.pushButtonCancel.setObjectName("pushButtonCancel") #self.retranslateUi(self) self.tabWidget.setCurrentIndex(0) #QMetaObject.connectSlotsByName(self) self.label_2.setText("Window Reg Ex") self.label_4.setText("y") self.label_6.setText("Width") self.label_3.setText("x") self.label_5.setText("Height") self.radioButtonWindowResize.setText("Resize") self.radioButtonWindowMove.setText("Move") self.pushButtonMoveResize.setText("Move or Resize") self.pushButtonWindowBind.setText("Bind") self.pushButtonWindowUnbind.setText("Unbind") self.pushButtonWindowWaitForExit.setText("Wait For Exit") self.pushButtonWindowClose.setText("Close") self.label.setText("Visible Windows") self.pushButtonTestBind.setText("Test") self.checkBoxMaximizeWindow.setText("Maximize") self.label_11.setText("Warning") self.label_12.setText("Critical") self.label_13.setText("Name") self.checkBoxEnablePerfData.setText("Enable Performance Data") self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), "Windows") self.label_7.setText("Offset x") self.label_10.setText("Width") self.label_9.setText("Height") self.label_8.setText("Offset y") self.pushButtonCropRegion.setText("Crop") self.pushButtonBindRegion.setText("Bind") self.pushButtonUnbindRegion.setText("Unbind") self.checkBoxRegionOrigin.setText("Origin point is the window...") self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), "Region") self.pushButtonCancel.setText("Cancel") self.setWindowFlags(Qt.WindowMinimizeButtonHint | Qt.WindowCloseButtonHint | Qt.WindowStaysOnTopHint) self.setFixedSize(self.size()) self.connect(self.pushButtonCancel, SIGNAL("clicked()"), self.CancelEvent) self.connect(self.pushButton_2, SIGNAL("clicked()"), self.UpdateWinComboBox) self.connect(self.pushButton, SIGNAL("clicked()"), self.UpdateWinLineEdit) #self.connect(self.comboBoxVisibleWindows, SIGNAL("activated(int)"), self.WindowTitleSelectEvent) self.connect(self.pushButtonTestBind, SIGNAL("clicked()"), self.TestEvent) self.connect(self.pushButtonWindowBind, SIGNAL("clicked()"), self.BindWindow) self.connect(self.pushButtonWindowClose, SIGNAL("clicked()"), self.CloseWindow) self.connect(self.pushButtonWindowWaitForExit, SIGNAL("clicked()"), self.WaitForExit) self.connect(self.pushButtonWindowUnbind, SIGNAL("clicked()"), self.UnbindWindow) self.connect(self.checkBoxEnablePerfData, SIGNAL("clicked()"), self.UpdateNagiosSpinBoxes) self.connect(self.pushButtonAddSize, SIGNAL("clicked()"), self.ImportSizeEvent) self.connect(self.radioButtonWindowMove, SIGNAL("clicked()"), self.EnableMoveSpinBox) self.connect(self.radioButtonWindowResize, SIGNAL("clicked()"), self.EnableMoveSpinBox) self.connect(self.pushButtonMoveResize, SIGNAL("clicked()"), self.MoveOrResize) self.connect(self.pushButtonCropRegion, SIGNAL("clicked()"), self.CropRegion) self.connect(self.pushButtonBindRegion, SIGNAL("clicked()"), self.AddBindRegion) self.connect(self.pushButtonUnbindRegion, SIGNAL("clicked()"), self.AddUnbindRegion) self.UpdateWinComboBox() self.UpdateCropSpinBoxes() self.UpdateNagiosSpinBoxes() def UpdateNagiosSpinBoxes(self): if self.checkBoxEnablePerfData.isChecked() is False: self.label_13.setEnabled(False) self.label_11.setEnabled(False) self.label_12.setEnabled(False) self.lineEdit.setEnabled(False) self.spinBoxPerfCritical.setEnabled(False) self.spinBoxPerfWarning.setEnabled(False) else: self.label_13.setEnabled(True) self.label_11.setEnabled(True) self.label_12.setEnabled(True) self.lineEdit.setEnabled(True) self.spinBoxPerfCritical.setEnabled(True) self.spinBoxPerfWarning.setEnabled(True) def UpdateCropSpinBoxes(self): self.spinBoxRegionX.setValue(self.CropRegionX) self.spinBoxRegionX_2.setValue(self.CropRegionY) self.spinBoxRegionHeight.setValue(self.CropRegionH) self.spinBoxRegionWidth.setValue(self.CropRegionW) ''' if self.checkBoxRegionOrigin.isChecked() is True: self.spinBoxRegionX.setValue(self.CropRegionX - self.windowX) self.spinBoxRegionX_2.setValue(self.CropRegionY - self.windowY) self.spinBoxRegionHeight.setValue(self.CropRegionH) self.spinBoxRegionWidth.setValue(self.CropRegionW) else: self.spinBoxRegionX.setValue(self.CropRegionX) self.spinBoxRegionX_2.setValue(self.CropRegionY) self.spinBoxRegionHeight.setValue(self.CropRegionH) self.spinBoxRegionWidth.setValue(self.CropRegionW) ''' def WindowTitleSelectEvent(self, index): bbox = win32gui.GetWindowRect(self.hwndInComboBox[index]) x = bbox[0] y = bbox[1] width = bbox[2] - bbox[0] height = bbox[3] - bbox[1] self.spinBoxWindowMoveX.setValue(x) self.spinBoxWindowMoveY.setValue(y) self.spinBoxWindowMoveWidth.setValue(width) self.spinBoxWindowMoveHeight.setValue(height) def TestEvent(self): #print self.lineEditWindowRegEx.text() if self.lineEditWindowRegEx.text() == "": self.message = QMessageBox.critical( self, 'Error', "You have to insert the Window Reg Ex value!", QMessageBox.Ok) return regex = self.lineEditWindowRegEx.text() Window.Bind(regex, timeout=0) Window.Unbind() def ImportSizeEvent(self): index = self.comboBoxVisibleWindows.currentIndex() bbox = win32gui.GetWindowRect(self.hwndInComboBox[index]) x = bbox[0] y = bbox[1] width = bbox[2] - bbox[0] height = bbox[3] - bbox[1] self.spinBoxWindowMoveX.setValue(x) self.spinBoxWindowMoveY.setValue(y) self.spinBoxWindowMoveWidth.setValue(width) self.spinBoxWindowMoveHeight.setValue(height) def UpdateWinComboBox(self): self.comboBoxVisibleWindows.clear() self.hwndInComboBox = [] if sys.platform == 'win32': toplist, winlist = [], [] def enum_callback(hwnd, results): winlist.append((hwnd, win32gui.GetWindowText(hwnd))) win32gui.EnumWindows(enum_callback, toplist) visibleWindows = [(hwnd, curTitle) for hwnd, curTitle in winlist if win32gui.IsWindowVisible(hwnd) != 0] for window in visibleWindows: if window[1] != "" and window[1].lower() != "start": self.comboBoxVisibleWindows.addItem(window[1]) self.hwndInComboBox.append(window[0]) #self.comboBoxVisibleWindows.Width = 424 #pass #win32gui.PostMessage(hiddenTool[0], win32con.WM_CLOSE, 0, 0) def BindWindow(self): if self.lineEditWindowRegEx.text() == "": self.message = QMessageBox.critical( self, 'Error', "You have to insert the Window Reg Ex value!", QMessageBox.Ok) return if self.checkBoxEnablePerfData.isChecked( ) is True and self.lineEdit.text() == "": self.message = QMessageBox.critical( self, 'Error', "You have to insert a valid Performance Data Name", QMessageBox.Ok) return SERVICE_NAME = "editor" editor_service = self.plugin.locator.get_service(SERVICE_NAME) curLineText = editor_service.get_current_line_text() if editor_service.use_tab() is False: leadingSpaceNumber = len(curLineText) - len( curLineText.lstrip(' ')) tabChar = ' ' * editor_service.get_indentation() else: leadingSpaceNumber = len(curLineText) - len( curLineText.lstrip('\t')) tabChar = '\t' leadingChar = "" if editor_service.use_tab() is False: for x in range(leadingSpaceNumber): leadingChar = leadingChar + " " else: for x in range(leadingSpaceNumber): leadingChar = leadingChar + "\t" regex = self.lineEditWindowRegEx.text().replace("\\", "\\\\") if self.checkBoxEnablePerfData.isChecked() is True: timeOut = self.spinBoxPerfCritical.value() + 15 else: timeOut = 15 if self.checkBoxMaximizeWindow.isChecked() is True: editor_service.insert_text("performance = Window.Bind(\"" + regex + "\", timeout=" + str(timeOut) + ", maximize=True)") else: editor_service.insert_text("performance = Window.Bind(\"" + regex + "\", timeout=" + str(timeOut) + ")") if self.checkBoxEnablePerfData.isChecked() is True: editor_service.insert_text(os.linesep) editor_service.insert_text(leadingChar + "NagiosUtils.AddPerformanceData(\"" + self.lineEdit.text() + "\", performance, " + str(self.spinBoxPerfWarning.value()) + ", " + str(self.spinBoxPerfCritical.value()) + ")") editor_service.insert_text(os.linesep) editor_service.insert_text(leadingChar) def UnbindWindow(self): if self.lineEditWindowRegEx.text() == "": self.message = QMessageBox.critical( self, 'Error', "You have to insert the Window Reg Ex value!", QMessageBox.Ok) return SERVICE_NAME = "editor" editor_service = self.plugin.locator.get_service(SERVICE_NAME) curLineText = editor_service.get_current_line_text() if editor_service.use_tab() is False: leadingSpaceNumber = len(curLineText) - len( curLineText.lstrip(' ')) tabChar = ' ' * editor_service.get_indentation() else: leadingSpaceNumber = len(curLineText) - len( curLineText.lstrip('\t')) tabChar = '\t' leadingChar = "" if editor_service.use_tab() is False: for x in range(leadingSpaceNumber): leadingChar = leadingChar + " " else: for x in range(leadingSpaceNumber): leadingChar = leadingChar + "\t" editor_service.insert_text("Window.Unbind()") editor_service.insert_text(os.linesep) editor_service.insert_text(leadingChar) def CloseWindow(self): if self.lineEditWindowRegEx.text() == "": self.message = QMessageBox.critical( self, 'Error', "You have to insert the Window Reg Ex value!", QMessageBox.Ok) return SERVICE_NAME = "editor" editor_service = self.plugin.locator.get_service(SERVICE_NAME) curLineText = editor_service.get_current_line_text() if editor_service.use_tab() is False: leadingSpaceNumber = len(curLineText) - len( curLineText.lstrip(' ')) tabChar = ' ' * editor_service.get_indentation() else: leadingSpaceNumber = len(curLineText) - len( curLineText.lstrip('\t')) tabChar = '\t' leadingChar = "" if editor_service.use_tab() is False: for x in range(leadingSpaceNumber): leadingChar = leadingChar + " " else: for x in range(leadingSpaceNumber): leadingChar = leadingChar + "\t" regex = self.lineEditWindowRegEx.text().replace("\\", "\\\\") editor_service.insert_text("Window.Close(\"" + regex + "\")") editor_service.insert_text(os.linesep) editor_service.insert_text(leadingChar) def WaitForExit(self): if self.lineEditWindowRegEx.text() == "": self.message = QMessageBox.critical( self, 'Error', "You have to insert the Window Reg Ex value!", QMessageBox.Ok) return if self.checkBoxEnablePerfData.isChecked( ) is True and self.lineEdit.text() == "": self.message = QMessageBox.critical( self, 'Error', "You have to insert a valid Performance Data Name", QMessageBox.Ok) return SERVICE_NAME = "editor" editor_service = self.plugin.locator.get_service(SERVICE_NAME) curLineText = editor_service.get_current_line_text() if editor_service.use_tab() is False: leadingSpaceNumber = len(curLineText) - len( curLineText.lstrip(' ')) tabChar = ' ' * editor_service.get_indentation() else: leadingSpaceNumber = len(curLineText) - len( curLineText.lstrip('\t')) tabChar = '\t' leadingChar = "" if editor_service.use_tab() is False: for x in range(leadingSpaceNumber): leadingChar = leadingChar + " " else: for x in range(leadingSpaceNumber): leadingChar = leadingChar + "\t" regex = self.lineEditWindowRegEx.text().replace("\\", "\\\\") if self.checkBoxEnablePerfData.isChecked() is True: timeOut = self.spinBoxPerfCritical.value() + 15 else: timeOut = 15 editor_service.insert_text("performance = Window.WaitForExit(\"" + regex + "\", timeout=" + str(timeOut) + ")") if self.checkBoxEnablePerfData.isChecked() is True: editor_service.insert_text(os.linesep) editor_service.insert_text(leadingChar + "NagiosUtils.AddPerformanceData(\"" + self.lineEdit.text() + "\", performance, " + str(self.spinBoxPerfWarning.value()) + ", " + str(self.spinBoxPerfCritical.value()) + ")") editor_service.insert_text(os.linesep) editor_service.insert_text(leadingChar) def UpdateWinLineEdit(self): self.lineEditWindowRegEx.setText( self.comboBoxVisibleWindows.currentText()) def EnableMoveSpinBox(self): if self.radioButtonWindowMove.isChecked() is True: self.spinBoxWindowMoveHeight.setEnabled(False) self.spinBoxWindowMoveWidth.setEnabled(False) self.label_5.setEnabled(False) self.label_6.setEnabled(False) else: self.spinBoxWindowMoveHeight.setEnabled(True) self.spinBoxWindowMoveWidth.setEnabled(True) self.label_5.setEnabled(True) self.label_6.setEnabled(True) def MoveOrResize(self): #if self.lineEditWindowRegEx.text() == "": # return SERVICE_NAME = "editor" editor_service = self.plugin.locator.get_service(SERVICE_NAME) curLineText = editor_service.get_current_line_text() if editor_service.use_tab() is False: leadingSpaceNumber = len(curLineText) - len( curLineText.lstrip(' ')) tabChar = ' ' * editor_service.get_indentation() else: leadingSpaceNumber = len(curLineText) - len( curLineText.lstrip('\t')) tabChar = '\t' leadingChar = "" if editor_service.use_tab() is False: for x in range(leadingSpaceNumber): leadingChar = leadingChar + " " else: for x in range(leadingSpaceNumber): leadingChar = leadingChar + "\t" #regex = self.lineEditWindowRegEx.text().replace("\\","\\\\") if self.radioButtonWindowResize.isChecked() is True: editor_service.insert_text( "Window.Resize(" + str(self.spinBoxWindowMoveX.value()) + ", " + str(self.spinBoxWindowMoveY.value()) + ", " + str(self.spinBoxWindowMoveWidth.value()) + ", " + str(self.spinBoxWindowMoveHeight.value()) + ")") else: editor_service.insert_text("Window.Move(" + str(self.spinBoxWindowMoveX.value()) + ", " + str(self.spinBoxWindowMoveY.value()) + ")") editor_service.insert_text(os.linesep) editor_service.insert_text(leadingChar) def keyPressEvent(self, event): if event.key() == Qt.Key_Escape: self.close() def CancelEvent(self): self.close() def CropRegion(self): self.CropRegionX = 0 self.CropRegionY = 0 self.CropRegionW = 0 self.CropRegionH = 0 if self.plugin.undockWindowOpened is True: self.message = QMessageBox.critical( self, 'Error', "Please close the Al\'exa - tools menu!", QMessageBox.Ok) return if self.checkBoxRegionOrigin.isChecked() is True: regex = self.lineEditWindowRegEx.text() if self.lineEditWindowRegEx.text() == "": self.message = QMessageBox.critical( self, 'Error', "You have to insert the Window Reg Ex value!", QMessageBox.Ok) return Window.Bind(regex, timeout=0) if Window.x is None or Window.y is None: self.message = QMessageBox.critical( self, 'Error', "The Window was not found.\nTry to adjust the Window Reg Ex value!", QMessageBox.Ok) return self.windowX = Window.x self.windowY = Window.y Window.Unbind() self.setVisible(False) ''' if sys.platform == 'win32': hwnd = win32gui.GetForegroundWindow() win32gui.ShowWindow(hwnd, 0) toplist = [] winlist = [] def enum_callback(hwnd, results): winlist.append((hwnd, win32gui.GetWindowText(hwnd))) win32gui.EnumWindows(enum_callback, toplist) #if self.undocked is False: firefox = [(hwnd, title) for hwnd, title in winlist if 'exa-ide' in title.lower() or 'exa tool' in title.lower() and 'about' not in title.lower() and 'command prompt' not in title.lower()] print firefox # just grab the first window that matches #firefox = firefox[0] for ninja in firefox: #print str(ninja[0]) + " " + ninja[1] win32gui.ShowWindow(ninja[0], 0) #else: #self.undockWindow.hide() ''' time.sleep(1) app = wx.App(False) screen = wx.ScreenDC() size = screen.GetSize() bmp = wx.EmptyBitmap(size[0], size[1]) mem = wx.MemoryDC(bmp) mem.Blit(0, 0, size[0], size[1], screen, 0, 0) del mem # Release bitmap bmp.SaveFile( self.plug_path + os.sep + 'alexatools' + os.sep + 'tmp' + os.sep + 'screenshot.png', wx.BITMAP_TYPE_PNG) self.cropWindow = CropRegionClass(self) self.cropWindow.setWindowTitle("alexa screen") self.cropWindow.showFullScreen() self.cropWindow.setMouseTracking(True) def AddBindRegion(self): if self.spinBoxRegionX.value() == 0 and self.spinBoxRegionX_2.value( ) == 0 and self.spinBoxRegionHeight.value( ) == 0 and self.spinBoxRegionWidth.value() == 0: self.message = QMessageBox.critical( self, 'Error', "You have to crop a region before to add the code!", QMessageBox.Ok) return SERVICE_NAME = "editor" editor_service = self.plugin.locator.get_service(SERVICE_NAME) curLineText = editor_service.get_current_line_text() if editor_service.use_tab() is False: leadingSpaceNumber = len(curLineText) - len( curLineText.lstrip(' ')) tabChar = ' ' * editor_service.get_indentation() else: leadingSpaceNumber = len(curLineText) - len( curLineText.lstrip('\t')) tabChar = '\t' leadingChar = "" if editor_service.use_tab() is False: for x in range(leadingSpaceNumber): leadingChar = leadingChar + " " else: for x in range(leadingSpaceNumber): leadingChar = leadingChar + "\t" if self.checkBoxRegionOrigin.isChecked() is True: editor_service.insert_text("SearchRegion.Bind(" + str(self.spinBoxRegionX.value()) + " - Window.x, " + str(self.spinBoxRegionX_2.value()) + " - Window.y, " + str(self.spinBoxRegionWidth.value()) + ", " + str(self.spinBoxRegionHeight.value()) + ")") else: editor_service.insert_text("SearchRegion.Bind(" + str(self.spinBoxRegionX.value()) + ", " + str(self.spinBoxRegionX_2.value()) + ", " + str(self.spinBoxRegionWidth.value()) + ", " + str(self.spinBoxRegionHeight.value()) + ")") editor_service.insert_text(os.linesep) editor_service.insert_text(leadingChar) def AddUnbindRegion(self): if self.spinBoxRegionX.value() == 0 and self.spinBoxRegionX_2.value( ) == 0 and self.spinBoxRegionHeight.value( ) == 0 and self.spinBoxRegionWidth.value() == 0: self.message = QMessageBox.critical( self, 'Error', "You have to crop a region before to add the code!", QMessageBox.Ok) return SERVICE_NAME = "editor" editor_service = self.plugin.locator.get_service(SERVICE_NAME) curLineText = editor_service.get_current_line_text() if editor_service.use_tab() is False: leadingSpaceNumber = len(curLineText) - len( curLineText.lstrip(' ')) tabChar = ' ' * editor_service.get_indentation() else: leadingSpaceNumber = len(curLineText) - len( curLineText.lstrip('\t')) tabChar = '\t' leadingChar = "" if editor_service.use_tab() is False: for x in range(leadingSpaceNumber): leadingChar = leadingChar + " " else: for x in range(leadingSpaceNumber): leadingChar = leadingChar + "\t" editor_service.insert_text("SearchRegion.Unbind()") editor_service.insert_text(os.linesep) editor_service.insert_text(leadingChar)