Skip to content

Commit 973085e

Browse files
committed
增加版本更新检查提醒功能
1 parent d96c22d commit 973085e

File tree

5 files changed

+184
-117
lines changed

5 files changed

+184
-117
lines changed

.gitignore

Lines changed: 0 additions & 8 deletions
This file was deleted.

check_version.py

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
#!/usr/bin/env python
2+
# -*- coding:utf-8 -*-
3+
# @Filename : check_version.py
4+
# @Date : 18-8-20 上午1:52
5+
# @Author : DebuggerX
6+
7+
import configparser
8+
from urllib import request
9+
from json import loads
10+
11+
from PyQt5 import QtGui, QtCore
12+
from PyQt5.QtCore import QThread, pyqtSignal
13+
from PyQt5.QtWidgets import QMessageBox
14+
from tools import msg_box_ui
15+
16+
code = 0.5
17+
ignore_code = 0.0
18+
19+
check_last_version_thread = None
20+
21+
22+
def _check_ignore_version():
23+
config = configparser.ConfigParser()
24+
global ignore_code
25+
# noinspection PyBroadException
26+
try:
27+
config.read('.ignore.cfg')
28+
ignore_code = float(config.get('version', 'code'))
29+
except Exception:
30+
pass
31+
32+
33+
class CheckLastVersion(QThread):
34+
trigger = pyqtSignal(dict)
35+
36+
def run(self):
37+
res_json = None
38+
# noinspection PyBroadException
39+
try:
40+
res = request.urlopen('https://raw.githubusercontent.com/debuggerx01/JSONFormat4Flutter/master/version')
41+
res_json = loads(res.read().decode())
42+
except Exception:
43+
pass
44+
if res_json is not None:
45+
global code
46+
if res_json['code'] > code and res_json['code'] > ignore_code:
47+
self.trigger.emit(res_json)
48+
49+
50+
def check_last_version_handler(json_obj):
51+
res = QMessageBox().information(msg_box_ui, "有新版本更新!", "新版本(v%s)更新内容:\n%s\n\n点击[确定]转跳到下载页,点击[取消]忽略该版本提醒" % (json_obj['code'], json_obj['desc']),
52+
QMessageBox.Ok,
53+
QMessageBox.Cancel)
54+
if res == QMessageBox.Cancel:
55+
config = configparser.ConfigParser()
56+
config.add_section('version')
57+
config.set('version', 'code', str(json_obj['code']))
58+
with open('.ignore.cfg', 'w') as configfile:
59+
config.write(configfile)
60+
else:
61+
QtGui.QDesktopServices.openUrl(QtCore.QUrl('https://github.com/debuggerx01/JSONFormat4Flutter/releases'))
62+
63+
64+
def check_version():
65+
_check_ignore_version()
66+
67+
global check_last_version_thread
68+
check_last_version_thread = CheckLastVersion()
69+
check_last_version_thread.trigger.connect(check_last_version_handler)
70+
check_last_version_thread.start()
71+
return code

formatter.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
from mainwindow import *
99
from tools import *
10+
from check_version import *
1011

1112
# 第三方库 用于解决跨平台的复制粘贴和复制的文本带bom问题
1213
import pyperclip
@@ -251,4 +252,6 @@ def custom_ui():
251252
# 在生成代码的基础上再修改UI以及添加逻辑
252253
custom_ui()
253254
widget.show()
255+
code = check_version()
256+
widget.setWindowTitle(widget.windowTitle().replace('code',str(code)))
254257
sys.exit(app.exec_())

mainwindow.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ def setupUi(self, MainWindow):
7878

7979
def retranslateUi(self, MainWindow):
8080
_translate = QtCore.QCoreApplication.translate
81-
MainWindow.setWindowTitle(_translate("MainWindow", "JSONFormat4Flutter(v0.5)"))
81+
MainWindow.setWindowTitle(_translate("MainWindow", "JSONFormat4Flutter(vcode)"))
8282
self.btn_format.setText(_translate("MainWindow", "格式化"))
8383
self.btn_copy.setText(_translate("MainWindow", "复制"))
8484
self.btn_generate.setText(_translate("MainWindow", "生成Bean"))

mainwindow.ui

