Files
magic/utils/macros.h
T
R. Timothy Edwards 27c423c2ed Substantially revised the "macro" command callback functions and
the "tool" implementation.  Previously, the "tool" implementation
would overwrite the button bindings for the mouse.  The problem
with that is that if the user customizes one or more of the
bindings, such as using the mouse wheel for zooming instead of
panning, then the custom macro gets obliterated when the tool
changes.  The reimplementation creates multiple macro sets which
are unique to each tool.  The "enable_tools" function sets up
the initial unique default bindings for each tool.  The user
can then customize the bindings for any tool, and the
implementation no longer requires the constant changing of key
bindings.  Note that the new implementation is slightly less
efficient because the macro tables are found by string hash
based on the name of the tool or client type, not the integer
client ID.  The reduction in efficiency is balanced by the
increased flexibility of the macros.
2025-10-09 15:43:54 -04:00

56 lines
1.8 KiB
C

/*
* macros.h --
*
* Routines to define and retrieve macros
*
* *********************************************************************
* * Copyright (C) 1985, 1990 Regents of the University of California. *
* * Permission to use, copy, modify, and distribute this *
* * software and its documentation for any purpose and without *
* * fee is hereby granted, provided that the above copyright *
* * notice appear in all copies. The University of California *
* * makes no representations about the suitability of this *
* * software for any purpose. It is provided "as is" without *
* * express or implied warranty. Export of this software outside *
* * of the United States of America may require an export license. *
* *********************************************************************
*
*
* rcsid "$Header: /usr/cvsroot/magic-8.0/utils/macros.h,v 1.1.1.1 2008/02/03 20:43:50 tim Exp $"
*/
#ifndef _MAGIC__UTILS__MACROS_H
#define _MAGIC__UTILS__MACROS_H
#include "utils/magic.h"
#include "utils/hash.h"
/*
* Macro data structure
*/
typedef struct {
char *macrotext;
bool interactive;
char *helptext;
} macrodef;
/* macro directory */
extern HashTable MacroClients;
/* procedures */
extern void MacroInit();
extern void MacroDefine();
extern void MacroDefineHelp();
extern void MacroDefineInt();
extern char *MacroRetrieve(); /* returns a malloc'ed string */
extern char *MacroRetrieveHelp(); /* returns a malloc'ed string */
extern char *MacroSubstitute(); /* returns a malloc'ed string */
extern void MacroDelete();
extern char *MacroName(); /* returns a malloc'ed string */
extern void MacroCopy();
extern int MacroKey();
extern int MacroCode();
#endif /* _MAGIC__UTILS__MACROS_H */