mirror of
https://github.com/sheumann/DiskBrowser.git
synced 2024-06-07 20:29:29 +00:00
Switch the default button based on the target control.
This currently works by actually having two different controls for each button.
This commit is contained in:
parent
048f421af2
commit
ec309557b5
|
@ -44,6 +44,9 @@ char finderRequestName[] = "\pApple~Finder~";
|
||||||
#define disksList 1007
|
#define disksList 1007
|
||||||
#define mountDiskButton 1008
|
#define mountDiskButton 1008
|
||||||
|
|
||||||
|
#define searchButtonDefault (searchButton+50)
|
||||||
|
#define mountDiskButtonDefault (mountDiskButton+50)
|
||||||
|
|
||||||
#define searchErrorAlert 3000
|
#define searchErrorAlert 3000
|
||||||
|
|
||||||
Word resourceFileID;
|
Word resourceFileID;
|
||||||
|
@ -55,6 +58,12 @@ Word myUserID;
|
||||||
|
|
||||||
GrafPortPtr window;
|
GrafPortPtr window;
|
||||||
|
|
||||||
|
CtlRecHndl disksListHandle;
|
||||||
|
CtlRecHndl mountButtonHandle, mountButtonDefaultHandle;
|
||||||
|
CtlRecHndl searchButtonHandle, searchButtonDefaultHandle;
|
||||||
|
|
||||||
|
unsigned long lastTargetCtlID = 0;
|
||||||
|
|
||||||
Boolean resourceFileOpened, windowOpened;
|
Boolean resourceFileOpened, windowOpened;
|
||||||
|
|
||||||
/* User preference */
|
/* User preference */
|
||||||
|
@ -336,29 +345,34 @@ void DoSearch(void) {
|
||||||
}
|
}
|
||||||
processArray(docs, json_object, processDoc);
|
processArray(docs, json_object, processDoc);
|
||||||
|
|
||||||
for (int i = 0; i < DISK_LIST_LENGTH; i++) {
|
diskList[0].memFlag = 0x80;
|
||||||
|
for (int i = 1; i < DISK_LIST_LENGTH; i++) {
|
||||||
diskList[i].memFlag = 0;
|
diskList[i].memFlag = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Update state of controls once disk list is available */
|
/* Update state of controls once disk list is available */
|
||||||
CtlRecHndl disksListHandle = GetCtlHandleFromID(window, disksList);
|
|
||||||
HiliteControl(noHilite, disksListHandle);
|
HiliteControl(noHilite, disksListHandle);
|
||||||
NewList2(NULL, 1, (Ref) diskList, refIsPointer,
|
|
||||||
diskListPos, (Handle)disksListHandle);
|
|
||||||
|
|
||||||
SetCtlMoreFlags(
|
SetCtlMoreFlags(
|
||||||
GetCtlMoreFlags(disksListHandle) | fCtlCanBeTarget | fCtlWantEvents,
|
GetCtlMoreFlags(disksListHandle) | fCtlCanBeTarget | fCtlWantEvents,
|
||||||
disksListHandle);
|
disksListHandle);
|
||||||
HiliteCtlByID(noHilite, window, mountDiskButton);
|
|
||||||
|
|
||||||
|
NewList2(NULL, 1, (Ref) diskList, refIsPointer,
|
||||||
|
diskListPos, (Handle)disksListHandle);
|
||||||
|
|
||||||
|
if (diskListPos > 0) {
|
||||||
|
if (FindTargetCtl() != disksListHandle) {
|
||||||
|
MakeThisCtlTarget(disksListHandle);
|
||||||
|
CallCtlDefProc(disksListHandle, ctlChangeTarget, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
free(searchURL);
|
free(searchURL);
|
||||||
EndTCPConnection(&sess);
|
EndTCPConnection(&sess);
|
||||||
InitCursor();
|
InitCursor();
|
||||||
return;
|
return;
|
||||||
|
|
||||||
errorReturn:
|
errorReturn:
|
||||||
NewList2(NULL, 1, (Ref) diskList, refIsPointer,
|
NewList2(NULL, 1, (Ref) diskList, refIsPointer, 0, (Handle)disksListHandle);
|
||||||
0, (Handle)GetCtlHandleFromID(window, disksList));
|
|
||||||
free(queryString);
|
free(queryString);
|
||||||
free(searchURL);
|
free(searchURL);
|
||||||
EndTCPConnection(&sess);
|
EndTCPConnection(&sess);
|
||||||
|
@ -372,6 +386,7 @@ void HandleEvent(int eventCode, WmTaskRec *taskRec) {
|
||||||
case wInControl:
|
case wInControl:
|
||||||
switch (taskRec->wmTaskData4) {
|
switch (taskRec->wmTaskData4) {
|
||||||
case searchButton:
|
case searchButton:
|
||||||
|
case searchButtonDefault:
|
||||||
DoSearch();
|
DoSearch();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -383,6 +398,7 @@ void HandleEvent(int eventCode, WmTaskRec *taskRec) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case mountDiskButton:
|
case mountDiskButton:
|
||||||
|
case mountDiskButtonDefault:
|
||||||
// TODO
|
// TODO
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -406,6 +422,36 @@ void HandleEvent(int eventCode, WmTaskRec *taskRec) {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned long targetCtlID = GetCtlID(FindTargetCtl());
|
||||||
|
if (targetCtlID != lastTargetCtlID) {
|
||||||
|
/* Make button corresponding to target control the default */
|
||||||
|
lastTargetCtlID = targetCtlID;
|
||||||
|
if (targetCtlID == searchLine) {
|
||||||
|
SetCtlMoreFlags(GetCtlMoreFlags(mountButtonDefaultHandle) & 0x1FFF,
|
||||||
|
mountButtonDefaultHandle);
|
||||||
|
SetCtlMoreFlags(GetCtlMoreFlags(searchButtonDefaultHandle) | 0x3000,
|
||||||
|
searchButtonDefaultHandle);
|
||||||
|
ShowControl(searchButtonDefaultHandle);
|
||||||
|
HideControl(mountButtonDefaultHandle);
|
||||||
|
} else if (targetCtlID == disksList) {
|
||||||
|
SetCtlMoreFlags(GetCtlMoreFlags(searchButtonDefaultHandle) & 0x1FFF,
|
||||||
|
searchButtonDefaultHandle);
|
||||||
|
SetCtlMoreFlags(GetCtlMoreFlags(mountButtonDefaultHandle) | 0x3000,
|
||||||
|
mountButtonDefaultHandle);
|
||||||
|
ShowControl(mountButtonDefaultHandle);
|
||||||
|
HideControl(searchButtonDefaultHandle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Only allow "Mount Disk" to be clicked if there is a disk selected */
|
||||||
|
if (NextMember2(0, (Handle)disksListHandle) != 0) {
|
||||||
|
HiliteControl(noHilite, mountButtonHandle);
|
||||||
|
HiliteControl(noHilite, mountButtonDefaultHandle);
|
||||||
|
} else {
|
||||||
|
HiliteControl(inactiveHilite, mountButtonHandle);
|
||||||
|
HiliteControl(inactiveHilite, mountButtonDefaultHandle);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* NDA-style action routine for our window */
|
/* NDA-style action routine for our window */
|
||||||
|
@ -493,8 +539,19 @@ void ShowBrowserWindow(void) {
|
||||||
sysWindRecord.memoryID = myUserID;
|
sysWindRecord.memoryID = myUserID;
|
||||||
auxWindInfo->NDASysWindPtr = (Ptr)&sysWindRecord;
|
auxWindInfo->NDASysWindPtr = (Ptr)&sysWindRecord;
|
||||||
|
|
||||||
HiliteCtlByID(inactiveHilite, window, disksList);
|
disksListHandle = GetCtlHandleFromID(window, disksList);
|
||||||
HiliteCtlByID(inactiveHilite, window, mountDiskButton);
|
mountButtonDefaultHandle = GetCtlHandleFromID(window, mountDiskButtonDefault);
|
||||||
|
searchButtonDefaultHandle = GetCtlHandleFromID(window, searchButtonDefault);
|
||||||
|
mountButtonHandle = GetCtlHandleFromID(window, mountDiskButton);
|
||||||
|
searchButtonHandle = GetCtlHandleFromID(window, searchButton);
|
||||||
|
|
||||||
|
HideControl(GetCtlHandleFromID(window, mountDiskButtonDefault));
|
||||||
|
|
||||||
|
HiliteControl(inactiveHilite, disksListHandle);
|
||||||
|
HiliteControl(inactiveHilite, mountButtonHandle);
|
||||||
|
HiliteControl(inactiveHilite, mountButtonDefaultHandle);
|
||||||
|
|
||||||
|
lastTargetCtlID = 0;
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
if (resourceFileOpened && !windowOpened) {
|
if (resourceFileOpened && !windowOpened) {
|
||||||
|
|
|
@ -10,6 +10,9 @@
|
||||||
#define disksList 1007
|
#define disksList 1007
|
||||||
#define mountDiskButton 1008
|
#define mountDiskButton 1008
|
||||||
|
|
||||||
|
#define searchButtonDefault (searchButton+50)
|
||||||
|
#define mountDiskButtonDefault (mountDiskButton+50)
|
||||||
|
|
||||||
resource rWindParam1 (winDiskBrowser) {
|
resource rWindParam1 (winDiskBrowser) {
|
||||||
fTitle+fClose+fFlex+fMove+fVis, /* wFrameBits */
|
fTitle+fClose+fFlex+fMove+fVis, /* wFrameBits */
|
||||||
nil, /* wTitle */
|
nil, /* wTitle */
|
||||||
|
@ -30,12 +33,14 @@ resource rWindParam1 (winDiskBrowser) {
|
||||||
};
|
};
|
||||||
|
|
||||||
resource rControlList (winDiskBrowser) {{
|
resource rControlList (winDiskBrowser) {{
|
||||||
|
mountDiskButtonDefault,
|
||||||
mountDiskButton,
|
mountDiskButton,
|
||||||
disksList,
|
disksList,
|
||||||
findDisksForText,
|
findDisksForText,
|
||||||
forIIGSRadio,
|
forIIGSRadio,
|
||||||
forAnyAppleIIRadio,
|
forAnyAppleIIRadio,
|
||||||
searchLine,
|
searchLine,
|
||||||
|
searchButtonDefault,
|
||||||
searchButton
|
searchButton
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
@ -54,8 +59,8 @@ resource rControlTemplate (searchLine) {
|
||||||
resource rPString (searchLine) { "" };
|
resource rPString (searchLine) { "" };
|
||||||
|
|
||||||
|
|
||||||
resource rControlTemplate (searchButton) {
|
resource rControlTemplate (searchButtonDefault) {
|
||||||
searchButton,
|
searchButtonDefault,
|
||||||
{10, 309, 0, 0},
|
{10, 309, 0, 0},
|
||||||
SimpleButtonControl {{
|
SimpleButtonControl {{
|
||||||
DefaultButton,
|
DefaultButton,
|
||||||
|
@ -67,6 +72,19 @@ resource rControlTemplate (searchButton) {
|
||||||
}};
|
}};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
resource rControlTemplate (searchButton) {
|
||||||
|
searchButton,
|
||||||
|
{10, 309, 0, 0},
|
||||||
|
SimpleButtonControl {{
|
||||||
|
0,
|
||||||
|
$1000+RefIsResource,
|
||||||
|
0,
|
||||||
|
searchButton,
|
||||||
|
0, /* color table ref */
|
||||||
|
{"","",0,0} /* key equivalent = Return */
|
||||||
|
}};
|
||||||
|
};
|
||||||
|
|
||||||
resource rPString(searchButton) { "Find Disks" };
|
resource rPString(searchButton) { "Find Disks" };
|
||||||
|
|
||||||
|
|
||||||
|
@ -142,6 +160,19 @@ resource rControlTemplate (mountDiskButton) {
|
||||||
}};
|
}};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
resource rControlTemplate (mountDiskButtonDefault) {
|
||||||
|
mountDiskButtonDefault,
|
||||||
|
{152, 305, 0, 0},
|
||||||
|
SimpleButtonControl {{
|
||||||
|
DefaultButton,
|
||||||
|
$3000+RefIsResource,
|
||||||
|
0,
|
||||||
|
mountDiskButton,
|
||||||
|
0, /* color table ref */
|
||||||
|
{"\$0D","\$0D",0,0} /* key equivalent */
|
||||||
|
}};
|
||||||
|
};
|
||||||
|
|
||||||
resource rPString(mountDiskButton) { "Mount Disk" };
|
resource rPString(mountDiskButton) { "Mount Disk" };
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user