[PYTHON] Versuchen Sie, die Dateiansicht von TortoiseHg ein wenig zu ändern

Was du machen willst

Wenn Sie in TortoiseHg den Diff oder Blume einer Datei anzeigen, sehen Sie auch einen Indikator, der die Änderungen anzeigt, oder? thg-fileview

Wenn ich durch das Fenster scrolle, bewegt sich das graue Feld entsprechend. Möchten Sie hier klicken? Ich würde mich sehr freuen, wenn Sie darauf klicken und zu dieser Position springen. ICH.

Was ich getan habe

Deshalb habe ich es ein wenig versucht. https://bitbucket.org/iwata0303/thg/commits/bbb613be1df57a43c4e3f6c20aa10ad45fe26c93

Ich habe eine Datei namens tortoisehg / hgqt / blockmatcher.py und füge diese Methode dort einer Klasse namens BlockList hinzu.

blockmatcher.py


    def scrollToPos(self, y):
        # Scroll to the position which specified by Y coodinate.
        if not isinstance(self._sbar, QScrollBar):
            return
        ratio = float(y) / self.height()
        minimum, maximum, step = self._minimum, self._maximum, self._pagestep
        value = minimum + (maximum + step - minimum) * ratio - (step * 0.5)
        value = min(maximum, max(minimum, value))  # round to valid range.
        self.setValue(value)

    def mousePressEvent(self, event):
        super(BlockList, self).mousePressEvent(event)
        self.scrollToPos(event.y())

    def mouseMoveEvent(self, event):
        super(BlockList, self).mouseMoveEvent(event)
        self.scrollToPos(event.y())

Wenn Sie nun auf die Anzeige klicken, springt sie an diese Position, und wenn Sie sie so wie sie ist nach oben oder unten ziehen, funktioniert auch das Scrollen.

Versuchen Sie, es zu einem Plug-In zu machen

Übrigens ist es auch mühsam, die TortoiseHg-Quelle zu beschaffen und nur dafür zu erstellen.

** Es wird nicht für einen guten Jungen empfohlen **, aber ich werde versuchen, eine Erweiterung zu verwenden, um einen Affen-Patch anzuwenden.

thg_blocklist_patch.py


# -*- coding:utf-8 -*-
def extsetup():
    import sys
    import os
    # thg.exe und thgw.Nur verarbeiten, wenn von exe ausgeführt
    if not os.path.basename(sys.argv[0]).startswith('thg'):
        return

    from PyQt4.QtGui import QScrollBar

    from tortoisehg.hgqt.blockmatcher import BlockList
    from types import MethodType

    mousePressEvent_org = BlockList.mousePressEvent
    mouseMoveEvent_org = BlockList.mouseMoveEvent

    def scrollToPos(bl, y):
        # Scroll to the position which specified by Y coodinate.
        if not isinstance(bl._sbar, QScrollBar):
            return
        ratio = float(y) / bl.height()
        minimum, maximum, step = bl._minimum, bl._maximum, bl._pagestep
        value = minimum + (maximum + step - minimum) * ratio - (step * 0.5)
        value = min(maximum, max(minimum, value))  # round to valid range.
        bl.setValue(value)

    def mousePressEvent(self, event):
        mousePressEvent_org(self, event)
        scrollToPos(self, event.y())

    def mouseMoveEvent(self, event):
        mouseMoveEvent_org(self, event)
        scrollToPos(self, event.y())

    BlockList.mousePressEvent = MethodType(mousePressEvent, None, BlockList)
    BlockList.mouseMoveEvent = MethodType(mouseMoveEvent, None, BlockList)

Normalerweise möchte ich nicht verletzt werden, wenn ich den Befehl hg drücke, also versuche ich, ihn nur zu verarbeiten, wenn er von thg * .exe ausgeführt wird. Ich habe es nicht bestätigt, aber unter Linux denke ich, dass "sys.arg [0]" den Pfad von Python enthält. Überprüfen Sie in diesem Fall "sys.arg [1]".

Wenn Sie diese Datei als Erweiterung registrieren, müssen Sie die Quelle des Hauptgeräts nicht ändern. ** Da es sich um einen Affen-Patch handelt, seien Sie beim Upgrade vorsichtig. ** ** **

Recommended Posts

Versuchen Sie, die Dateiansicht von TortoiseHg ein wenig zu ändern
Lassen Sie uns die Dateiansicht von TortoiseHg etwas weiter ändern
Zeigen Sie den vollständigen Pfad (absoluten Pfad) einer Datei in einem Verzeichnis in Linux Bash an
Versuchen Sie, die Datei mit dem Befehl less neu zu schreiben
DJango Memo: Von Anfang an (Erstellen einer Ansicht)
Speichern Sie das Objekt in einer Datei mit pickle
[Achtung] Beachten Sie beim Erstellen eines Binärbilds (1 Bit / Pixel) das Dateiformat!
Abrufen des Dateinamens in einem Ordner mithilfe von glob
Versuchen Sie, eine komprimierte Datei mit Python und zlib zu erstellen
DJango Hinweis: Von Anfang an (mit einer generischen Ansicht)
Versuchen Sie, das Bild in einen separaten Thread zu laden (OpenCV-Python).
Geben Sie das Ausgabeergebnis von sklearn.metrics.classification_report als CSV-Datei aus