Lines changed: 109 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -1,112 +1,113 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<ui version="4.0">
3-
<class>MainWindow</class>
4-
<widget class="QMainWindow" name="MainWindow">
5-
<property name="geometry">
6-
<rect>
7-
<x>0</x>
8-
<y>0</y>
9-
<width>927</width>
10-
<height>716</height>
11-
</rect>
12-
</property>
13-
<property name="sizePolicy">
14-
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
15-
<horstretch>0</horstretch>
16-
<verstretch>0</verstretch>
17-
</sizepolicy>
18-
</property>
19-
<property name="minimumSize">
20-
<size>
21-
<width>800</width>
22-
<height>600</height>
23-
</size>
24-
</property>
25-
<property name="maximumSize">
26-
<size>
27-
<width>16777215</width>
28-
<height>16777215</height>
29-
</size>
30-
</property>
31-
<property name="windowTitle">
32-
<string>JSONFormat4Flutter(v0.5)</string>
33-
</property>
34-
<property name="windowIcon">
35-
<iconset resource="logo.qrc">
36-
<normaloff>:/img/logo.png</normaloff>:/img/logo.png</iconset>
37-
</property>
38-
<widget class="QWidget" name="centralWidget">
39-
<layout class="QVBoxLayout" name="verticalLayout">
40-
<item>
41-
<widget class="QFrame" name="frame">
42-
<property name="frameShape">
43-
<enum>QFrame::StyledPanel</enum>
44-
</property>
45-
<property name="frameShadow">
46-
<enum>QFrame::Raised</enum>
47-
</property>
48-
<layout class="QVBoxLayout" name="verticalLayout_4">
49-
<item>
50-
<widget class="QSplitter" name="splitter">
51-
<property name="orientation">
52-
<enum>Qt::Horizontal</enum>
53-
</property>
54-
<widget class="QWidget" name="layoutWidget">
55-
<layout class="QVBoxLayout" name="verticalLayout_3">
56-
<property name="sizeConstraint">
57-
<enum>QLayout::SetDefaultConstraint</enum>
58-
</property>
59-
<item>
60-
<widget class="QPushButton" name="btn_format">
61-
<property name="text">
62-
<string>格式化</string>
63-
</property>
64-
</widget>
65-
</item>
66-
<item>
67-
<widget class="QTextEdit" name="te_json"/>
68-
</item>
69-
<item>
70-
<widget class="QPushButton" name="btn_copy">
71-
<property name="text">
72-
<string>复制</string>
73-
</property>
74-
</widget>
75-
</item>
76-
</layout>
77-
</widget>
78-
<widget class="QWidget" name="layoutWidget">
79-
<layout class="QVBoxLayout" name="verticalLayout_2">
80-
<item>
81-
<widget class="QPushButton" name="btn_generate">
82-
<property name="text">
83-
<string>生成Bean</string>
84-
</property>
85-
</widget>
86-
</item>
87-
<item>
88-
<widget class="QTableWidget" name="tv_fields">
89-
<property name="columnCount">
90-
<number>3</number>
91-
</property>
92-
<column/>
93-
<column/>
94-
<column/>
95-
</widget>
96-
</item>
97-
</layout>
98-
</widget>
3+
<class>MainWindow</class>
4+
<widget class="QMainWindow" name="MainWindow">
5+
<property name="geometry">
6+
<rect>
7+
<x>0</x>
8+
<y>0</y>
9+
<width>927</width>
10+
<height>716</height>
11+
</rect>
12+
</property>
13+
<property name="sizePolicy">
14+
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
15+
<horstretch>0</horstretch>
16+
<verstretch>0</verstretch>
17+
</sizepolicy>
18+
</property>
19+
<property name="minimumSize">
20+
<size>
21+
<width>800</width>
22+
<height>600</height>
23+
</size>
24+
</property>
25+
<property name="maximumSize">
26+
<size>
27+
<width>16777215</width>
28+
<height>16777215</height>
29+
</size>
30+
</property>
31+
<property name="windowTitle">
32+
<string>JSONFormat4Flutter(vcode)</string>
33+
</property>
34+
<property name="windowIcon">
35+
<iconset resource="logo.qrc">
36+
<normaloff>:/img/logo.png</normaloff>:/img/logo.png
37+
</iconset>
38+
</property>
39+
<widget class="QWidget" name="centralWidget">
40+
<layout class="QVBoxLayout" name="verticalLayout">
41+
<item>
42+
<widget class="QFrame" name="frame">
43+
<property name="frameShape">
44+
<enum>QFrame::StyledPanel</enum>
45+
</property>
46+
<property name="frameShadow">
47+
<enum>QFrame::Raised</enum>
48+
</property>
49+
<layout class="QVBoxLayout" name="verticalLayout_4">
50+
<item>
51+
<widget class="QSplitter" name="splitter">
52+
<property name="orientation">
53+
<enum>Qt::Horizontal</enum>
54+
</property>
55+
<widget class="QWidget" name="layoutWidget">
56+
<layout class="QVBoxLayout" name="verticalLayout_3">
57+
<property name="sizeConstraint">
58+
<enum>QLayout::SetDefaultConstraint</enum>
59+
</property>
60+
<item>
61+
<widget class="QPushButton" name="btn_format">
62+
<property name="text">
63+
<string>格式化</string>
64+
</property>
65+
</widget>
66+
</item>
67+
<item>
68+
<widget class="QTextEdit" name="te_json"/>
69+
</item>
70+
<item>
71+
<widget class="QPushButton" name="btn_copy">
72+
<property name="text">
73+
<string>复制</string>
74+
</property>
75+
</widget>
76+
</item>
77+
</layout>
78+
</widget>
79+
<widget class="QWidget" name="layoutWidget">
80+
<layout class="QVBoxLayout" name="verticalLayout_2">
81+
<item>
82+
<widget class="QPushButton" name="btn_generate">
83+
<property name="text">
84+
<string>生成Bean</string>
85+
</property>
86+
</widget>
87+
</item>
88+
<item>
89+
<widget class="QTableWidget" name="tv_fields">
90+
<property name="columnCount">
91+
<number>3</number>
92+
</property>
93+
<column/>
94+
<column/>
95+
<column/>
96+
</widget>
97+
</item>
98+
</layout>
99+
</widget>
100+
</widget>
101+
</item>
102+
</layout>
103+
</widget>
104+
</item>
105+
</layout>
99106
</widget>
100-
</item>
101-
</layout>
102-
</widget>
103-
</item>
104-
</layout>
105-
</widget>
106-
</widget>
107-
<layoutdefault spacing="6" margin="11"/>
108-
<resources>
109-
<include location="logo.qrc"/>
110-
</resources>
111-
<connections/>
107+
</widget>
108+
<layoutdefault spacing="6" margin="11"/>
109+
<resources>
110+
<include location="logo.qrc"/>
111+
</resources>
112+
<connections/>
112113
</ui>

0 commit comments

Comments
 (0)