Skip to content

Commit 76669aa

Browse files
committed
v1.7
1. Rename the add-in from TkinterDesigner to Vb6Tkinter. 2. Add check update feature. 3. If only Python3 code is required, generate better Python3-style code. 4. By default, disable the option "Compatibile with Python 2/3 code".
1 parent 8a2b8c4 commit 76669aa

40 files changed

+1424
-705
lines changed

Bin/TkinterDesigner.dll

-1.09 MB
Binary file not shown.

Bin/TkinterDesigner.exp

-1 KB
Binary file not shown.

Bin/TkinterDesigner.lib

-2.68 KB
Binary file not shown.
-1.81 MB
Binary file not shown.

Bin/Vb6_SP6_Fix_for_Win7_and_Upper.txt

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

Bin/regtlib.exe

-48 KB
Binary file not shown.

Common.bas

Lines changed: 78 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Attribute VB_Name = "Common"
22
Option Explicit
33

4-
Public VBE As VBE
4+
Public VbeInst As VBE
55

66
Private Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
77
Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
@@ -66,6 +66,12 @@ Public g_Comps() As Object '
6666

6767
Public g_bUnicodePrefixU As Boolean '是否在UNICODE字符串前加前缀u
6868
Public g_PythonExe As String '用于GUI预览,保存python.exe全路径
69+
Public g_AppVerString As String
70+
71+
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
72+
Public Const OFFICIAL_SITE As String = "https://github.com/cdhigh/Vb6Tkinter"
73+
Public Const OFFICIAL_RELEASES As String = "https://github.com/cdhigh/Vb6Tkinter/releases"
74+
Public Const OFFICIAL_UPDATE_INFO As String = "https://api.github.com/repos/cdhigh/Vb6Tkinter/releases"
6975

7076
'PYTHON中UNICODE字符串前缀的处理函数,如果字符串中存在双字节字符,则根据选项增加适当的前缀
7177
'否则,只是简单的增加单引号,即使空串也增加一对单引号
@@ -403,3 +409,74 @@ Public Sub SortWidgets(ByRef aCompsSorted() As Object, ByVal cnt As Long)
403409
Next
404410

405411
End Sub
412+
413+
'将版本号字符串前面和后面非数字部分都删除掉,比如:"v1.6.8 test" 将返回 "1.6.8"
414+
Private Function purifyVerStr(txt As String) As String
415+
Dim maxCnt As Integer, idx As Integer, startIdx As Integer, endIdx As Integer
416+
Dim ch As String
417+
txt = Trim(txt)
418+
maxCnt = Len(txt)
419+
startIdx = 1
420+
endIdx = maxCnt
421+
'开头部分
422+
For idx = 1 To maxCnt
423+
ch = Mid(txt, idx, 1)
424+
If (ch >= "0") And (ch <= "9") Then
425+
startIdx = idx
426+
Exit For
427+
End If
428+
Next
429+
'结尾部分
430+
For idx = maxCnt To 1 Step -1
431+
ch = Mid(txt, idx, 1)
432+
If (ch >= "0") And (ch <= "9") Then
433+
endIdx = idx
434+
Exit For
435+
End If
436+
Next
437+
438+
If startIdx <= endIdx Then
439+
purifyVerStr = Mid(txt, startIdx, endIdx - startIdx + 1)
440+
Else
441+
purifyVerStr = ""
442+
End If
443+
End Function
444+
445+
'比较两个版本号,确定新版本号是否比老版本号更新,
446+
'版本号格式为:1.1.0
447+
Public Function isVersionNewerThan(newVer As String, currVer As String) As Boolean
448+
Dim newArr As Variant, currArr As Variant, idx As Integer, maxCnt As Integer
449+
Dim vn As Integer, vc As Integer
450+
newVer = purifyVerStr(newVer)
451+
currVer = purifyVerStr(currVer)
452+
If Len(newVer) = 0 Or Len(currVer) = 0 Then
453+
isVersionNewerThan = False
454+
Exit Function
455+
End If
456+
457+
newArr = Split(newVer, ".")
458+
currArr = Split(currVer, ".")
459+
maxCnt = UBound(newArr)
460+
If UBound(currArr) < maxCnt Then '两个数组最小的一个
461+
maxCnt = UBound(currArr)
462+
End If
463+
464+
For idx = 0 To maxCnt
465+
vn = Val(newArr(idx))
466+
vc = Val(currArr(idx))
467+
If vn > vc Then
468+
isVersionNewerThan = True
469+
Exit Function
470+
ElseIf vn < vc Then
471+
isVersionNewerThan = False
472+
Exit Function
473+
End If
474+
Next
475+
476+
'如果前面都一样,则长的一个为大
477+
If UBound(newArr) > UBound(currArr) Then
478+
isVersionNewerThan = True
479+
Else
480+
isVersionNewerThan = False
481+
End If
482+
End Function

