Beispiel #1
0
 def assert_text(self):
     if self.file_name:
         with open(self.file_name, encoding=get_configs()['default_file_encoding']) as f:
             if assert_text(self.text.text(), f.read()):
                 self.not_save.emit()
             else:
                 self.save.emit()
     else:
         if assert_text(self.text.text().replace('\r', ''), get_configs()['init_text']):
             self.not_save.emit()
         else:
             self.save.emit()
Beispiel #2
0
 def __init__(self):
     QMainWindow.__init__(self)
     add_diff()
     self.tray = set_tray_items(self)
     self.tray.menu.triggered[QAction].connect(self.MenuEvents)
     # self.assert_activate()
     self.untitled_number = 0
     self.not_save_list = []
     self.setWindowTitle(get_configs()['init_title'])
     self.tip = QStatusBar()
     self.setStatusBar(self.tip)
     self.base_tkpy = BaseTkPy3()
     self.windows_mdi = self.base_tkpy.mdi
     self.line_count_button = LineCountButton(self.windows_mdi)
     self.setCentralWidget(self.base_tkpy)
     self.Menu: QMenuBar = self.menuBar()
     self.FileMenu = self.Menu.addMenu(_('文件'))
     self.EditMenu = self.Menu.addMenu(_('编辑'))
     self.SelectMenu = self.Menu.addMenu(_('选择'))
     self.ViewMenu = self.Menu.addMenu(_('查看'))
     self.GoToMenu = self.Menu.addMenu(_('转到'))
     self.RunMenu = self.Menu.addMenu(_('运行'))
     self.TerminalMenu = self.Menu.addMenu(_('终端'))
     self.HelpMenu = self.Menu.addMenu(_('帮助'))
     # ----------------------------------------
     self.FileToolsBar = self.addToolBar(_('文件'))
     self.RunToolsBar = self.addToolBar(_('运行'))
     self.HelpToolsBar = self.addToolBar(_('帮助'))
     self.tip.addPermanentWidget(self.line_count_button)
     self.get_start()
Beispiel #3
0
 def save():
     sub.setWindowTitle(
         edit.file_name
         or get_configs()['new_file_title'] + ' ' + str(sub.number))
     if sub.widget().file_name in self.not_save_list:
         self.not_save_list.remove(sub.widget().file_name)
     sub.setSave(True)
Beispiel #4
0
 def not_save():
     sub.setWindowTitle(
         '*' + (edit.file_name or get_configs()['new_file_title'] +
                ' ' + str(sub.number)) + '*')
     if sub.widget().file_name not in self.not_save_list:
         self.not_save_list.append(sub.widget().file_name)
     sub.setSave(False)
Beispiel #5
0
 def open(self, file_name: str):
     with open(file_name, encoding=get_configs()['default_file_encoding']) as f:
         self.text.setText(f.read())
     self.file_name = file_name
     self.setWindowTitle(self.file_name)
     self.text.setMarginWidth(
         0, len(str(len(self.text.text().split('\n')))) * 20)
Beispiel #6
0
 def assert_activate_code(self, code: str = ""):
     if code in get_configs()['activate_codes'] + get_configs(
     )['permanent_activation_codes']:
         self.activate_button.setWhatsThis('点击<b>此处</b>激活TkPy3')
         self.activate_button.setDisabled(False)
         if code in get_configs()['permanent_activation_codes']:
             self.permanent_activation = True
     elif not code.replace('-', ''):
         self.activate_button.setWhatsThis('请输入激活码')
         self.activate_button.setDisabled(True)
     elif len(code) != len('AAAA-AAAA-AAAA-AAAA'):
         self.activate_button.setWhatsThis('激活码输入位数不对')
         self.activate_button.setDisabled(True)
     else:
         self.activate_button.setWhatsThis('长度合适,请按激活按钮')
         self.activate_button.setDisabled(True)
Beispiel #7
0
 def save_file(self):
     text = self.text_view.toPlainText()
     file_name, ok = QFileDialog.getSaveFileName(self, '保存', '',
                                                 'Html文件 (*.html)')
     if ok:
         with open(file_name,
                   'w',
                   encoding=get_configs()['default_file_encoding']) as f:
             f.write(text)
Beispiel #8
0
 def start_transformation(self):
     if not self.file_name:
         QMessageBox.information(self, '提示', '还未选择文件。')
     with open(self.file_name,
               encoding=get_configs()['default_file_encoding']) as f:
         text = f.read()
     html = to_html(text)
     self.text_view.setPlainText(html)
     self.html_view.setHtml(html)
     self.save_button.setDisabled(False)
Beispiel #9
0
 def save_file(self, file_name: str):
     try:
         with open(file_name, 'w', encoding=get_configs()['default_file_encoding']) as f:
             f.write(self.text.text())
     except PermissionError:
         QMessageBox.critical(self, '错误', '无权利访问文件。', QMessageBox.Ok)
     else:
         self.file_name = file_name
         self.setWindowTitle(self.file_name)
         self.assert_text()
Beispiel #10
0
 def __init__(self):
     QDialog.__init__(self)
     if not get_configs()['activate_codes']:
         random_activation_codes()
     self.setWindowTitle('激活TkPy3')
     self.permanent_activation = False
     self.layout = QGridLayout()
     self.view = QStackedWidget()
     self.activate = QWidget()
     self.evaluate = QWidget()
     self.get_activate_code = QPushButton('没有激活码?获取它!')
     self.activate_button = QPushButton()
     self.init_ui()
