示例#1
0
def deleteCurrentLine ():
	# supprime la ligne ou les lignes sélectionnées sous le curseur
	nb = 0
	iLineStart, iLineEnd, j = 0, 0, 0
	d, f = 0, 0
	# on trouve le nombre de lignes total du document
	nb = sp.window.curPage.lineCount-1
	# on trouve les numéros des lignes de début et de fin
	iLineStart = sp.window.curPage.lineOfOffset (sp.window.curPage.selectionStart)
	iLineEnd = sp.window.curPage.lineOfOffset (sp.window.curPage.selectionEnd)
	# on identifie la position de début du texte à supprimer
	d = sp.window.curPage.lineStartOffset(iLineStart)
	# on identifie la position de fin du texte à supprimer
	# si la fin est la dernière ligne
	if iLineEnd == nb:
		# la position de fin est la fin de tout le texte
		f = len(sp.window.curPage.text)
	else: # ce n'est pas la dernière ligne
		# la fin est le début de la ligne suivante
		f = sp.window.curPage.lineStartOffset(iLineEnd+1)
	# end--if
	# sélection de la portion à supprimer
	sp.window.curPage.select(d, f)
	# suppression
	sp.window.curPage.selectedText = ""
	
	# lecture de la nouvelle ligne courante
	sp.say(sp.window.curPage.line(sp.window.curPage.curLine), True)
示例#2
0
def sayText(s, stopSpeech=False):
    """ si autorisé, fait lire un texte par la synthèse vocale """
    flag = True
    try:
        flag = sp.window.menus["accessibility"]["vocalSynthesis"].checked
    except:
        pass
    # si synthèse autorisée
    if flag == True:
        sp.say(s, stopSpeech)
示例#3
0
def previous_function():
    page = sp.window.curPage
    pre_position = page.position
    #page.curLine -= 1
    page.position = page.lineStartOffset(page.curLine)
    if page.find(regex['function'],
                 scase=False,
                 regex=True,
                 up=True,
                 stealthty=False):
        page.position = page.selectionStart
        sp.say(page.curLineText)
    else:
        sp.window.messageBeep(0)
示例#4
0
def next_struct():
    page = sp.window.curPage
    pre_position = page.position
    page.curLine += 1
    if page.find(regex['struct'],
                 scase=False,
                 regex=True,
                 up=False,
                 stealthty=False):
        page.position = page.selectionStart
        sp.say(page.curLineText, True)
    else:
        page.position = pre_position
        sp.window.messageBeep(0)
示例#5
0
文件: qcprj.py 项目: qtnc/6pad2
	def compile (self, page):
		oldDir = os.getcwd()
		os.chdir(self.dir)
		proc = Process('c.bat')
		proc.wait()
		result = proc.read()
		os.chdir(oldDir)
		if not result:
			win.messageBeep(64)
			return
		win.messageBeep(16)
		say(result)
		p = win.new('text')
		p.readOnly=True
		p.name = msg('Compilation result')
		p.text = result
示例#6
0
def onKeyUp(page, vk):
    global lastDifferentIndentLevel
    # Pour les touches tab et Shift + Tab.
    if vk in [9, 1033] and page.position <= page.lineSafeStartOffset(
            page.curLine) and not page.selectedText:
        sp.say(
            "Niveau " + str(page.lineIndentLevel(page.curLine)) + ". " +
            page.line(page.curLine), True)
        # Comme on a changé l'indentation, on met à jour la variable global
        lastDifferentIndentLevel = page.lineIndentLevel(page.curLine)
        return True

    # Pour la touche BackSpace.
    if vk == 8 and not page.selectedText:
        if page.position <= page.lineSafeStartOffset(page.curLine):
            # Si les paramètres d'indentation sont de 1 Tab ou de 1 espace, on donne le niveau.
            if page.indentation in [0, 1]:
                sp.say(
                    "Niveau " + str(page.lineIndentLevel(page.curLine)) +
                    ". " + page.line(page.curLine), True)
            else:
                # Le niveau d'indentation est fixé sur plus d'une espace, on donne donc le nombre d'indentations.
                sp.say(getIndentation() + ". " + page.line(page.curLine), True)
            # end if
            # Comme on a changé l'indentation, on met à jour la variable global
            lastDifferentIndentLevel = page.lineIndentLevel(page.curLine)
        # end if
        return True

    # Lecture de l'indentation
    # Si la touche est FLH, FLB, CTRL+Home, CTRL+END, PGUp, PGDown, CTRL+Up, CTRL+Down.
    # On donne les informations sur le mode de lecture d'entêtes utilisé.
    if vk in [33, 34, 38, 40, 547, 548, 550, 552] and not page.selectedText:
        # lecture seulement sur changement
        if read_indent_if_dif:
            if lastDifferentIndentLevel != page.lineIndentLevel(page.curLine):
                sp.say(getLineHeading(page.curLine), True)
            # end if
        # end if
        # Mode de lecture sans restriction
        else:
            sp.say(getLineHeading(page.curLine), True)
        # end if
    lastDifferentIndentLevel = page.lineIndentLevel(page.curLine)
    return True
