Beispiel #1
0
    def __init__(self):
        QtGui.QMainWindow.__init__(self)

        self.active = True
        self.all_binary = ""
        # This is always the same
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        # Line.connect(Line, SIGNAL("textChanged(QString)"), Label, SLOT("setText(QString)"))
        self.ui.hex_source.connect(self.ui.hex_source, QtCore.SIGNAL("textChanged(QString)"), self.input_changed)
        self.ui.hex_source.connect(self.ui.hex_source, QtCore.SIGNAL("returnPressed()"), self.input_calc)
        # self.ui.show_button.connect(self.ui.show_button, QtCore.SIGNAL("clicked()"), self.show_part)
        self.refresh_show_part = Thread(target=self.show_part)
        self.refresh_show_part.start()
Beispiel #2
0
class Main(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)

        self.active = True
        self.all_binary = ""
        # This is always the same
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        # Line.connect(Line, SIGNAL("textChanged(QString)"), Label, SLOT("setText(QString)"))
        self.ui.hex_source.connect(self.ui.hex_source, QtCore.SIGNAL("textChanged(QString)"), self.input_changed)
        self.ui.hex_source.connect(self.ui.hex_source, QtCore.SIGNAL("returnPressed()"), self.input_calc)
        # self.ui.show_button.connect(self.ui.show_button, QtCore.SIGNAL("clicked()"), self.show_part)
        self.refresh_show_part = Thread(target=self.show_part)
        self.refresh_show_part.start()

    def input_calc(self):
        current_input = str(self.ui.hex_source.text())
        try:
            new_input = hex(eval(current_input))
        except:
            print "could not eval this [%s]" % current_input
            new_input = current_input
        self.ui.hex_source.setText(new_input)

    def input_changed(self, text):
        try:
            hex_input = int(str(text), 16)
        except:
            return
        binary_text = bin(hex_input)[2:]
        leading_zeros = "0" * (int(((len(binary_text) / 8) + 1) * 8) - len(binary_text))
        self.all_binary = str("%s%s" % (leading_zeros, binary_text))
        all_separated = ""
        for i in range(len(self.all_binary)):
            if i % 8 == 0:
                all_separated += "|"
            elif i % 4 == 0:
                all_separated += "."
            all_separated += self.all_binary[i]
        all_separated += "|"
        self.ui.binary_value.setText(all_separated)

    def show_part(self):
        while self.active:
            time.sleep(0.3)
            if not self.ui.binary_value.hasSelectedText():
                self.ui.part_value.setText("")
                self.ui.index_range.setText("")
                continue
            all_text = self.ui.binary_value.text()
            bin_text = self.ui.binary_value.selectedText()
            index_start = self.ui.binary_value.selectionStart()
            non_bit_values = 0
            for ch in ["|", "."]:
                non_bit_values += all_text[0:index_start].count(ch)
            index_start -= non_bit_values

            for ch in ["|", "."]:
                if ch in bin_text:
                    bin_text = bin_text.replace(ch, "")
            if len(bin_text) == 0:
                continue

            index_end = index_start + len(bin_text)

            self.ui.index_range.setText(
                "[%d:%d]" % (len(self.all_binary) - index_start - 1, len(self.all_binary) - index_end)
            )

            dez_val = int(str(bin_text), 2)
            hex_text = str("%x" % dez_val)
            try:
                asc_text = chr(dez_val)
            except:
                asc_text = ""
            self.ui.part_value.setText(str("0x%s (%d) %s" % (hex_text, dez_val, asc_text)))

    def quit(self):
        self.active = False
        self.refresh_show_part.join(0.5)