iup-stack/iup/srcscintilla/iupsci_bracelight.c

129 lines
3.6 KiB
C
Raw Normal View History

2023-02-20 16:44:45 +00:00
/** \file
* \brief Scintilla control: Brace highlighting
*
* See Copyright Notice in "iup.h"
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <Scintilla.h>
#include "iup.h"
#include "iup_object.h"
#include "iup_attrib.h"
#include "iup_str.h"
#include "iupsci.h"
/***** BRACE HIGHLIGHTING ****
SCI_BRACEHIGHLIGHT(int pos1, int pos2)
SCI_BRACEBADLIGHT(int pos1)
SCI_BRACEHIGHLIGHTINDICATOR(bool useBraceHighlightIndicator, int indicatorNumber)
SCI_BRACEBADLIGHTINDICATOR(bool useBraceBadLightIndicator, int indicatorNumber)
SCI_BRACEMATCH(int position, int maxReStyle)
*/
static int iScintillaSetBraceHighlightAttrib(Ihandle* ih, const char* value)
{
int pos1, pos2;
if (iupStrToIntInt(value, &pos1, &pos2, ':') != 2)
return 0;
IupScintillaSendMessage(ih, SCI_BRACEHIGHLIGHT, pos1, pos2);
return 0;
}
static int iScintillaSetBraceBadlightAttrib(Ihandle* ih, const char* value)
{
int pos1;
if (!iupStrToInt(value, &pos1))
return 0;
IupScintillaSendMessage(ih, SCI_BRACEBADLIGHT, pos1, 0);
return 0;
}
/*
static int iScintillaSetBraceHighlightIndicatorAttrib(Ihandle* ih, const char* value)
{
int indicatorNumber;
if (!iupStrToInt(value, &indicatorNumber))
return 0;
IupScintillaSendMessage(ih, SCI_BRACEHIGHLIGHTINDICATOR, ih->data->useBraceHLIndicator, indicatorNumber);
return 0;
}
static int iScintillaSetBraceBadlightIndicatorAttrib(Ihandle* ih, const char* value)
{
int indicatorNumber;
if (!iupStrToInt(value, &indicatorNumber))
return 0;
IupScintillaSendMessage(ih, SCI_BRACEBADLIGHTINDICATOR, ih->data->useBraceBLIndicator, indicatorNumber);
return 0;
}
static int iScintillaSetUseBraceHLIndicatorAttrib(Ihandle *ih, const char *value)
{
if (iupStrBoolean(value))
ih->data->useBraceHLIndicator = 1;
else
ih->data->useBraceHLIndicator = 0;
return 0;
}
static char* iScintillaGetUseBraceHLIndicatorAttrib(Ihandle* ih)
{
return iupStrReturnBoolean (ih->data->useBraceHLIndicator);
}
static int iScintillaSetUseBraceBLIndicatorAttrib(Ihandle *ih, const char *value)
{
if (iupStrBoolean(value))
ih->data->useBraceBLIndicator = 1;
else
ih->data->useBraceBLIndicator = 0;
return 0;
}
static char* iScintillaGetUseBraceBLIndicatorAttrib(Ihandle* ih)
{
return iupStrReturnBoolean (ih->data->useBraceBLIndicator);
}
*/
static char* iScintillaGetBraceMatchAttribId(Ihandle* ih, int pos)
{
if (pos < 0)
return "-1";
return iupStrReturnInt((int)IupScintillaSendMessage(ih, SCI_BRACEMATCH, pos, 0));
}
void iupScintillaRegisterBraceLight(Iclass* ic)
{
iupClassRegisterAttribute(ic, "BRACEHIGHLIGHT", NULL, iScintillaSetBraceHighlightAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
iupClassRegisterAttribute(ic, "BRACEBADLIGHT", NULL, iScintillaSetBraceBadlightAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT);
/* unused until we support Indicators */
/* iupClassRegisterAttribute(ic, "BRACEHLINDICATOR", NULL, iScintillaSetBraceHighlightIndicatorAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); */
/* iupClassRegisterAttribute(ic, "BRACEBLINDICATOR", NULL, iScintillaSetBraceBadlightIndicatorAttrib, NULL, NULL, IUPAF_WRITEONLY|IUPAF_NO_INHERIT); */
/* iupClassRegisterAttribute(ic, "USEBRACEHLINDICATOR", iScintillaGetUseBraceHLIndicatorAttrib, iScintillaSetUseBraceHLIndicatorAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT); */
/* iupClassRegisterAttribute(ic, "USEBRACEBLINDICATOR", iScintillaGetUseBraceBLIndicatorAttrib, iScintillaSetUseBraceBLIndicatorAttrib, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT); */
iupClassRegisterAttributeId(ic, "BRACEMATCH", iScintillaGetBraceMatchAttribId, NULL, IUPAF_READONLY|IUPAF_NO_INHERIT);
}