Beispiel #1
0
short ModalMacros(NewMacroInfo *macrost)
{
	DialogPtr dtemp;
	short dItem;
	short i;
	Rect dBox;
	Str255 temp;
	Handle MacString[10], rubbish;

	SetUpMovableModalMenus();
	dtemp=GetNewMyDialog( MacroDLOG + 2, NULL, kInFront, (void *)ThirdCenterDialog);
	SetDialogDefaultItem(dtemp, 1);
	SetDialogCancelItem(dtemp, 2);
	SetDialogTracksCursor(dtemp, 1);
	HideDialogItem(dtemp, 25); // no save default in session macros dialog

	dialogPane = 0; // start with Command-[0-9]

	// RAB BetterTelnet 2.0b5 - fix cancel button so it works again
	oldMacros = macrost->handle;
	HandToHand(&oldMacros);
	oldMacroIndexes = *macrost;

	// now fix the strings
	for (i=0; i<10; i++) {
		GetIndString(temp, 7100, i + (10 * dialogPane) + 1);
		GetDialogItem(dtemp, i+3, &dItem, &rubbish, &dBox);
		if (!temp[0]) { HideDialogItem(dtemp, i+13); HideDialogItem(dtemp, i+3); }
		else { ShowDialogItem(dtemp, i+13); ShowDialogItem(dtemp, i+3); }
		SetDialogItemText(rubbish, temp);
	}

	for (i=0; i<10; i++) {
		getmacro(macrost, i, (char *) &temp, 256); /* BYU LSC */
		c2pstr((char *)temp);								/* BYU LSC */
		GetDialogItem( dtemp, i+13, &dItem, &MacString[i], &dBox);
		SetDialogItemText( MacString[i], temp );
		}

	TelInfo->macrosModeless = dtemp;

	dItem = 0;
	while ((dItem != 1) && (dItem != 2)) {
		movableModalDialog(0, &dItem);
		MacroDialog(macrost, dtemp, 0, dItem);
	}

	if (dItem == 2) CancelMacros(macrost, dtemp);
	else CloseMacros(macrost, dtemp);
	ResetMenus();
	return dItem;
}
void SetDefaultItemBehavior(DialogRef dialog)
{
	#if TARGET_API_MAC_CARBON
		short cancelButtonItemNum;
		(void)SetDialogTracksCursor (dialog,true); 
		SetDialogDefaultItem(dialog,1);
		cancelButtonItemNum = DetermineCancelButtonItemNumByLookingAtButtons(dialog);
		if(cancelButtonItemNum < 1) cancelButtonItemNum = 1; // make the default button respond to the "escape key" i.e. equivalent to the cancel button
		SetDialogCancelItem(dialog,cancelButtonItemNum); 
	#else
		#pragma unused(dialog)
		// nothing to do, the  modalfilter proc takes care of the behavior
	#endif
}
Beispiel #3
0
void	Macros( void)
{
	DialogPtr dtemp;
	short dItem;
	short i;
	Rect dBox;
	Str255 temp;
	Handle MacString[10], rubbish;

	setLastCursor(theCursors[normcurs]);

	if (TelInfo->macrosModeless) {
		SelectWindow(TelInfo->macrosModeless);
		return;
	}

	dtemp=GetNewMyDialog( MacroDLOG, NULL, kInFront, (void *)ThirdCenterDialog);
	SetDialogDefaultItem(dtemp, 1);
	SetDialogCancelItem(dtemp, 2);
	SetDialogTracksCursor(dtemp, 1);

	dialogPane = 0; // start with Command-[0-9]

	// RAB BetterTelnet 2.0b5 - fix cancel button so it works again
	oldMacros = TelInfo->newMacros.handle;
	HandToHand(&oldMacros);
	oldMacroIndexes = TelInfo->newMacros;

	// now fix the strings
	for (i=0; i<10; i++) {
		GetIndString(temp, 7100, i + (10 * dialogPane) + 1);
		GetDialogItem(dtemp, i+3, &dItem, &rubbish, &dBox);
		if (!temp[0]) { HideDialogItem(dtemp, i+13); HideDialogItem(dtemp, i+3); }
		else { ShowDialogItem(dtemp, i+13); ShowDialogItem(dtemp, i+3); }
		SetDialogItemText(rubbish, temp);
	}

	for (i=0; i<10; i++) {
		getmacro(&TelInfo->newMacros, i, (char *) &temp, 256); /* BYU LSC */
		c2pstr((char *)temp);								/* BYU LSC */
		GetDialogItem( dtemp, i+13, &dItem, &MacString[i], &dBox);
		SetDialogItemText( MacString[i], temp );
		}
	TelInfo->macrosModeless = dtemp;
}
Beispiel #4
0
Boolean DoUI (GPtr globals)
{
	
	short 		item, lastitem;
	short		numberErr = noErr;
	long		x;
	DialogPtr	dp;
	DialogTHndl	dialogHdl;
	dialogHdl = (DialogTHndl) GetResource ('DLOG', uiID);

	if (dialogHdl == NULL || *dialogHdl == NULL)
		return false;
	else
	{
		
	HNoPurge ((Handle) dialogHdl);

	CenterDialog (dialogHdl);
	
	dp = GetNewDialog (uiID, nil, (WindowPtr) -1);
		
	/* I am throwing away the results from these routines. 
	   Toolbox TechNote 37 does not document what error values they return.
	   Also, the worst that happens is that the interface isn't quite right. */
	
	(void) SetDialogDefaultItem (dp, ok);
	(void) SetDialogCancelItem (dp, cancel);
	(void) SetDialogTracksCursor (dp, TRUE);
		
	SetRadioGroupState (dp,
						kFirstItem,
						kLastItem,
						kFirstItem + gWhatArea);
						
	SetRadioGroupState (dp,
						kUseRadio1,
						kUseRadioLast,
						kUseRadio1 + gWhatChannels);

	SetRadioGroupState (dp,
						kCreateRadio1,
						kCreateRadioLast,
						kCreateRadio1 + gCreate);
	
	ShowHideItem (dp, kPercentStatic, (gWhatArea == iSelectRandom));
	ShowHideItem (dp, kPercentEdit, (gWhatArea == iSelectRandom));
	ShowHideItem (dp, kPercentSymbol, (gWhatArea == iSelectRandom));
	StuffNumber(dp, kPercentEdit, gPercent);
	if (gWhatArea == iSelectRandom) SelectTextItem(dp, kPercentEdit);
		
	SelectWindow (GetDialogWindow(dp));
	
	do
	{
		
		MoveableModalDialog (dp, gStuff->processEvent, nil, &item);
		
		if (lastitem != item && item != cancel)
		{ /* we just left this area.  Check to make sure its within bounds. */
			switch (lastitem)
			{
				case kPercentEdit:
					numberErr = FetchNumber(dp,
										    kPercentEdit,
										    kPercentMin,
										    kPercentMax,
										    &x);
					if (numberErr != noErr)
					{ // shows alert if there's an error
						AlertNumber(dp,
									kPercentEdit,
									kPercentMin,
									kPercentMax,
									&x,
								    AlertID,
								    numberErr);
						item = kPercentEdit; // stay here
					}
					gPercent = x;						
					break;
			}
		}
		switch (item)
		{
			case ok:
				gWhatArea = GetRadioGroupState(dp, kFirstItem, kLastItem) - kFirstItem;
				gWhatChannels = GetRadioGroupState(dp, kUseRadio1, kUseRadioLast) - kUseRadio1;
				gCreate = GetRadioGroupState(dp, kCreateRadio1, kCreateRadioLast) - kCreateRadio1;
				if (gWhatArea == iSelectRandom)
				{
					numberErr = FetchNumber(dp,
										    kPercentEdit,
										    kPercentMin,
										    kPercentMax,
										    &x);
					if (numberErr != noErr)
					{ // shows alert if there's an error
						AlertNumber(dp,
									kPercentEdit,
									kPercentMin,
									kPercentMax,
									&x,
								    AlertID,
								    numberErr);
						item = kPercentEdit; // go back
					}
					else gPercent = x; // it's okay, move on
				}
				break;

			case cancel:
				gResult = userCanceledErr;
				break;
			case kPercentEdit:
				// grab the number whether it's right or not
				numberErr = FetchNumber(dp, kPercentEdit, kPercentMin, kPercentMax, &x);
				if (numberErr == noErr)
				{ // no errors getting the number
					gPercent = x;
					// update display here	 
				}
				break;

			default:
			if (item >= kFirstItem && item <= kLastItem)
			{
				SetRadioGroupState (dp, kFirstItem, kLastItem, item);
				ShowHideItem (dp, kPercentStatic, (item == iSelectRandom + kFirstItem));
				ShowHideItem (dp, kPercentEdit, (item == iSelectRandom + kFirstItem));
				ShowHideItem (dp, kPercentSymbol, (item == iSelectRandom + kFirstItem));
				if (item == iSelectRandom + kFirstItem) SelectTextItem(dp, kPercentEdit);
			}
			else if (item >= kUseRadio1 && item <= kUseRadioLast)
				SetRadioGroupState (dp, kUseRadio1, kUseRadioLast, item);
			else if (item >= kCreateRadio1 && item <= kCreateRadioLast)
				SetRadioGroupState (dp, kCreateRadio1, kCreateRadioLast, item);
			break;
		}
		lastitem = item;
	}
	while (item != ok && item != cancel);

	DisposeDialog (dp);
		
	if (dialogHdl != NULL && *dialogHdl != NULL)
		HPurge ((Handle) dialogHdl);
	
	dp = NULL;
	dialogHdl = NULL;
	
	return item == ok;
	
	
	} // else
}