1
0
mirror of https://github.com/krustur/IconSnap.git synced 2025-11-23 18:19:43 +00:00

Run from Workbench fixes

This commit is contained in:
krustur
2018-12-16 22:06:44 +01:00
parent e9b6df5eff
commit 534d3bdcb2
2 changed files with 67 additions and 9 deletions

Binary file not shown.

View File

@ -60,6 +60,10 @@ struct RDArgs *rdargs = NULL;
// clean exit handling // clean exit handling
void CleanExit(); void CleanExit();
// Workbench logic
char *MainParamFolder = NULL;
char *MainParamFolderFixed = NULL;
// String/Path handling // String/Path handling
size_t maxPathTreshold = PATH_MAX - 2; size_t maxPathTreshold = PATH_MAX - 2;
short StringEndsWith(const char *str, const char *suffix); short StringEndsWith(const char *str, const char *suffix);
@ -94,6 +98,8 @@ int main(int argc, char **argv)
} }
// Allocate memory areas // Allocate memory areas
MainParamFolder = AllocVec(PATH_MAX, MEMF_ANY);
MainParamFolderFixed = AllocVec(PATH_MAX, MEMF_ANY);
AlignCurrentWorkingDirTempPath = AllocVec(PATH_MAX, MEMF_ANY); AlignCurrentWorkingDirTempPath = AllocVec(PATH_MAX, MEMF_ANY);
AlignDirFixedDirName = AllocVec(PATH_MAX, MEMF_ANY); AlignDirFixedDirName = AllocVec(PATH_MAX, MEMF_ANY);
AlignDirFullPath = AllocVec(PATH_MAX, MEMF_ANY); AlignDirFullPath = AllocVec(PATH_MAX, MEMF_ANY);
@ -176,12 +182,14 @@ int main(int argc, char **argv)
// No tools selected? // No tools selected?
if (wbNumArgs <= 1) if (wbNumArgs <= 1)
{ {
Information("Use IconSnap from Workbench by Shift-clicking on the Icons\n"); Information("Use IconSnap from Workbench by Selecting the IconSnap\n");
Information("you want to SnapShot, and double click on IconSnap\n"); Information("and then Shift-selecting the Icons you want to SnapShot\n");
Information("and finally double click\n");
exit(RETURN_OK); exit(RETURN_OK);
} }
// Iterate parameters // Iterate parameters
unsigned int wbFixCount = 0;
for (LONG i = 1; i < wbNumArgs; i++) for (LONG i = 1; i < wbNumArgs; i++)
{ {
//Verbose("Argument %ld name = %s\n", i, wbStartup->sm_ArgList[i].wa_Name); //Verbose("Argument %ld name = %s\n", i, wbStartup->sm_ArgList[i].wa_Name);
@ -189,8 +197,47 @@ int main(int argc, char **argv)
{ {
BPTR oldDir = CurrentDir(wbStartup->sm_ArgList[i].wa_Lock); BPTR oldDir = CurrentDir(wbStartup->sm_ArgList[i].wa_Lock);
Verbose("AlignFile %s\n", wbStartup->sm_ArgList[i].wa_Name); if (wbStartup->sm_ArgList[i].wa_Name[0] != 0)
AlignFile(wbStartup->sm_ArgList[i].wa_Name); {
wbFixCount = AlignFile(wbStartup->sm_ArgList[i].wa_Name);
}
else
{
NameFromLock(wbStartup->sm_ArgList[i].wa_Lock, MainParamFolder, PATH_MAX - 2);
if (StringEndsWith(MainParamFolder, ":"))
{
// size_t t = strlen("kurt");
// Information("t: %li\n", t);
// size_t mainParamFolderLen = strlen(MainParamFolder);
size_t mainParamFolderLen = strlen(MainParamFolder);
size_t fullLen = mainParamFolderLen + 4;
if (fullLen > PATH_MAX - 2)
{
Information("full path to %s is too long - skipping!\n", MainParamFolder);
}
else
{
strcpy(MainParamFolderFixed, MainParamFolder);
strcat(MainParamFolderFixed, "disk");
// StringToLower(AlignDirFullPath, fullLen, fullLen - 4);
// if (StringEndsWith(AlignDirFullPath, ".info"))
// {
// // Verbose("AlignDirFullPath: %s\n", AlignDirFullPath);
wbFixCount += AlignFile(MainParamFolderFixed);
// }
}
}
else
{
wbFixCount += AlignFile(MainParamFolder);
}
// AlignFile("dh0:disk");
}
// Verbose("Folder %s\n", MainParamFolder);
// Verbose("AlignFile %s\n", wbStartup->sm_ArgList[i].wa_Name);
// struct DiskObject *dobj; // struct DiskObject *dobj;
// dobj = GetDiskObjectNew(wbStartup->sm_ArgList[i].wa_Name); // dobj = GetDiskObjectNew(wbStartup->sm_ArgList[i].wa_Name);
// if (dobj != NULL) // if (dobj != NULL)
@ -207,7 +254,10 @@ int main(int argc, char **argv)
} }
// Verbose(""); // Verbose("");
} }
if (wbFixCount == 0)
{
Information("No icons found\n");
}
exit(RETURN_OK); exit(RETURN_OK);
} }
@ -317,6 +367,14 @@ int main(int argc, char **argv)
void CleanExit() void CleanExit()
{ {
if (MainParamFolder != NULL)
{
FreeVec(MainParamFolder);
}
if (MainParamFolderFixed != NULL)
{
FreeVec(MainParamFolderFixed);
}
if (AlignCurrentWorkingDirTempPath != NULL) if (AlignCurrentWorkingDirTempPath != NULL)
{ {
FreeVec(AlignCurrentWorkingDirTempPath); FreeVec(AlignCurrentWorkingDirTempPath);
@ -490,8 +548,8 @@ unsigned int AlignFile(unsigned char *diskObjectName)
// Verbose(" Width: %hi\n", diskObject->); // Verbose(" Width: %hi\n", diskObject->);
// Verbose(" SpecialInfo: %p\n", diskObject->do_Gadget.SpecialInfo); // Verbose(" SpecialInfo: %p\n", diskObject->do_Gadget.SpecialInfo);
// Verbose(" UserData: %p\n", diskObject->do_Gadget.UserData); // Verbose(" UserData: %p\n", diskObject->do_Gadget.UserData);
Verbose(" Width: %hi\n", diskObject->do_Gadget.Width); // Verbose(" Width: %hi\n", diskObject->do_Gadget.Width);
Verbose(" Height: %hi\n", diskObject->do_Gadget.Height); // Verbose(" Height: %hi\n", diskObject->do_Gadget.Height);
// Verbose(" GadgetRender: %p\n", diskObject->do_Gadget.GadgetRender); // Verbose(" GadgetRender: %p\n", diskObject->do_Gadget.GadgetRender);
// Verbose(" SelectRender: %p\n", diskObject->do_Gadget.SelectRender); // Verbose(" SelectRender: %p\n", diskObject->do_Gadget.SelectRender);
// struct Image *gadgetImage = (struct Image *)(diskObject->do_Gadget.GadgetRender); // struct Image *gadgetImage = (struct Image *)(diskObject->do_Gadget.GadgetRender);
@ -507,8 +565,8 @@ unsigned int AlignFile(unsigned char *diskObjectName)
// Verbose(" Flags: %hi\n", diskObject->U); // Verbose(" Flags: %hi\n", diskObject->U);
// Verbose(" Flags: %hi\n", diskObject->do_Gadget.Flags); // Verbose(" Flags: %hi\n", diskObject->do_Gadget.Flags);
// Verbose(" GadgetType: %hi\n", diskObject->do_Gadget.GadgetType); // Verbose(" GadgetType: %hi\n", diskObject->do_Gadget.GadgetType);
// Verbose(" LeftEdge: %hi\n", diskObject->do_Gadget.LeftEdge); //Verbose(" LeftEdge: %hi\n", diskObject->do_Gadget.LeftEdge);
// Verbose(" TopEdge: %hi\n", diskObject->do_Gadget.TopEdge); //Verbose(" TopEdge: %hi\n", diskObject->do_Gadget.TopEdge);
// unsigned char *toolType = NULL; // unsigned char *toolType = NULL;
// toolType = FindToolType(diskObject->do_ToolTypes, "IM1"); // toolType = FindToolType(diskObject->do_ToolTypes, "IM1");
// if (toolType) // if (toolType)