Connect.cls

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Attribute VB_GlobalNameSpace = False
1111
Attribute VB_Creatable = True
1212
Attribute VB_PredeclaredId = False
1313
Attribute VB_Exposed = True
14-
Attribute VB_Description = "TkinterDesigner"
14+
Attribute VB_Description = "Vb6Tkinter"
1515
Option Explicit
1616

1717
Private mcbMenuItem As Office.CommandBarControl
@@ -41,7 +41,7 @@ Private Sub IDTExtensibility_OnStartupComplete(custom() As Variant)
4141
End Sub
4242

4343
Private Sub IDTExtensibility_OnConnection(ByVal VBInst As Object, ByVal ConnectMode As VBIDE.vbext_ConnectMode, ByVal AddInInst As VBIDE.AddIn, custom() As Variant)
44-
Set Common.VBE = VBInst
44+
Set VbeInst = VBInst
4545

4646
If ConnectMode = vbext_cm_Startup Or ConnectMode = vbext_cm_AfterStartup Then
4747
AddToMenu (App.Title & "(&T)")
@@ -84,14 +84,15 @@ End Sub
8484
'在外接程序菜单下增加一个菜单项
8585
Private Sub AddToMenu(sCaption As String)
8686
Dim cbMenuCommandBar As Office.CommandBarControl
87-
Dim cbMenu
87+
Dim cbMenu As Variant
8888

8989
On Error Resume Next
9090

9191
'察看能否找到外接程序菜单
92-
Set cbMenu = VBE.CommandBars("Add-Ins")
92+
Set cbMenu = VbeInst.CommandBars("外接程序")
93+
If cbMenu Is Nothing Then Set cbMenu = VbeInst.CommandBars("Add-Ins")
9394
If cbMenu Is Nothing Then Exit Sub
94-
95+
9596
'添加它到命令栏
9697
Set cbMenuCommandBar = cbMenu.Controls.Add(msoControlButton)
9798
If cbMenuCommandBar Is Nothing Then Exit Sub
@@ -101,9 +102,13 @@ Private Sub AddToMenu(sCaption As String)
101102
'设置标题
102103
cbMenuCommandBar.Caption = sCaption
103104

105+
'DoEvents
106+
'Clipboard.SetData LoadResPicture(101, vbResBitmap)
107+
'cbMenuCommandBar.PasteFace
108+
'DoEvents
109+
104110
Set mcbMenuItem = cbMenuCommandBar
105-
Set MenuHandler = VBE.Events.CommandBarEvents(mcbMenuItem)
106-
111+
Set MenuHandler = VbeInst.Events.CommandBarEvents(mcbMenuItem)
107112
End Sub
108113

109114
'在工具栏增加一个图标
@@ -113,26 +118,27 @@ Private Sub AddToToolBox(sCaption As String)
113118

114119
'察看能否找到标准工具栏
115120
On Error Resume Next
116-
Set cbStandard = VBE.CommandBars("标准")
117-
If Err.Number <> 0 Then Set cbStandard = VBE.CommandBars("Standard")
118-
121+
Set cbStandard = VbeInst.CommandBars("标准")
122+
If cbStandard Is Nothing Then Set cbStandard = VbeInst.CommandBars("Standard")
123+
If cbStandard Is Nothing Then Set cbStandard = VbeInst.CommandBars(2)
119124
If cbStandard Is Nothing Then Exit Sub
120125

121126
Err.Clear
122-
On Error GoTo AddToAddInToolboxErr
127+
'On Error GoTo AddToAddInToolboxErr
128+
On Error Resume Next
123129

124130
'添加它到工具栏
125131
Set cbToolboxCommandBar = cbStandard.Controls.Add(msoControlButton, , , cbStandard.Controls.Count)
126132
cbToolboxCommandBar.BeginGroup = True
127133
cbToolboxCommandBar.Caption = sCaption
128134
Set mcbToolBoxItem = cbToolboxCommandBar
135+
DoEvents
129136
Clipboard.SetData LoadResPicture(101, vbResBitmap)
130137
cbToolboxCommandBar.PasteFace
138+
DoEvents
131139

132-
Set ToolBoxHandler = VBE.Events.CommandBarEvents(mcbToolBoxItem)
133-
134-
AddToAddInToolboxErr:
135-
140+
Set ToolBoxHandler = VbeInst.Events.CommandBarEvents(mcbToolBoxItem)
141+
'AddToAddInToolboxErr:
136142
End Sub
137143

138144
Private Sub MenuHandler_Click(ByVal CommandBarControl As Object, handled As Boolean, CancelDefault As Boolean)

0 commit comments

Comments
 (0)