Beispiel #11
0
    def assert_activate(self, reactivate=False):
        if not get_configs()['is_activate'] or reactivate:
            permanent_activation = self.open_activate_window()
            if not get_configs()['is_activate']:
                QMessageBox.critical(self, _('错误'), _('TkPy3未激活,即将退出TkPy3。'))
                sys.exit()
            else:
                add_config('is_activate', True)
                if not permanent_activation:
                    add_config(
                        'end_activate_day',
                        datetime.date.today() +
                        datetime.timedelta(days=random.randint(5, 40)))
                else:
                    add_config('end_activate_day', True)

        elif isinstance(get_configs()['end_activate_day'], bool):
            add_config('is_activate', True)

        elif get_configs()['end_activate_day'] > datetime.date.today():
            add_config('is_activate', False)
            self.assert_activate()
        random_activation_codes()
Beispiel #12
0
def main():
    if get_configs()['test_mode']:
        BASE_DIR_DIRNAME = os.path.dirname(BASE_DIR)
        sys.path.append(BASE_DIR_DIRNAME)
    server = HelpServer()
    server.start()
    app = QApplication(sys.argv)
    tkpy3_setup(app)
    widget = MainWindow()
    widget.show()
    app.setQuitOnLastWindowClosed(False)
    return_code = app.exec_()
    server.terminate()
    return return_code
Beispiel #13
0
 def start_activate_code_game(self):
     max_score = random.randint(20, 40)
     res = QMessageBox.question(
         self, '如何获取激活码', f'获取激活码规则:\n 玩飞船大战游戏,分数达到{max_score}分时即可获取激活码。')
     if res == QMessageBox.No:
         return
     self.setDisabled(True)
     score = run_activate_game()
     self.setDisabled(False)
     if score >= max_score:
         code = random.choice(get_configs()['activate_codes'])
         time.sleep(1)
         QMessageBox.information(self, '提示',
                                 f'激活码获取成功,激活码是{code},将自动为您将激活码复制到剪贴板。')
         clipboard = QApplication.clipboard()
         clipboard.clear()
         clipboard.setText(code)
Beispiel #14
0
    def add_editor_window(self, event=TkPyEventType()):
        if event.text() == 'TkPy3 Event type':
            file_name = ""
            self.untitled_number += 1
        else:
            file_name = event.text()

        def not_save():
            sub.setWindowTitle(
                '*' + (edit.file_name or get_configs()['new_file_title'] +
                       ' ' + str(sub.number)) + '*')
            if sub.widget().file_name not in self.not_save_list:
                self.not_save_list.append(sub.widget().file_name)
            sub.setSave(False)

        def save():
            sub.setWindowTitle(
                edit.file_name
                or get_configs()['new_file_title'] + ' ' + str(sub.number))
            if sub.widget().file_name in self.not_save_list:
                self.not_save_list.remove(sub.widget().file_name)
            sub.setSave(True)

        def remove():
            save()
            self.windows_mdi.removeSubWindow(sub)

        sub = EditSubWindow()
        subMenu = sub.systemMenu()
        self.addSubMenu(subMenu)
        sub.setWindowState(Qt.WindowMaximized)
        sub.setNumber(self.untitled_number)
        sub.resize(700, 500)
        sub.setWindowTitle(
            get_configs()['new_file_title'] + ' ' +
            str(sub.number) if not file_name else os.path.abspath(file_name))
        sub.setWindowIcon(QIcon(pixmaps["python_file"]))
        edit = BaseEditor()
        if file_name:
            edit.open(file_name)
        sub.setWidget(edit)
        edit.not_save.connect(not_save)
        edit.save.connect(save)
        self.windows_mdi.addSubWindow(sub)
        sub.close_remove.connect(remove)
        sub.show()
Beispiel #15
0
def set_style(app: QApplication):
    return app.setStyle(QStyleFactory.create(get_configs()['window_style']))
Beispiel #16
0
def get_pygments_stylemap():
    pygments_stylemap = list(STYLE_MAP.keys())
    pygments_stylemap.remove(get_configs()['highlight_style'])
    pygments_stylemap.insert(0, get_configs()['highlight_style'])
    return pygments_stylemap
Beispiel #17
0
 def get_start(self):
     self.text.setFont(QFont(get_configs()['font_name']))
     self.edit_frame.addWidget(self.text)
     self.text.setText(get_configs()['init_text'])
     self.setLayout(self.edit_frame)
     self.text.key_pressed.connect(self.assert_text)
Beispiel #18
0
    chars = list('QWERTYUIOPASDFGHJKLZCVBNM')
    for i in range(4):
        for i in range(4):
            code += random.choice(chars)
        code += '-'
    return code[0:-1]


def random_activation_codes():
    codes = []
    for i in range(5):
        codes.append(get_one_activate_code())
    add_config('activate_codes', codes)


activation_codes = get_configs()['activate_codes']
if activation_codes:
    return_activation_code = random.choice(activation_codes)

if not pygame.image.get_extended():
    raise SystemExit("Sorry, extended image module required")

# game constants
MAX_SHOTS = 2  # most player bullets onscreen
ALIEN_ODDS = 22  # chances a new alien appears
BOMB_ODDS = 60  # chances a new bomb will drop
ALIEN_RELOAD = 12  # frames between new aliens
SCREENRECT = Rect(0, 0, 640, 480)
SCORE = 0

main_dir = os.path.join(BASE_DIR, 'images', 'game_images')