示例#7
0
def readIndentOnlyWhenChange():
    """ activate or deactivate the reading  of indents if change """
    global menuReadIndentOnlyWhenChange
    global read_indent_if_dif
    global lastDifferentIndentLevel
    # bug #menuReadIndentOnlyWhenChange.checked = not(menuReadIndentOnlyWhenChange.checked)
    read_indent_if_dif = not (read_indent_if_dif)
    if read_indent_if_dif:
        #sayLevel()
        sp.say(
            "Activation de la lecture du niveau d'indentation si changement")
    else:
        #sayNothing()
        sp.say(
            "Désactivation de la lecture du niveau d'indentation si changement"
        )
    # end if
    lastDifferentIndentLevel = sp.window.curPage.lineIndentLevel(
        sp.window.curPage.curLine)
示例#8
0
def move_up():
    """Move up one line and read it, 
	return True if they position has changed, False otherwise"""

    page = sp.window.curPage
    line, col = page.licol(page.position)

    if line == 0:
        sp.window.messageBeep(0)
        return False
    # end if

    # On regarde si la ligne destination n'est pas plus courte.
    if page.lineLength(line - 1) < col:
        col = page.lineLength(line - 1)
    # end if

    page.position = page.licol(line - 1, col)
    sp.say(page.curLineText, True)
    return True
示例#9
0
def move_start():

    page = sp.window.curPage
    #On vérifie si la ligne commence directement avec du texte
    if page.lineStartOffset(page.curLine) == page.lineSafeStartOffset(
            page.curLine):
        page.position = page.lineStartOffset(page.curLine)
        #sp.window.beep(220, 100)
        #sp.window.beep(220, 100)
    # On vérifie si le curseur est au début du texte
    elif page.position == page.lineSafeStartOffset(page.curLine):
        # On se positionne au début de la ligne sur n'importe quel caractère
        page.position = page.lineStartOffset(page.curLine)
        #sp.window.beep(220, 100)
    else:
        # On se positionne sur le premier caractère qui n'est pas une espace ou une tabulation
        page.position = page.lineSafeStartOffset(page.curLine)
        #sp.window.beep(330, 100)
        #sp.window.beep(440, 100)
    if (page.textLength): sp.say(page.text[page.position], True)
    else: sp.say("vide")
示例#10
0
def toggleMode():
    if mode == 0:
        sayIndentation()
        sp.say("Dire les indentations", True)
    elif mode == 1:
        sayLevel()
        sp.say("Dire les niveaux", True)
    elif mode == 2:
        sayNothing()
        sp.say("Ne rien dire", True)
示例#11
0
def delete_word_backward():
	"""Suprime le mots précédent ou le mots sous le curseur"""
	
	page = sp.window.curPage
	# Liste des caractère spéciaux où stoper la suppression
	char_stop = r""" .,:;!?=<>+-_)({}[]/\"'"""+"\n"
	
	# on identifie la position
	pos = page.position
	
	# Si on est au début du fichier, on emmet un bip
	if pos == 0 : 
		sp.window.messageBeep(0)
		return
	# end if
	# Cas particulier, si on est sur pos à 1, on suprime jusqu'au début du fichier
	if pos == 1 :
		sp.say(page.text[0], True)
		page.delete(0, 1)
		page.position = 0
		return
	# end if
	
	# On supprime jusqu'à trouver un des caractère spéciaux
	i = 2
	while True : 
		# Si on arrive au début du fichier on suprime jusque là.
		if pos-i == 0:
			sp.say(page.text[pos-i:pos], True)
			page.delete(pos-i, pos)
			page.position = 0
			return
		# end if
		# Si on trouve un caractère stop on supprime jusqu'à lui, mais en le conservant.
		if page.text[pos-i] in char_stop :
			sp.say(page.text[pos-i+1:pos], True)
			# Suppression de la chaine entre position de départ et caractère précédent
			page.delete(pos-i+1,pos)
			page.position = pos-i+1
			return
		# end if
		i += 1
示例#12
0
def move_end():
    page = sp.window.curPage
    page.position = page.lineEndOffset(page.curLine)
    if (page.textLength): sp.say(page.text[page.position - 1], True)
    else: sp.say("vide")
示例#13
0
def sayCurIndentLevel():
    """ say the current indent level """
    page = sp.window.curPage
    sp.say("Niveau " + str(page.lineIndentLevel(page.curLine)) + ". ")