mirror of
https://github.com/QB64Official/qb64.git
synced 2024-07-05 01:50:25 +00:00
Adds vertical scrollbar to Watch List panel.
This commit is contained in:
parent
014add19d7
commit
5829744cc4
|
@ -6289,7 +6289,9 @@ SUB DebugMode
|
|||
SCREEN , , 3, 0
|
||||
|
||||
TYPE vWatchPanelType
|
||||
AS INTEGER x, y, w, h, firstVisible
|
||||
AS INTEGER x, y, w, h, firstVisible, vBarElevator
|
||||
AS _BYTE draggingPanel, resizingPanel, closingPanel
|
||||
AS _BYTE draggingVBar, draggingHBar
|
||||
END TYPE
|
||||
STATIC vWatchPanel AS vWatchPanelType
|
||||
|
||||
|
@ -6302,8 +6304,10 @@ SUB DebugMode
|
|||
client& = 0
|
||||
|
||||
IF LEN(variableWatchList$) THEN
|
||||
totalVisibleVariables = LEN(variableWatchList$) \ 4
|
||||
totalVisibleVariables = (LEN(variableWatchList$) - 4) \ 4
|
||||
vWatchPanel.h = totalVisibleVariables + 2
|
||||
IF vWatchPanel.h > idewy - 10 THEN vWatchPanel.h = idewy - 10
|
||||
IF vWatchPanel.h < 5 THEN vWatchPanel.h = 5
|
||||
ELSE
|
||||
totalVisibleVariables = 0
|
||||
vWatchPanel.h = 5
|
||||
|
@ -6497,8 +6501,8 @@ SUB DebugMode
|
|||
(mY >= vWatchPanel.y AND mY <= vWatchPanel.y + vWatchPanel.h) THEN
|
||||
vWatchPanel.firstVisible = vWatchPanel.firstVisible + _MOUSEWHEEL * 3
|
||||
IF vWatchPanel.firstVisible < 1 THEN vWatchPanel.firstVisible = 1
|
||||
IF vWatchPanel.firstVisible > (LEN(variableWatchList$) \ 4) THEN
|
||||
vWatchPanel.firstVisible = (LEN(variableWatchList$) \ 4)
|
||||
IF vWatchPanel.firstVisible > ((LEN(variableWatchList$) - 4) \ 4) THEN
|
||||
vWatchPanel.firstVisible = ((LEN(variableWatchList$) - 4) \ 4)
|
||||
END IF
|
||||
ELSE
|
||||
idecy = idecy + _MOUSEWHEEL * 3
|
||||
|
@ -6547,16 +6551,33 @@ SUB DebugMode
|
|||
mouseDownOnX = mX
|
||||
mouseDownOnY = mY
|
||||
IF LEN(variableWatchList$) > 0 AND _
|
||||
(mX >= vWatchPanel.x + vWatchPanel.w - 3) AND (mX <= vWatchPanel.x + vWatchPanel.w - 1) AND _
|
||||
(mY = vWatchPanel.y) THEN
|
||||
vWatchPanel.closingPanel = -1
|
||||
ELSEIF LEN(variableWatchList$) > 0 AND _
|
||||
(mX = vWatchPanel.x + vWatchPanel.w - 1) AND _
|
||||
(mY = vWatchPanel.vBarElevator) THEN
|
||||
vWatchPanel.draggingVBar = -1
|
||||
ELSEIF LEN(variableWatchList$) > 0 AND _
|
||||
(mX = vWatchPanel.x + vWatchPanel.w - 1) AND _
|
||||
(mY = vWatchPanel.y + vWatchPanel.h - 1) THEN
|
||||
resizingPanel = -1
|
||||
vWatchPanel.resizingPanel = -1
|
||||
ELSEIF LEN(variableWatchList$) > 0 AND _
|
||||
(mX >= vWatchPanel.x AND mX <= vWatchPanel.x + vWatchPanel.w) AND _
|
||||
(mY >= vWatchPanel.y AND mY <= vWatchPanel.y + vWatchPanel.h) THEN
|
||||
draggingPanel = -1
|
||||
vWatchPanel.draggingPanel = -1
|
||||
IF timeElapsedSince(lastPanelClick!) < .3 THEN
|
||||
'Double-click on watch list
|
||||
vWatchPanel.draggingPanel = 0
|
||||
mouseDown = 0
|
||||
GOTO requestVariableWatch
|
||||
END IF
|
||||
lastPanelClick! = TIMER
|
||||
ELSE
|
||||
draggingPanel = 0
|
||||
resizingPanel = 0
|
||||
vWatchPanel.draggingPanel = 0
|
||||
vWatchPanel.resizingPanel = 0
|
||||
vWatchPanel.closingPanel = 0
|
||||
vWatchPanel.draggingVBar = 0
|
||||
END IF
|
||||
|
||||
IF mX = idewx THEN
|
||||
|
@ -6616,39 +6637,56 @@ SUB DebugMode
|
|||
END IF
|
||||
|
||||
vWatchPanelLimit = idewy - 6
|
||||
IF draggingPanel THEN
|
||||
IF vWatchPanel.draggingPanel THEN
|
||||
vWatchPanel.x = vWatchPanel.x - (mouseDownOnX - mX)
|
||||
vWatchPanel.y = vWatchPanel.y - (mouseDownOnY - mY)
|
||||
|
||||
IF vWatchPanel.x < 2 THEN vWatchPanel.x = 2
|
||||
IF vWatchPanel.x + vWatchPanel.w > idewx - 2 THEN vWatchPanel.x = idewx - vWatchPanel.w - 2
|
||||
IF vWatchPanel.x + vWatchPanel.w > idewx - 1 THEN vWatchPanel.x = idewx - vWatchPanel.w - 1
|
||||
IF vWatchPanel.y < 3 THEN vWatchPanel.y = 3
|
||||
IF vWatchPanel.y > vWatchPanelLimit - (vWatchPanel.h + 1) THEN vWatchPanel.y = vWatchPanelLimit - (vWatchPanel.h + 1)
|
||||
IF vWatchPanel.y > vWatchPanelLimit - (vWatchPanel.h - 1) THEN vWatchPanel.y = vWatchPanelLimit - (vWatchPanel.h - 1)
|
||||
mouseDownOnX = mX
|
||||
mouseDownOnY = mY
|
||||
GOSUB UpdateDisplay
|
||||
ELSEIF resizingPanel THEN
|
||||
ELSEIF vWatchPanel.resizingPanel THEN
|
||||
vWatchPanel.w = vWatchPanel.w + (mX - mouseDownOnX)
|
||||
vWatchPanel.h = vWatchPanel.h + (mY - mouseDownOnY)
|
||||
|
||||
IF vWatchPanel.w < 40 THEN vWatchPanel.w = 40
|
||||
IF vWatchPanel.w > idewx - 12 THEN vWatchPanel.w = idewx - 12
|
||||
IF vWatchPanel.x + vWatchPanel.w > idewx - 2 THEN
|
||||
vWatchPanel.w = (idewx - 2) - vWatchPanel.x
|
||||
IF vWatchPanel.x + vWatchPanel.w > idewx - 1 THEN
|
||||
vWatchPanel.w = (idewx - 1) - vWatchPanel.x
|
||||
END IF
|
||||
IF vWatchPanel.y + vWatchPanel.h > vWatchPanelLimit THEN
|
||||
vWatchPanel.h = vWatchPanelLimit - (vWatchPanel.y)
|
||||
vWatchPanel.h = vWatchPanelLimit - (vWatchPanel.y - 1)
|
||||
END IF
|
||||
IF vWatchPanel.h < 5 THEN vWatchPanel.h = 5
|
||||
IF vWatchPanel.h > idewy - 10 THEN vWatchPanel.h = idewy - 10
|
||||
mouseDownOnX = mX
|
||||
mouseDownOnY = mY
|
||||
GOSUB UpdateDisplay
|
||||
ELSEIF vWatchPanel.draggingVBar THEN
|
||||
vWatchPanel.firstVisible = INT(map(mY, vWatchPanel.y + 2, vWatchPanel.y + vWatchPanel.h - 2, 1, totalVisibleVariables))
|
||||
IF vWatchPanel.firstVisible < 1 THEN vWatchPanel.firstVisible = 1
|
||||
IF vWatchPanel.firstVisible > totalVisibleVariables THEN
|
||||
vWatchPanel.firstVisible = totalVisibleVariables
|
||||
END IF
|
||||
GOSUB UpdateDisplay
|
||||
END IF
|
||||
END IF
|
||||
ELSE
|
||||
IF draggingPanel THEN draggingPanel = 0: mouseDown = 0
|
||||
IF resizingPanel THEN resizingPanel = 0: mouseDown = 0
|
||||
IF vWatchPanel.draggingPanel THEN vWatchPanel.draggingPanel = 0: mouseDown = 0
|
||||
IF vWatchPanel.resizingPanel THEN vWatchPanel.resizingPanel = 0: mouseDown = 0
|
||||
IF vWatchPanel.closingPanel AND (mX = mouseDownOnX AND mY = mouseDownOnY) THEN
|
||||
vWatchPanel.closingPanel = 0
|
||||
mouseDown = 0
|
||||
variableWatchList$ = ""
|
||||
FOR i = 1 TO totalVariablesCreated
|
||||
usedVariableList(i).watch = 0
|
||||
NEXT
|
||||
GOSUB UpdateDisplay
|
||||
END IF
|
||||
IF vWatchPanel.draggingVBar THEN vWatchPanel.draggingVBar = 0: mouseDown = 0
|
||||
IF mouseDown THEN
|
||||
mouseDown = 0
|
||||
draggingVThumb = 0
|
||||
|
@ -6717,8 +6755,10 @@ SUB DebugMode
|
|||
mouseDown = 0
|
||||
draggingVThumb = 0
|
||||
draggingHThumb = 0
|
||||
draggingPanel = 0
|
||||
resizingPanel = 0
|
||||
vWatchPanel.draggingPanel = 0
|
||||
vWatchPanel.resizingPanel = 0
|
||||
vWatchPanel.closingPanel = 0
|
||||
vWatchPanel.draggingVBar = 0
|
||||
END IF
|
||||
END IF
|
||||
|
||||
|
@ -6841,6 +6881,12 @@ SUB DebugMode
|
|||
ELSE
|
||||
requestVariableWatch:
|
||||
result = idevariablewatchbox(currentSub$)
|
||||
IF LEN(variableWatchList$) THEN
|
||||
totalVisibleVariables = (LEN(variableWatchList$) - 4) \ 4
|
||||
vWatchPanel.h = totalVisibleVariables + 2
|
||||
IF vWatchPanel.h > idewy - 10 THEN vWatchPanel.h = idewy - 10
|
||||
IF vWatchPanel.h < 5 THEN vWatchPanel.h = 5
|
||||
END IF
|
||||
PCOPY 3, 0: SCREEN , , 3, 0
|
||||
WHILE _MOUSEINPUT: WEND
|
||||
GOSUB UpdateDisplay
|
||||
|
@ -7026,7 +7072,7 @@ SUB DebugMode
|
|||
|
||||
'request variables
|
||||
IF LEN(variableWatchList$) THEN
|
||||
temp$ = variableWatchList$
|
||||
temp$ = MID$(variableWatchList$, 5)
|
||||
DO WHILE LEN(temp$)
|
||||
tempIndex& = CVL(LEFT$(temp$, 4))
|
||||
temp$ = MID$(temp$, 5)
|
||||
|
@ -7150,7 +7196,7 @@ SUB DebugMode
|
|||
END IF
|
||||
END SELECT
|
||||
|
||||
IF draggingPanel = 0 THEN _LIMIT 100 ELSE _LIMIT 1000
|
||||
_LIMIT 100
|
||||
LOOP
|
||||
|
||||
WHILE _MOUSEINPUT: WEND
|
||||
|
@ -7192,9 +7238,13 @@ SUB DebugMode
|
|||
RETURN
|
||||
END SUB
|
||||
|
||||
Function map! (value!, minRange!, maxRange!, newMinRange!, newMaxRange!)
|
||||
map! = ((value! - minRange!) / (maxRange! - minRange!)) * (newMaxRange! - newMinRange!) + newMinRange!
|
||||
End Function
|
||||
|
||||
SUB showvWatchPanel (this AS vWatchPanelType, currentScope$)
|
||||
|
||||
totalVisibleVariables = LEN(variableWatchList$) \ 4
|
||||
totalVisibleVariables = (LEN(variableWatchList$) - 4) \ 4
|
||||
fg = 0: bg = 7
|
||||
COLOR fg, bg
|
||||
ideboxshadow this.x, this.y, this.w, this.h
|
||||
|
@ -7205,10 +7255,14 @@ SUB showvWatchPanel (this AS vWatchPanelType, currentScope$)
|
|||
x = LEN(title$) + 2
|
||||
COLOR fg, bg
|
||||
_PRINTSTRING (this.x + (this.w \ 2) - (x - 1) \ 2, this.y), " " + title$ + " "
|
||||
COLOR 15, 4
|
||||
_PRINTSTRING (this.x + this.w - 3, this.y), " x " 'close button
|
||||
COLOR , bg
|
||||
|
||||
y = 0
|
||||
IF LEN(variableWatchList$) THEN
|
||||
temp$ = variableWatchList$
|
||||
longestVarName = CVL(LEFT$(variableWatchList$, 4))
|
||||
temp$ = MID$(variableWatchList$, 5)
|
||||
DO WHILE LEN(temp$)
|
||||
tempIndex& = CVL(LEFT$(temp$, 4))
|
||||
temp$ = MID$(temp$, 5)
|
||||
|
@ -7216,7 +7270,7 @@ SUB showvWatchPanel (this AS vWatchPanelType, currentScope$)
|
|||
IF this.firstVisible > i THEN _CONTINUE
|
||||
y = y + 1
|
||||
IF y > this.h - 2 THEN EXIT DO
|
||||
item$ = usedVariableList(tempIndex&).name + " = "
|
||||
item$ = usedVariableList(tempIndex&).name + SPACE$(longestVarName - LEN(usedVariableList(tempIndex&).name)) + " = "
|
||||
IF usedVariableList(tempIndex&).watch THEN
|
||||
IF usedVariableList(tempIndex&).subfunc = currentScope$ OR usedVariableList(tempIndex&).subfunc = "" THEN
|
||||
item$ = item$ + usedVariableList(tempIndex&).mostRecentValue
|
||||
|
@ -7229,6 +7283,11 @@ SUB showvWatchPanel (this AS vWatchPanelType, currentScope$)
|
|||
_PRINTSTRING (this.x + 2, this.y + y), LEFT$(item$, this.w - 4)
|
||||
LOOP
|
||||
END IF
|
||||
|
||||
y = idevbar(this.x + this.w - 1, this.y + 1, this.h - 2, this.firstVisible, totalVisibleVariables)
|
||||
IF this.draggingVBar = 0 THEN
|
||||
this.vBarElevator = y
|
||||
END IF
|
||||
END SUB
|
||||
|
||||
FUNCTION idevariablewatchbox(currentScope$)
|
||||
|
@ -7430,8 +7489,14 @@ FUNCTION idevariablewatchbox(currentScope$)
|
|||
|
||||
IF K$ = CHR$(27) OR (focus = 4 AND info <> 0) THEN
|
||||
variableWatchList$ = ""
|
||||
longestVarName = 0
|
||||
FOR y = 1 TO totalVisibleVariables
|
||||
IF usedVariableList(varDlgList(y).index).watch THEN
|
||||
IF LEN(usedVariableList(varDlgList(y).index).name) > longestVarName THEN
|
||||
longestVarName = LEN(usedVariableList(varDlgList(y).index).name)
|
||||
IF variableWatchList$ = "" THEN variableWatchList$ = SPACE$(4)
|
||||
MID$(variableWatchList$, 1, 4) = MKL$(longestVarName)
|
||||
END IF
|
||||
variableWatchList$ = variableWatchList$ + MKL$(varDlgList(y).index)
|
||||
END IF
|
||||
NEXT
|
||||
|
|
Loading…
Reference in a new issue