macabout.c

来自「大名鼎鼎的远程登录软件putty的Symbian版源码」· C语言 代码 · 共 190 行

C
190
字号
/* $Id: macabout.c,v 1.1.1.1 2003/06/02 15:55:41 pekangas Exp $ *//* * Copyright (c) 1999, 2002, 2003 Ben Harris * All rights reserved. * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, * copy, modify, merge, publish, distribute, sublicense, and/or * sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following * conditions: *  * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. *  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */#include <MacTypes.h>#include <Dialogs.h>#include <MacWindows.h>#include <Resources.h>#include <Script.h>#include <ToolUtils.h>#include <assert.h>#include <stdlib.h>#include "putty.h"#include "mac.h"#include "macresid.h"static struct mac_windows {    WindowPtr about;    WindowPtr licence;} windows;static void mac_openlicence(void);static void mac_clickabout(WindowPtr window, EventRecord *event){    short item;    DialogRef dialog;    dialog = GetDialogFromWindow(window);    if (DialogSelect(event, &dialog, &item))	switch (item) {	  case wiAboutLicence:	    mac_openlicence();	    break;	}}static void mac_activateabout(WindowPtr window, EventRecord *event){    DialogRef dialog;    DialogItemType itemtype;    Handle itemhandle;    short item;    Rect itemrect;    int active;    dialog = GetDialogFromWindow(window);    active = (event->modifiers & activeFlag) != 0;    GetDialogItem(dialog, wiAboutLicence, &itemtype, &itemhandle, &itemrect);    HiliteControl((ControlHandle)itemhandle, active ? 0 : 255);    DialogSelect(event, &dialog, &item);}static void mac_updateabout(WindowPtr window){#if TARGET_API_MAC_CARBON    RgnHandle rgn;#endif    BeginUpdate(window);#if TARGET_API_MAC_CARBON    rgn = NewRgn();    GetPortVisibleRegion(GetWindowPort(window), rgn);    UpdateDialog(GetDialogFromWindow(window), rgn);    DisposeRgn(rgn);#else    UpdateDialog(window, window->visRgn);#endif    EndUpdate(window);}static void mac_closeabout(WindowPtr window){    windows.about = NULL;    DisposeDialog(GetDialogFromWindow(window));}static void mac_updatelicence(WindowPtr window){    Handle h;    int len;    long fondsize;    Rect textrect;    SetPort((GrafPtr)GetWindowPort(window));    BeginUpdate(window);    fondsize = GetScriptVariable(smRoman, smScriptSmallFondSize);    TextFont(HiWord(fondsize));    TextSize(LoWord(fondsize));    h = Get1Resource('TEXT', wLicence);    len = GetResourceSizeOnDisk(h);#if TARGET_API_MAC_CARBON    GetPortBounds(GetWindowPort(window), &textrect);#else    textrect = window->portRect;#endif    if (h != NULL) {	HLock(h);	TETextBox(*h, len, &textrect, teFlushDefault);	HUnlock(h);    }    EndUpdate(window);}static void mac_closelicence(WindowPtr window){    windows.licence = NULL;    DisposeWindow(window);}void mac_openabout(void){    DialogItemType itemtype;    Handle item;    VersRecHndl vers;    Rect box;    StringPtr longvers;    WinInfo *wi;    if (windows.about)	SelectWindow(windows.about);    else {	windows.about =	    GetDialogWindow(GetNewDialog(wAbout, NULL, (WindowPtr)-1));	wi = snew(WinInfo);	memset(wi, 0, sizeof(*wi));	wi->wtype = wAbout;	wi->update = &mac_updateabout;	wi->click = &mac_clickabout;	wi->activate = &mac_activateabout;	wi->close = &mac_closeabout;	SetWRefCon(windows.about, (long)wi);	vers = (VersRecHndl)Get1Resource('vers', 1);	if (vers != NULL && *vers != NULL) {	    longvers = (*vers)->shortVersion + (*vers)->shortVersion[0] + 1;	    GetDialogItem(GetDialogFromWindow(windows.about), wiAboutVersion,			  &itemtype, &item, &box);	    assert(itemtype & kStaticTextDialogItem);	    SetDialogItemText(item, longvers);	}	ShowWindow(windows.about);    }}static void mac_openlicence(void){    WinInfo *wi;    if (windows.licence)	SelectWindow(windows.licence);    else {	windows.licence = GetNewWindow(wLicence, NULL, (WindowPtr)-1);	wi = snew(WinInfo);	memset(wi, 0, sizeof(*wi));	wi->wtype = wLicence;	wi->update = &mac_updatelicence;	wi->close = &mac_closelicence;	SetWRefCon(windows.licence, (long)wi);	ShowWindow(windows.licence);    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?