Skip to content

Commit 516770f

Browse files
committed
Added: Multiple quick clip tables (both numbered and custom)
Refactored: Unified ToolTip formatting Added: Logging of tooltip index in various tooltips
1 parent 4de3fe8 commit 516770f

3 files changed

Lines changed: 103 additions & 35 deletions

File tree

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1-
log/
1+
log/
2+
3+
HeckR_ClipLog.ini

components/logic.ahk

Lines changed: 57 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -86,10 +86,27 @@ getUniqueFileExtension(extLessFileWithPath){
8686
}
8787
}
8888

89+
getCurrentCustomQuickClipBase() {
90+
global
91+
return customQuickClipTableIsUsed ? customQuickClipTableList[customQuickClipTablePos] : customQuickClipTablePos
92+
}
93+
94+
getQuickClipCurrentSlotString(index){
95+
global
96+
return getCurrentCustomQuickClipBase() . " - " . index
97+
}
98+
99+
quickClipExists(index){
100+
global
101+
102+
fileAttributes := FileExist(quickClipLogDir . getCurrentCustomQuickClipBase() . index . ".?log")
103+
return (fileAttributes != "")
104+
}
105+
89106
getFullPathOfQuickClip(place){
90107
global
91108

92-
quickClipFile := quickClipLogDir . place
109+
quickClipFile := quickClipLogDir . getCurrentCustomQuickClipBase() . place
93110
quickClipType := getUniqueFileExtension(quickClipFile)
94111

95112
return quickClipFile . "." . quickClipType
@@ -203,8 +220,10 @@ changeClip(place = "", force = false, showPreview = true){
203220

204221

205222
if( !hasClipFiles() ){
206-
ToolTip, %errorNoClipHistory%
207-
223+
if(showPreview){
224+
ToolTip % errorNoClipHistory
225+
}
226+
208227
changeClipRunning := false
209228
return
210229
}
@@ -221,7 +240,7 @@ changeClip(place = "", force = false, showPreview = true){
221240
{
222241
changed := setClipCursorPos(place, force)
223242
if( !changed && place != clipCursorPos){
224-
ToolTip, %errorNoClipAtIndex%
243+
ToolTip % errorNoClipAtIndex
225244
return
226245
}
227246
}
@@ -348,8 +367,8 @@ AddClipFromQuickClip(quickClipIndex){
348367
AddClipFromQuickClipRunning := true
349368

350369

351-
if(!quickClipFiles[quickClipIndex]){
352-
ToolTip, %errorNoClipAtIndex%
370+
if(!quickClipExists(quickClipIndex)){
371+
ToolTip % errorNoClipAtIndex . " (" . getQuickClipCurrentSlotString(quickClipIndex) . ")"
353372
return
354373
}
355374

@@ -374,7 +393,7 @@ deleteClip(place = "", maintainCursorPos = false){
374393

375394
placeToDelete := calcPlace(place)
376395
if(!hasClipFile(placeToDelete)){
377-
ToolTip, %errorNoClipAtIndex%
396+
ToolTip % errorNoClipAtIndex . " (" . place . ")"
378397
return
379398
}
380399

@@ -413,6 +432,24 @@ deleteClip(place = "", maintainCursorPos = false){
413432

414433
;--------------------------------------------------------------------------------------------------
415434

435+
setQuickClipTable(place := ""){
436+
global
437+
438+
if(place == ""){
439+
if(customQuickClipTableIsUsed){
440+
customQuickClipTablePos := Mod(customQuickClipTablePos, customQuickClipTableList.MaxIndex()) + 1
441+
} else {
442+
customQuickClipTableIsUsed := true
443+
customQuickClipTablePos := 1
444+
}
445+
} else{
446+
customQuickClipTableIsUsed := false
447+
customQuickClipTablePos := place
448+
}
449+
450+
ToolTip % "Quick clip table: " . getCurrentCustomQuickClipBase()
451+
}
452+
416453
setQuickClip(place, dataToUse = false){
417454
global
418455

@@ -423,27 +460,25 @@ setQuickClip(place, dataToUse = false){
423460

424461

425462
if(!hasClipFiles() && dataToUse == false){
426-
ToolTip, %errorCantSetQSlot% %place%`n%errorNoClipHistory%
463+
ToolTip % errorCantSetQSlot . " (" . getQuickClipCurrentSlotString(place) . ")`n" . errorNoClipHistory
427464

428465
setQuickClipRunning := false
429466
return
430467
}
431468

432-
if(quickClipFiles[place])
433-
FileDelete, %quickClipLogDir%%place%.*
434-
else
435-
quickClipFiles[place] := true
469+
if(quickClipExists(place))
470+
FileDelete, % quickClipLogDir . getCurrentCustomQuickClipBase() . place ".*"
436471

437472
if(dataToUse == false){
438473
sourceFile := getClipFilePath(clipCursorPos)
439-
destinationFile := quickClipLogDir . place . "." . clipType
474+
destinationFile := quickClipLogDir . getCurrentCustomQuickClipBase() . place . "." . clipType
440475

441476
FileCopy, %sourceFile%, %destinationFile%, 1
442477

443478
previewHeader = %notifySavedQSlot% %place%
444479
showClipPreview(previewHeader, clipType)
445480
} else{
446-
destinationFile := quickClipLogDir . place . "." . clipTextExt
481+
destinationFile := quickClipLogDir . getCurrentCustomQuickClipBase() . place . "." . clipTextExt
447482

448483
clipSave := ClipboardAll
449484
Clipboard := dataToUse
@@ -466,13 +501,13 @@ peekQuickClip(place, customHeader = ""){
466501

467502
GDIP_StartDraw()
468503

469-
if(quickClipFiles[place]){
504+
if(quickClipExists(place)){
470505
clipSave := ClipboardAll
471506

472507
quickClipPath := getFullPathOfQuickClip(place)
473508
loadClipDataWithoutSaving(quickClipPath, true)
474509

475-
previewHeader := place
510+
previewHeader := getQuickClipCurrentSlotString(place)
476511
if(customHeader != "")
477512
previewHeader := customHeader
478513
showClipPreview(previewHeader, getExtension(quickClipPath))
@@ -482,7 +517,7 @@ peekQuickClip(place, customHeader = ""){
482517
else{
483518
GDIP_Clean()
484519
GDIP_Update()
485-
ToolTip, %place%`n%errorNoClipAtIndex%
520+
ToolTip % getQuickClipCurrentSlotString(place) . "`n" . errorNoClipAtIndex
486521
}
487522

488523

@@ -498,7 +533,7 @@ pasteQuickClip(place){
498533
pasteQuickClipRunning := true
499534

500535

501-
if(quickClipFiles[place]){
536+
if(quickClipExists(place)){
502537
clipSave := ClipboardAll
503538

504539
quickClipPath := getFullPathOfQuickClip(place)
@@ -524,13 +559,12 @@ deleteQuickClip(place){
524559
deleteQuickClipRunning := true
525560

526561

527-
if(quickClipFiles[place]){
528-
FileDelete, %quickClipLogDir%%place%.*
529-
quickClipFiles[place] := false
562+
if(quickClipExists(place)){
563+
FileDelete, % quickClipLogDir . getCurrentCustomQuickClipBase() . place . ".*"
530564

531-
ToolTip, %notifyDelQSlot% %place%
565+
ToolTip % notifyDelQSlot . " " . getQuickClipCurrentSlotString(place)
532566
}
533567

534568

535569
deleteQuickClipRunning := false
536-
}
570+
}

components/setup.ahk

Lines changed: 43 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ SetupClipLog:
1212

1313
gosub SetupClipLogGlobalVariables
1414

15+
gosub ReadConfigFile
16+
1517
gosub SetupClipLogDirectories
1618

1719
gosub SetupClipLogFileLists
@@ -46,6 +48,9 @@ SetupClipLogFinalValues:
4648
clipLogDir=%logDir%clipLogDir\ ;Standard clip log directory
4749
quickClipLogDir=%logDir%quickClipLogDir\ ;Quick clip logging directory
4850

51+
; Config/Ini file
52+
iniFilePath := regexreplace(A_ScriptFullPath, "\.[^.]+$",".ini")
53+
4954
; Clip types
5055
clipTextExt := "clog" ;Text
5156
clipPicExt := "plog" ;Picture/Image/Bitmap
@@ -54,6 +59,7 @@ SetupClipLogFinalValues:
5459

5560
; Clip modes
5661
clipModeNone := "none"
62+
clipModeSetting := "setting"
5763
clipModePreview := "preview"
5864
clipModePaste := "paste"
5965
clipModeAdd := "add"
@@ -102,8 +108,10 @@ SetupClipLogGlobalVariables:
102108
prevClipType := "" ;Previous clip type for avoiding duplications
103109
prevClipSize := 0 ;Previous clip type for avoiding duplications
104110

105-
clipFiles := [] ;List of standard clip log files
106-
quickClipFiles := [] ;List of quick clip log files
111+
clipFiles := [] ;List of standard clip log files
112+
customQuickClipTableList := [] ;Custom quick clip table IDs/names
113+
customQuickClipTablePos := 1 ;Selected custom quickclip table's number/position (either an index from the custom tables list, or an indexed table. See variable: customQuickClipTableIsUsed)
114+
customQuickClipTableIsUsed := true ;Flag indicating the meaning of customQuickClipTablePos. true => index, false => table name
107115

108116
isLogging := true ;Flag for enabling/disabling hotkeys
109117
scriptIsModifyingClipboard := false ;Flag for making sure only one thing is trying to modify the cliboard
@@ -112,30 +120,54 @@ return
112120

113121
;------------------------------------------------
114122

123+
ReadConfigFile:
124+
125+
; Create config if necessary
126+
if(!FileExist(iniFilePath)){
127+
FileAppend, [settings]`n, %iniFilePath%
128+
}
129+
130+
; Init quick clip list names
131+
IniRead, customQuickClipTableListString, %iniFilePath%, settings, customQuickClipTables, %A_Space%
132+
customQuickClipTableList := StrSplit(customQuickClipTableListString, ",", " `t")
133+
134+
; Always start with default
135+
customQuickClipTableList.InsertAt(1, "default")
136+
137+
return
138+
139+
;------------------------------------------------
140+
115141
SetupClipLogFileLists:
116142

117-
;Reading clips
143+
gosub SetupStandardClipLogFileList
144+
145+
return
146+
147+
SetupStandardClipLogFileList:
118148
Loop, Files, %clipLogDir%*.?log
119149
{
120150
clipFiles.Push(A_LoopFileName)
121151
}
152+
return
122153

123-
; Reading quick clips
124-
Loop, 10 {
125-
quickClipFiles[A_Index] := false
126-
}
127-
Loop, Files, %quickClipLogDir%*.?log
154+
DeleteQuickClipsOfNonexistentTables:
155+
fileStartingOptions := join("|", customQuickClipTableList*)
156+
fileMatchPattern := "^(\d|" . fileStartingOptions . ")(\d)\.(.log)$"
157+
158+
Loop, Files, %quickClipLogDir%*
128159
{
129-
tmpFileName := StrSplit(A_LoopFileName, ".")[1]
130-
quickClipFiles[tmpFileName] := true
160+
if (RegExMatch(A_LoopFileName, fileMatchPattern, matchObject) == 0)
161+
FileDelete, %A_LoopFileFullPath%
131162
}
132-
133163
return
134164

135165
;------------------------------------------------
136166

137167
SetupClipLogInit:
138168

169+
gosub DeleteQuickClipsOfNonexistentTables
170+
139171
deleteOldLogFiles()
140172

141173
GDIP_SetUp()

0 commit comments

Comments
 (0)