diff --git a/Drag&Drop.dll b/Drag&Drop.dll new file mode 100644 index 0000000..f182e4a Binary files /dev/null and b/Drag&Drop.dll differ diff --git a/EXpandExplore_.rmskin b/EXpandExplore_.rmskin new file mode 100644 index 0000000..b33f873 Binary files /dev/null and b/EXpandExplore_.rmskin differ diff --git a/EXpandable.ini b/EXpandable.ini index b7ff0d6..ff86e84 100644 Binary files a/EXpandable.ini and b/EXpandable.ini differ diff --git a/Readme.md b/Readme.md index 1bde013..fddf3ab 100644 --- a/Readme.md +++ b/Readme.md @@ -1,11 +1,12 @@ # EXpandable Folder -Skin for [Rainmeter](https://www.rainmeter.net/) +- Thumbnail picture of image files +- Drag and Drop capabilities +- Navigation through child and parent folders +- File and folder Context Menu +- No need to specifies path in variables.inc file -Demo: https://youtu.be/WEQzOHPr5ho +Third party program and plugin are needed to be installed: -Grab latest version from [Releases tab](https://github.com/juh9870/EXpandableFolder/releases/latest) -## Configuration -Edit `@Resources/variables.inc` - -`Path` variable must be specified before usage, all other options are cosmetic. +-ImageMagick program (magick.exe) +-Drag&Drop plugin (Drag&Drop.dll) diff --git a/Readme.txt b/Readme.txt new file mode 100644 index 0000000..4c2035f --- /dev/null +++ b/Readme.txt @@ -0,0 +1,5 @@ +Hi. Excellent work and idea here, thank youjuh9870. I just molded your code and now it has Drag&Drop capabilities and the ability to go back to previous folder with middle mouse action in directory icon or forward to show child folders. It means that you can go from c:\ to any child folder with left mouse action and return to its parents directories all the way back to c:\ or even to "My Computer" again. You can still use right mouse action to open folder in explorer window or left mouse action to execute a file or program. Now it also shows thumbnail pictures tiles for image files and not its program icon. there is no need now for the user to specifies a path in variables.inc +A little problem though, there is a bug especially when changing disks when you go back to "My Computer" root directory and pick other disk, but once you go back to %USERPROFILE%, it then behaves normally. It started to happen when I integrated back and forward functionality and only few times when you go all the way back to "My Computer" or going to windows directory. It doesn't happen all the time, just once on a while. At one point or another it will either not show all items in the folder, show too many, or create incrementally more icons than needed. +It might be the follow path approach or something from the Lua scripts, I'm not sure. + +You need to install ImageMagick https://imagemagick.org/ \ No newline at end of file diff --git a/tiles.inc.template b/tiles.inc.template new file mode 100644 index 0000000..89005e8 --- /dev/null +++ b/tiles.inc.template @@ -0,0 +1,129 @@ +[Variables] +// +; INDEX_%%={((%%+1)+Clamp(((%%+1)-#Root_Position#),0,1))-1+#Index_Offset#} +TILE_%%_X_O={(#PX#+#Tiles_Step_X#*( (((%%+1)+Clamp(((%%+1)-#Root_Position#),0,1))-1+#Index_Offset#) % #Tiles_Len#))} +TILE_%%_Y_O={(#PY#+#Tiles_Step_Y#*Floor( (((%%+1)+Clamp(((%%+1)-#Root_Position#),0,1))-1+#Index_Offset#) / #Tiles_Len#))} +TILE_%%_X=({#TILE_F_X#}+(#TILE_%%_X_O#-{#TILE_F_X#})*[MeasureTimerCalc:]) +TILE_%%_Y=({#TILE_F_Y#}+(#TILE_%%_Y_O#-{#TILE_F_Y#})*[MeasureTimerCalc:]) +TILE_%%_SELECTION=0// +TILE_F_SELECTION=0 +Update_Tiles=//[!UpdateMeter "MeterTile%%"][!UpdateMeter "MeterTileIcon%%"][!UpdateMeter "MeterTileText%%"][!UpdateMeter "MeterTileSelection%%"][!UpdateMeter "MeterTileHitbox%%"]// +Update=[!UpdateMeasure "MeasureSlide"][!UpdateMeasure "MeasureTimerCalc"][!UpdateMeter "MeterHitbox"]#Update_Tiles#[!Redraw] +FullyOppened=//[!UpdateMeter "MeterTileHitbox%%"]//[!Redraw] +ClosingStart=//[!UpdateMeter "MeterTileHitbox%%"]//[!Redraw] +// +TILE_F_X_O={#TILE_F_X#} +TILE_F_Y_O={#TILE_F_Y#} + +[MeasureFilePath%%] +Measure=Plugin +Plugin=FileView +Path=[MeasureFolder] +Index={%%+1} +Type=FilePath + +[MeasureFileType%%] +Measure=Plugin +Plugin=FileView +Path=[MeasureFolder] +Index={%%+1} +Type=FileType +IfMatch=(?i)^(?:png|jpg|jpeg|bmp|gif|tif|webP|ico)$ +; --- Rainmeter --- +; IfMatchAction=[!SetOption MeterTileIcon%% MeasureName "MeasureFilePath%%"] +; IfNotMatchAction=[!SetOption MeterTileIcon%% MeasureName "MeasureFileIcon%%"] +; --- Magick Meter --- +; IfMatchAction=[!SetOption MeasureFileMagM%% Image "File [MeasureFilePath%%] | Resize 48,48"][!SetOption MeterTileIcon%% MeasureName "MeasureFileMagM%%"] +; IfNotMatchAction=[!SetOption MeasureFileMagM%% Image ""][!SetOption MeterTileIcon%% MeasureName "MeasureFileIcon%%"] +--- Magick Run --- +IfMatchAction=[!CommandMeasure MeasureFileMagR%% "Run"] + +[MeasureFileIcon%%] +Measure=Plugin +Plugin=FileView +Path=[MeasureFolder] +Index={%%+1} +Type=Icon +IconSize=Large +; --- Rainmeter --- +; (nothing) +; --- Magick Meter --- +; (nothing) +--- Magick Run --- +OnChangeAction=[!SetOption MeterTileIcon%% MeasureName "MeasureFileIcon%%"] + +; --- Rainmeter --- +; (nothing) +; --- Magick Meter --- +; [MeasureFileMagM%%] +; Measure=Plugin +; Plugin=MagickMeter.dll +--- Magick Run --- +[MeasureFileMagR%%] +Measure=Plugin +Plugin=RunCommand +Program=C:\Program Files\ImageMagick-7.1.0-Q16-HDRI\magick.exe +Parameter="[MeasureFilePath%%]" -resize 48x48 #CURRENTPATH#icon{%%+1}.ico +State=Hide +DynamicVariables=1 + +[MeasureFileName%%] +Measure=Plugin +Plugin=FileView +Path=[MeasureFolder] +Index={%%+1} +Type=FileName +OnChangeAction=[!SetOption MeterTileText%% Text [MeasureFileName%%]] + +[MeterTile%%] +Meter=Shape +Shape=Rectangle #TILE_%%_X#,#TILE_%%_Y#,{#Tile_Width#},{#Tile_Height#} | Fill Color 0,0,0,(255*[MeasureTimerCalc:]) | Stroke Color 0, 0, 0, (255*[MeasureTimerCalc:]) +DynamicVariables=1 + +[MeterTileHitbox%%] +Meter=Shape +Shape=Rectangle #TILE_%%_X_O#,#TILE_%%_Y_O#,{#Tile_Width#},{#Tile_Height#} | Fill Color 0,0,0,1 | Stroke Color 0, 0, 0, 1 +Hidden=(Clamp(Floor(1-[MeasureTimerCalc:]*2),0,1)) +DynamicVariables=1 + +[MeterTileSelection%%] +Meter=Shape +Shape=Rectangle (#TILE_%%_X#+(#Tile_Width#-#Tiles_Selection_Width#)/2),#TILE_%%_Y#,(#Tiles_Selection_Width#),(#Tiles_Text_OY#+[MeterTileText%%:H]) | Fill Color #Hover_Selection_Color#,(#Hover_Selection_Opacity#*#TILE_%%_SELECTION#*[MeasureTimerCalc:]) | Stroke Color #Hover_Selection_Color#, (#Hover_Selection_Border_Opacity#*#TILE_%%_SELECTION#*[MeasureTimerCalc:]) +DynamicVariables=1 +Hidden=(Floor(1-[MeasureTimerCalc:])) +Group=SelectionGroup +MouseOverAction=[!SetVariable TILE_%%_SELECTION 1][!UpdateMeter "MeterTileSelection%%"][!Redraw] +MouseLeaveAction=[!SetVariable TILE_%%_SELECTION 0][!UpdateMeter "MeterTileSelection%%"][!Redraw] +LeftMouseUpAction=["[MeasureFilePath%%]"] +MiddleMouseUpAction=[!CommandMeasure "MeasureFilePath%%" "FollowPath"][!WriteKeyValue "Variables" "Path" "[MeasureFolderPath]" "#@#Variables.inc"][!Refresh]#Update# +RightMouseUpAction=[!CommandMeasure MeasureFilePath%% "ContextMenu"] + +[MeterTileIcon%%] +Meter=Image +MeasureName=MeasureFileIcon%% +X=(#TILE_%%_X#+#Tiles_Icon_OX#) +Y=(#TILE_%%_Y#+#Tiles_Icon_OY#) +W=#Tiles_Icon_Size# +H=#Tiles_Icon_Size# +Container=MeterTile%% +DynamicVariables=1 +PreserveAspectRatio=1 + +[MeterTileText%%] +Meter=String +Text=[MeasureFileName%%] +X=(#TILE_%%_X#+#Tiles_Text_OX#) +Y=(#TILE_%%_Y#+#Tiles_Text_OY#) +ClipStringW=#Tiles_Text_Width# +ClipStringH=#Tiles_Text_Height# +FontColor=255,255,255,255 +StringAlign=CenterTop +ClipString=2 +FontSize=9.5 +AntiAlias=0 +; FontFace=Segoe UI +StringEffect=Shadow +FontEffectColor=0,0,0,255 +Container=MeterTile%% +DynamicVariables=1 +// \ No newline at end of file