aboutsummaryrefslogtreecommitdiffstats
path: root/q3radiant/MRU.CPP
diff options
context:
space:
mode:
authorzakk <zakk@edf5b092-35ff-0310-97b2-ce42778d08ea>2005-08-26 05:42:38 +0000
committerzakk <zakk@edf5b092-35ff-0310-97b2-ce42778d08ea>2005-08-26 05:42:38 +0000
commit2177daffd38e1b372613a716d6d18d274d4b6b48 (patch)
tree266f200f6e994b58cd2edd1977e38f33ae8d1432 /q3radiant/MRU.CPP
parent66e25509ada30d13e64db67df8365c75f1ccd059 (diff)
downloadioquake3-aero-2177daffd38e1b372613a716d6d18d274d4b6b48.tar.gz
ioquake3-aero-2177daffd38e1b372613a716d6d18d274d4b6b48.zip
See the readme.
git-svn-id: svn://svn.icculus.org/quake3/trunk@4 edf5b092-35ff-0310-97b2-ce42778d08ea
Diffstat (limited to 'q3radiant/MRU.CPP')
-rwxr-xr-xq3radiant/MRU.CPP671
1 files changed, 0 insertions, 671 deletions
diff --git a/q3radiant/MRU.CPP b/q3radiant/MRU.CPP
deleted file mode 100755
index d675362..0000000
--- a/q3radiant/MRU.CPP
+++ /dev/null
@@ -1,671 +0,0 @@
-/*
-===========================================================================
-Copyright (C) 1999-2005 Id Software, Inc.
-
-This file is part of Quake III Arena source code.
-
-Quake III Arena source code is free software; you can redistribute it
-and/or modify it under the terms of the GNU General Public License as
-published by the Free Software Foundation; either version 2 of the License,
-or (at your option) any later version.
-
-Quake III Arena source code is distributed in the hope that it will be
-useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with Foobar; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-===========================================================================
-*/
-//*************************************************************
-// File name: mru.c
-//
-// Description:
-//
-// Routines for MRU support
-//
-// Development Team:
-//
-// Gilles Vollant (100144.2636@compuserve.com)
-//
-//*************************************************************
-
-#include "stdafx.h"
-#include <windows.h>
-#include <windowsx.h>
-#include <string.h>
-
-#include "mru.h"
-// CreateMruMenu : MRUMENU constructor
-// wNbLruShowInit : nb of item showed in menu
-// wNbLruMenuInit : nb of item stored in memory
-// wMaxSizeLruItemInit : size max. of filename
-
-
-//*************************************************************
-//
-// CreateMruMenu()
-//
-// Purpose:
-//
-// Allocate and Initialize an MRU and return a pointer on it
-//
-//
-// Parameters:
-//
-// WORD wNbLruShowInit - Maximum number of item displayed on menu
-// WORD wNbLruMenuInit - Maximum number of item stored in memory
-// WORD wMaxSizeLruItemInit - Maximum size of an item (ie size of pathname)
-// WORD wIdMruInit - ID of the first item in the menu (default:IDMRU)
-//
-//
-// Return: (LPMRUMENU)
-//
-// Pointer on a MRUMENU structure, used by other function
-//
-//
-// Comments:
-// wNbLruShowInit <= wNbLruMenuInit
-//
-//
-// History: Date Author Comment
-// 09/24/94 G. Vollant Created
-//
-//*************************************************************
-
-LPMRUMENU CreateMruMenu (WORD wNbLruShowInit,
- WORD wNbLruMenuInit,WORD wMaxSizeLruItemInit,WORD wIdMruInit)
-{
-LPMRUMENU lpMruMenu;
- lpMruMenu = (LPMRUMENU)GlobalAllocPtr(GHND,sizeof(MRUMENU));
-
- lpMruMenu->wNbItemFill = 0;
- lpMruMenu->wNbLruMenu = wNbLruMenuInit;
- lpMruMenu->wNbLruShow = wNbLruShowInit;
- lpMruMenu->wIdMru = wIdMruInit;
- lpMruMenu->wMaxSizeLruItem = wMaxSizeLruItemInit;
- lpMruMenu->lpMRU = (LPSTR)GlobalAllocPtr(GHND,
- lpMruMenu->wNbLruMenu*(UINT)lpMruMenu->wMaxSizeLruItem);
- if (lpMruMenu->lpMRU == NULL)
- {
- GlobalFreePtr(lpMruMenu);
- lpMruMenu = NULL;
- }
- return lpMruMenu;
-}
-
-//*************************************************************
-//
-// CreateMruMenuDefault()
-//
-// Purpose:
-//
-// Allocate and Initialize an MRU and return a pointer on it
-// Use default parameter
-//
-//
-// Parameters:
-//
-//
-// Return: (LPMRUMENU)
-//
-// Pointer on a MRUMENU structure, used by other function
-//
-//
-// Comments:
-//
-//
-// History: Date Author Comment
-// 09/24/94 G. Vollant Created
-//
-//*************************************************************
-
-LPMRUMENU CreateMruMenuDefault()
-{
- return CreateMruMenu (NBMRUMENUSHOW,NBMRUMENU,MAXSIZEMRUITEM,IDMRU);
-}
-
-
-//*************************************************************
-//
-// DeleteMruMenu()
-//
-// Purpose:
-// Destructor :
-// Clean and free a MRUMENU structure
-//
-// Parameters:
-//
-// LPMRUMENU lpMruMenu - pointer on MRUMENU, allocated
-// by CreateMruMenu() or CreateMruMenuDefault()
-//
-//
-// Return: void
-//
-//
-// Comments:
-//
-//
-// History: Date Author Comment
-// 09/24/94 G. Vollant Created
-//
-//*************************************************************
-void DeleteMruMenu(LPMRUMENU lpMruMenu)
-{
- GlobalFreePtr(lpMruMenu->lpMRU);
- GlobalFreePtr(lpMruMenu);
-}
-
-//*************************************************************
-//
-// SetNbLruShow()
-//
-// Purpose:
-// Change the maximum number of item displayed on menu
-//
-// Parameters:
-// LPMRUMENU lpMruMenu - pointer on MRUMENU
-// WORD wNbLruShowInit - Maximum number of item displayed on menu
-//
-//
-// Return: void
-//
-//
-// Comments:
-//
-//
-// History: Date Author Comment
-// 09/24/94 G. Vollant Created
-//
-//*************************************************************
-void SetNbLruShow (LPMRUMENU lpMruMenu,WORD wNbLruShowInit)
-{
- lpMruMenu->wNbLruShow = min(wNbLruShowInit,lpMruMenu->wNbLruMenu);
-}
-
-//*************************************************************
-//
-// SetMenuItem()
-//
-// Purpose:
-// Set the filename of an item
-//
-// Parameters:
-// LPMRUMENU lpMruMenu - pointer on MRUMENU
-// WORD wItem - Number of Item to set, zero based
-// LPSTR lpItem - String, contain the filename of the item
-//
-//
-// Return: (BOOL)
-// TRUE - Function run successfully
-// FALSE - Function don't run successfully
-//
-//
-// Comments:
-// used when load .INI or reg database
-//
-// History: Date Author Comment
-// 09/24/94 G. Vollant Created
-//
-//*************************************************************
-BOOL SetMenuItem (LPMRUMENU lpMruMenu,WORD wItem,LPSTR lpItem)
-{
- if (wItem >= NBMRUMENU)
- return FALSE;
- _fstrncpy((lpMruMenu->lpMRU) +
- ((lpMruMenu->wMaxSizeLruItem) * (UINT)wItem),
- lpItem,lpMruMenu->wMaxSizeLruItem-1);
- lpMruMenu->wNbItemFill = max(lpMruMenu->wNbItemFill,wItem+1);
- return TRUE;
-}
-
-//*************************************************************
-//
-// GetMenuItem()
-//
-// Purpose:
-// Get the filename of an item
-//
-// Parameters:
-// LPMRUMENU lpMruMenu - pointer on MRUMENU
-// WORD wItem - Number of Item to set, zero based
-// BOOL fIDMBased - TRUE : wItem is based on ID menu item
-// FALSE : wItem is zero-based
-// LPSTR lpItem - String where the filename of the item will be
-// stored by GetMenuItem()
-// UINT uiSize - Size of the lpItem buffer
-//
-//
-// Return: (BOOL)
-// TRUE - Function run successfully
-// FALSE - Function don't run successfully
-//
-//
-// Comments:
-// Used for saving in .INI or reg database, or when user select
-// an MRU in File menu
-//
-// History: Date Author Comment
-// 09/24/94 G. Vollant Created
-//
-//*************************************************************
-BOOL GetMenuItem (LPMRUMENU lpMruMenu,WORD wItem,
- BOOL fIDMBased,LPSTR lpItem,UINT uiSize)
-{
- if (fIDMBased)
- wItem -= (lpMruMenu->wIdMru + 1);
- if (wItem >= lpMruMenu->wNbItemFill)
- return FALSE;
- _fstrncpy(lpItem,(lpMruMenu->lpMRU) +
- ((lpMruMenu->wMaxSizeLruItem) * (UINT)(wItem)),uiSize);
- *(lpItem+uiSize-1) = '\0';
- return TRUE;
-}
-
-//*************************************************************
-//
-// AddNewItem()
-//
-// Purpose:
-// Add an item at the begin of the list
-//
-// Parameters:
-// LPMRUMENU lpMruMenu - pointer on MRUMENU
-// LPSTR lpItem - String contain the filename to add
-//
-// Return: (BOOL)
-// TRUE - Function run successfully
-// FALSE - Function don't run successfully
-//
-//
-// Comments:
-// Used when used open a file (using File Open common
-// dialog, Drag and drop or MRU)
-//
-// History: Date Author Comment
-// 09/24/94 G. Vollant Created
-//
-//*************************************************************
-void AddNewItem (LPMRUMENU lpMruMenu,LPSTR lpItem)
-{
-WORD i,j;
- for (i=0;i<lpMruMenu->wNbItemFill;i++)
- if (lstrcmpi(lpItem,(lpMruMenu->lpMRU) +
- ((lpMruMenu->wMaxSizeLruItem) * (UINT)i)) == 0)
- {
- // Shift the other items
- for (j=i;j>0;j--)
- lstrcpy((lpMruMenu->lpMRU) + (lpMruMenu->wMaxSizeLruItem * (UINT)j),
- (lpMruMenu->lpMRU) + (lpMruMenu->wMaxSizeLruItem * (UINT)(j-1)));
- _fstrncpy(lpMruMenu->lpMRU,lpItem,lpMruMenu->wMaxSizeLruItem-1);
- return ;
- }
- lpMruMenu->wNbItemFill = min(lpMruMenu->wNbItemFill+1,lpMruMenu->wNbLruMenu);
- for (i=lpMruMenu->wNbItemFill-1;i>0;i--)
- lstrcpy(lpMruMenu->lpMRU + (lpMruMenu->wMaxSizeLruItem * (UINT)i),
- lpMruMenu->lpMRU + (lpMruMenu->wMaxSizeLruItem * (UINT)(i-1)));
- _fstrncpy(lpMruMenu->lpMRU,lpItem,lpMruMenu->wMaxSizeLruItem-1);
-}
-
-//*************************************************************
-//
-// DelMenuItem()
-//
-// Purpose:
-// Delete an item
-//
-// Parameters:
-// LPMRUMENU lpMruMenu - pointer on MRUMENU
-// WORD wItem - Number of Item to set, zero based
-// BOOL fIDMBased - TRUE : wItem is based on ID menu item
-// FALSE : wItem is zero-based
-//
-// Return: (BOOL)
-// TRUE - Function run successfully
-// FALSE - Function don't run successfully
-//
-//
-// Comments:
-// Used when used open a file, using MRU, and when an error
-// occured (by example, when file was deleted)
-//
-// History: Date Author Comment
-// 09/24/94 G. Vollant Created
-//
-//*************************************************************
-BOOL DelMenuItem(LPMRUMENU lpMruMenu,WORD wItem,BOOL fIDMBased)
-{
-WORD i;
- if (fIDMBased)
- wItem -= (lpMruMenu->wIdMru + 1);
- if (lpMruMenu->wNbItemFill <= wItem)
- return FALSE;
- lpMruMenu->wNbItemFill--;
- for (i=wItem;i<lpMruMenu->wNbItemFill;i++)
- lstrcpy(lpMruMenu->lpMRU + (lpMruMenu->wMaxSizeLruItem * (UINT)i),
- lpMruMenu->lpMRU + (lpMruMenu->wMaxSizeLruItem * (UINT)(i+1)));
- return TRUE;
-}
-
-//*************************************************************
-//
-// PlaceMenuMRUItem()
-//
-// Purpose:
-// Add MRU at the end of a menu
-//
-// Parameters:
-// LPMRUMENU lpMruMenu - pointer on MRUMENU
-// HMENU hMenu - Handle of menu where MRU must be added
-// UINT uiItem - Item of menu entry where MRU must be added
-//
-// Return: void
-//
-//
-// Comments:
-// Used MRU is modified, for refresh the File menu
-//
-// History: Date Author Comment
-// 09/24/94 G. Vollant Created
-//
-//*************************************************************
-void PlaceMenuMRUItem(LPMRUMENU lpMruMenu,HMENU hMenu,UINT uiItem)
-{
-int i;
-WORD wNbShow;
- if (hMenu == NULL)
- return;
- // remove old MRU in menu
- for (i=0;i<=(int)(lpMruMenu->wNbLruMenu);i++)
- RemoveMenu(hMenu,i+lpMruMenu->wIdMru,MF_BYCOMMAND);
-
- if (lpMruMenu->wNbItemFill == 0)
- return;
-
- // If they are item, insert a separator before the files
- InsertMenu(hMenu,uiItem,MF_SEPARATOR,lpMruMenu->wIdMru,NULL);
-
- wNbShow = min(lpMruMenu->wNbItemFill,lpMruMenu->wNbLruShow);
- for (i=(int)wNbShow-1;i>=0;i--)
- {
- LPSTR lpTxt;
- if (lpTxt = (LPSTR)GlobalAllocPtr(GHND,lpMruMenu->wMaxSizeLruItem + 20))
- {
- wsprintf(lpTxt,"&%lu %s",
- (DWORD)(i+1),lpMruMenu->lpMRU + (lpMruMenu->wMaxSizeLruItem*(UINT)i));
- InsertMenu(hMenu,(((WORD)i)!=(wNbShow-1)) ? (lpMruMenu->wIdMru+i+2) : lpMruMenu->wIdMru,
- MF_STRING,lpMruMenu->wIdMru+i+1,lpTxt);
- GlobalFreePtr(lpTxt);
- }
- }
-
-}
-
-///////////////////////////////////////////
-
-
-
-//*************************************************************
-//
-// SaveMruInIni()
-//
-// Purpose:
-// Save MRU in a private .INI
-//
-// Parameters:
-// LPMRUMENU lpMruMenu - pointer on MRUMENU
-// LPSTR lpszSection - Points to a null-terminated string containing
-// the name of the section
-// LPSTR lpszFile - Points to a null-terminated string that names
-// the initialization file.
-//
-// Return: (BOOL)
-// TRUE - Function run successfully
-// FALSE - Function don't run successfully
-//
-//
-// Comments:
-// See WritePrivateProfileString API for more info on lpszSection and lpszFile
-//
-// History: Date Author Comment
-// 09/24/94 G. Vollant Created
-//
-//*************************************************************
-BOOL SaveMruInIni(LPMRUMENU lpMruMenu,LPSTR lpszSection,LPSTR lpszFile)
-{
-LPSTR lpTxt;
-WORD i;
-
- lpTxt = (LPSTR)GlobalAllocPtr(GHND,lpMruMenu->wMaxSizeLruItem + 20);
- if (lpTxt == NULL)
- return FALSE;
-
- for (i=0;i<lpMruMenu->wNbLruMenu;i++)
- {
- char szEntry[16];
- wsprintf(szEntry,"File%lu",(DWORD)i+1);
- if (!GetMenuItem(lpMruMenu,i,FALSE,lpTxt,lpMruMenu->wMaxSizeLruItem + 10))
- *lpTxt = '\0';
- WritePrivateProfileString(lpszSection,szEntry,lpTxt,lpszFile);
- }
- GlobalFreePtr(lpTxt);
- WritePrivateProfileString(NULL,NULL,NULL,lpszFile); // flush cache
- return TRUE;
-}
-
-
-//*************************************************************
-//
-// LoadMruInIni()
-//
-// Purpose:
-// Load MRU from a private .INI
-//
-// Parameters:
-// LPMRUMENU lpMruMenu - pointer on MRUMENU
-// LPSTR lpszSection - Points to a null-terminated string containing
-// the name of the section
-// LPSTR lpszFile - Points to a null-terminated string that names
-// the initialization file.
-//
-// Return: (BOOL)
-// TRUE - Function run successfully
-// FALSE - Function don't run successfully
-//
-//
-// Comments:
-// See GetPrivateProfileString API for more info on lpszSection and lpszFile
-//
-// History: Date Author Comment
-// 09/24/94 G. Vollant Created
-//
-//*************************************************************
-BOOL LoadMruInIni(LPMRUMENU lpMruMenu,LPSTR lpszSection,LPSTR lpszFile)
-{
-LPSTR lpTxt;
-WORD i;
- lpTxt = (LPSTR)GlobalAllocPtr(GHND,lpMruMenu->wMaxSizeLruItem + 20);
- if (lpTxt == NULL)
- return FALSE;
-
- for (i=0;i<lpMruMenu->wNbLruMenu;i++)
- {
- char szEntry[16];
-
- wsprintf(szEntry,"File%lu",(DWORD)i+1);
- GetPrivateProfileString(lpszSection,szEntry,"",lpTxt,
- lpMruMenu->wMaxSizeLruItem + 10,lpszFile);
- if (*lpTxt == '\0')
- break;
- SetMenuItem(lpMruMenu,i,lpTxt);
- }
- GlobalFreePtr(lpTxt);
- return TRUE;
-}
-
-#ifdef WIN32
-
-BOOL IsWin395OrHigher(void)
-{
- WORD wVer;
-
- wVer = LOWORD(GetVersion());
- wVer = (((WORD)LOBYTE(wVer)) << 8) | (WORD)HIBYTE(wVer);
-
- return (wVer >= 0x035F); // 5F = 95 dec
-}
-
-
-//*************************************************************
-//
-// SaveMruInReg()
-//
-// Purpose:
-// Save MRU in the registry
-//
-// Parameters:
-// LPMRUMENU lpMruMenu - pointer on MRUMENU
-// LPSTR lpszKey - Points to a null-terminated string
-// specifying the name of a key that
-// this function opens or creates.
-//
-// Return: (BOOL)
-// TRUE - Function run successfully
-// FALSE - Function don't run successfully
-//
-//
-// Comments:
-// Win32 function designed for Windows NT and Windows 95
-// See RegCreateKeyEx API for more info on lpszKey
-//
-// History: Date Author Comment
-// 09/24/94 G. Vollant Created
-//
-//*************************************************************
-BOOL SaveMruInReg(LPMRUMENU lpMruMenu,LPSTR lpszKey)
-{
-LPSTR lpTxt;
-WORD i;
-HKEY hCurKey;
-DWORD dwDisp;
-
- lpTxt = (LPSTR)GlobalAllocPtr(GHND,lpMruMenu->wMaxSizeLruItem + 20);
- if (lpTxt == NULL)
- return FALSE;
-
- RegCreateKeyEx(HKEY_CURRENT_USER,lpszKey,0,NULL,
- REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hCurKey,&dwDisp);
-
- for (i=0;i<lpMruMenu->wNbLruMenu;i++)
- {
- char szEntry[16];
- wsprintf(szEntry,"File%lu",(DWORD)i+1);
- if (!GetMenuItem(lpMruMenu,i,FALSE,lpTxt,lpMruMenu->wMaxSizeLruItem + 10))
- *lpTxt = '\0';
- RegSetValueEx(hCurKey,szEntry,0,REG_SZ,(unsigned char*)lpTxt,lstrlen(lpTxt));
- }
- RegCloseKey(hCurKey);
- GlobalFreePtr(lpTxt);
- return TRUE;
-}
-
-//*************************************************************
-//
-// LoadMruInReg()
-//
-// Purpose:
-// Load MRU from the registry
-//
-// Parameters:
-// LPMRUMENU lpMruMenu - pointer on MRUMENU
-// LPSTR lpszKey - Points to a null-terminated string
-// specifying the name of a key that
-// this function opens or creates.
-//
-// Return: (BOOL)
-// TRUE - Function run successfully
-// FALSE - Function don't run successfully
-//
-//
-// Comments:
-// Win32 function designed for Windows NT and Windows 95
-// See RegOpenKeyEx API for more info on lpszKey
-//
-// History: Date Author Comment
-// 09/24/94 G. Vollant Created
-//
-//*************************************************************
-BOOL LoadMruInReg(LPMRUMENU lpMruMenu,LPSTR lpszKey)
-{
-LPSTR lpTxt;
-WORD i;
-HKEY hCurKey;
-DWORD dwType;
- lpTxt = (LPSTR)GlobalAllocPtr(GHND,lpMruMenu->wMaxSizeLruItem + 20);
- if (lpTxt == NULL)
- return FALSE;
-
- RegOpenKeyEx(HKEY_CURRENT_USER,lpszKey,0,KEY_READ,&hCurKey);
-
-
- for (i=0;i<lpMruMenu->wNbLruMenu;i++)
- {
- char szEntry[16];
- DWORD dwSizeBuf;
- wsprintf(szEntry,"File%lu",(DWORD)i+1);
- *lpTxt = '\0';
- dwSizeBuf = lpMruMenu->wMaxSizeLruItem + 10;
- RegQueryValueEx(hCurKey,szEntry,NULL,&dwType,(LPBYTE)lpTxt,&dwSizeBuf);
- *(lpTxt+dwSizeBuf)='\0';
- if (*lpTxt == '\0')
- break;
- SetMenuItem(lpMruMenu,i,lpTxt);
- }
- RegCloseKey(hCurKey);
- GlobalFreePtr(lpTxt);
- return TRUE;
-}
-
-
-//*************************************************************
-//
-// GetWin32Kind()
-//
-// Purpose:
-// Get the Win32 platform
-//
-// Parameters:
-//
-// Return: (WIN32KIND)
-// WINNT - Run under Windows NT
-// WIN32S - Run under Windows 3.1x + Win32s
-// WIN95ORGREATHER - Run under Windows 95
-//
-//
-// Comments:
-// Win32 function designed for Windows NT and Windows 95
-// See RegOpenKeyEx API for more info on lpszKey
-//
-// History: Date Author Comment
-// 09/24/94 G. Vollant Created
-//
-//*************************************************************
-WIN32KIND GetWin32Kind()
-{
-BOOL IsWin395OrHigher(void);
-
- WORD wVer;
-
- if ((GetVersion() & 0x80000000) == 0)
- return WINNT;
- wVer = LOWORD(GetVersion());
- wVer = (((WORD)LOBYTE(wVer)) << 8) | (WORD)HIBYTE(wVer);
-
- if (wVer >= 0x035F)
- return WIN95ORGREATHER;
- else
- return WIN32S;
-}
-#endif