447 lines
18 KiB
C
447 lines
18 KiB
C
/*
|
||
* settings.c
|
||
*
|
||
* Created on: 6 июл. 2022 г.
|
||
* Author: alexander
|
||
*/
|
||
|
||
#include <iup.h>
|
||
|
||
#include <stdlib.h>
|
||
#include <stdbool.h>
|
||
|
||
#include "monitor.h"
|
||
#include <stdio.h>
|
||
|
||
#include "settings.h"
|
||
#include "arguments.h"
|
||
#include "node_settings.h"
|
||
#include "about.h"
|
||
|
||
void toggleActive(Ihandle *self, char *name)
|
||
{
|
||
IupSetInt(IupGetDialogChild(self, name), "ACTIVE", !IupGetInt(IupGetDialogChild(self, name), "ACTIVE"));
|
||
}
|
||
|
||
static int settingsClose(Ihandle *self)
|
||
{
|
||
resetChangeSettings();
|
||
IupSetAttribute(IupGetDialog(self), "SIMULATEMODAL", "OFF");
|
||
IupHide(IupGetDialog(self));
|
||
return IUP_DEFAULT;
|
||
}
|
||
|
||
static int settingsSave(Ihandle *self)
|
||
{
|
||
saveChangeSettings();
|
||
dbSaveMonitors(IupGetAttribute(IupGetDialogChild(self, "MONITORS"), "VALUESTRING"));
|
||
IupSetAttribute(IupGetDialog(self), "SIMULATEMODAL", "OFF");
|
||
IupHide(IupGetDialog(self));
|
||
return IUP_DEFAULT;
|
||
}
|
||
|
||
static int settingsTglAuthentication(Ihandle *self)
|
||
{
|
||
changeParameter(PARAMETER_AUTHENTICATION);
|
||
return IUP_DEFAULT;
|
||
}
|
||
|
||
static int settingsTglCertIgnore(Ihandle *self)
|
||
{
|
||
changeParameter(PARAMETER_CERTIGNORE);
|
||
return IUP_DEFAULT;
|
||
}
|
||
|
||
static int settingsTglThemes(Ihandle *self)
|
||
{
|
||
changeParameter(PARAMETER_THEMES);
|
||
return IUP_DEFAULT;
|
||
}
|
||
|
||
static int settingsTglWallpaper(Ihandle *self)
|
||
{
|
||
changeParameter(PARAMETER_WALLPAPER);
|
||
return IUP_DEFAULT;
|
||
}
|
||
|
||
static int settingsTglDecorations(Ihandle *self)
|
||
{
|
||
changeParameter(PARAMETER_DECORATIONS);
|
||
return IUP_DEFAULT;
|
||
}
|
||
|
||
static int settingsTglSound(Ihandle *self)
|
||
{
|
||
changeParameter(PARAMETER_SOUND);
|
||
return IUP_DEFAULT;
|
||
}
|
||
|
||
static int settingsTglFonts(Ihandle *self)
|
||
{
|
||
changeParameter(PARAMETER_FONTS);
|
||
return IUP_DEFAULT;
|
||
}
|
||
|
||
static int settingsTglEncryption(Ihandle *self)
|
||
{
|
||
changeParameter(PARAMETER_ENCRYPTION);
|
||
return IUP_DEFAULT;
|
||
}
|
||
|
||
static int settingsTglCompression(Ihandle *self)
|
||
{
|
||
changeParameter(PARAMETER_COMPRESSION);
|
||
return IUP_DEFAULT;
|
||
}
|
||
|
||
static int settingsUseSecurity(Ihandle *self)
|
||
{
|
||
changeParameter(PARAMETER_SECURITY);
|
||
toggleActive(self, "SECURITY_TLS");
|
||
toggleActive(self, "SECURITY_RDP");
|
||
toggleActive(self, "SECURITY_NLA");
|
||
toggleActive(self, "SECURITY_EXT");
|
||
|
||
return IUP_DEFAULT;
|
||
}
|
||
|
||
static void settingsChooseSecurity(Ihandle *self, int state)
|
||
{
|
||
if (state == 1)
|
||
{
|
||
int tool_index = IupGetInt(self, "TOOLINDEX");
|
||
switch (tool_index)
|
||
{
|
||
case 0:
|
||
{
|
||
changeValue(PARAMETER_SECURITY, VALUE_SECURITY_TLS);
|
||
break;
|
||
}
|
||
case 1:
|
||
{
|
||
changeValue(PARAMETER_SECURITY, VALUE_SECURITY_RDP);
|
||
break;
|
||
}
|
||
case 2:
|
||
{
|
||
changeValue(PARAMETER_SECURITY, VALUE_SECURITY_NLA);
|
||
break;
|
||
}
|
||
case 3:
|
||
{
|
||
changeValue(PARAMETER_SECURITY, VALUE_SECURITY_EXT);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
static int settingsUseBitsPerPixel(Ihandle *self)
|
||
{
|
||
changeParameter(PARAMETER_BITSPERPIXEL);
|
||
toggleActive(self, "BITSPERPIXEL_8");
|
||
toggleActive(self, "BITSPERPIXEL_16");
|
||
toggleActive(self, "BITSPERPIXEL_24");
|
||
toggleActive(self, "BITSPERPIXEL_32");
|
||
|
||
return IUP_DEFAULT;
|
||
}
|
||
|
||
static void settingsChooseBitsPerPixel(Ihandle *self, int state)
|
||
{
|
||
if (state == 1)
|
||
{
|
||
int tool_index = IupGetInt(self, "TOOLINDEX");
|
||
switch (tool_index)
|
||
{
|
||
case 0:
|
||
{
|
||
changeValue(PARAMETER_BITSPERPIXEL, VALUES_BITSPERPIXEL_8);
|
||
break;
|
||
}
|
||
case 1:
|
||
{
|
||
changeValue(PARAMETER_BITSPERPIXEL, VALUES_BITSPERPIXEL_16);
|
||
break;
|
||
}
|
||
case 2:
|
||
{
|
||
changeValue(PARAMETER_BITSPERPIXEL, VALUES_BITSPERPIXEL_24);
|
||
break;
|
||
}
|
||
case 3:
|
||
{
|
||
changeValue(PARAMETER_BITSPERPIXEL, VALUES_BITSPERPIXEL_32);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
static int settingsChooseMonitor(Ihandle *ih, char *text, int item, int state)
|
||
{
|
||
if (state == 1)
|
||
{
|
||
changeValue(PARAMETER_MONITORS, item - 1);
|
||
}
|
||
|
||
return IUP_DEFAULT;
|
||
}
|
||
|
||
static int settingsTglMultimonitor(Ihandle *self)
|
||
{
|
||
changeParameter(PARAMETER_MULTIMONITOR);
|
||
|
||
IupSetInt(IupGetDialogChild(self, "MONITORS"), "ACTIVE", !IupGetInt(IupGetDialogChild(self, "SETTINGS_TGL_MULTIMONITOR"), "VALUE"));
|
||
setParameter(PARAMETER_MONITORS, !IupGetInt(IupGetDialogChild(self, "SETTINGS_TGL_MULTIMONITOR"), "VALUE"));
|
||
return IUP_DEFAULT;
|
||
}
|
||
|
||
static int settingsTglFullscreen(Ihandle *self)
|
||
{
|
||
changeParameter(PARAMETER_FULLSCREEN);
|
||
toggleActive(self, "SETTINGS_TGL_MULTIMONITOR");
|
||
IupSetInt(IupGetDialogChild(self, "MONITORS"), "ACTIVE", !IupGetInt(IupGetDialogChild(self, "SETTINGS_TGL_MULTIMONITOR"), "VALUE") && IupGetInt(IupGetDialogChild(self, "SETTINGS_TGL_FULLSCREEN"), "VALUE"));
|
||
setParameter(PARAMETER_MONITORS, !IupGetInt(IupGetDialogChild(self, "SETTINGS_TGL_MULTIMONITOR"), "VALUE"));
|
||
return IUP_DEFAULT;
|
||
}
|
||
|
||
/*
|
||
* Блок настроек
|
||
*/
|
||
static Ihandle* settingsBoxCheckbox()
|
||
{
|
||
Ihandle *tglAuthentication, *tglCertIgnore, *tglThemes, *tglWallpaper, *tglDecorations, *tglSound, *tglFonts, *tglEncryption, *tglCompression;
|
||
|
||
tglAuthentication = IupToggle("Аутентификация", NULL);
|
||
tglCertIgnore = IupToggle("Игнорировать сертификат", NULL);
|
||
tglThemes = IupToggle("Отключить темы", NULL);
|
||
tglWallpaper = IupToggle("Отключить обои", NULL);
|
||
tglDecorations = IupToggle("Отключить оформление окон", NULL);
|
||
|
||
tglSound = IupToggle("Поддержка звука", NULL);
|
||
tglFonts = IupToggle("Отключить прорисовку шрифтов", NULL);
|
||
tglEncryption = IupToggle("Отключить шифрование", NULL);
|
||
tglCompression = IupToggle("Сжатие данных", NULL);
|
||
|
||
IupSetInt(tglAuthentication, "VALUE", getSetParameter(PARAMETER_AUTHENTICATION));
|
||
IupSetInt(tglCertIgnore, "VALUE", getSetParameter(PARAMETER_CERTIGNORE));
|
||
IupSetInt(tglThemes, "VALUE", getSetParameter(PARAMETER_THEMES));
|
||
IupSetInt(tglWallpaper, "VALUE", getSetParameter(PARAMETER_WALLPAPER));
|
||
IupSetInt(tglDecorations, "VALUE", getSetParameter(PARAMETER_DECORATIONS));
|
||
IupSetInt(tglSound, "VALUE", getSetParameter(PARAMETER_SOUND));
|
||
IupSetInt(tglFonts, "VALUE", getSetParameter(PARAMETER_FONTS));
|
||
IupSetInt(tglEncryption, "VALUE", getSetParameter(PARAMETER_ENCRYPTION));
|
||
IupSetInt(tglCompression, "VALUE", getSetParameter(PARAMETER_COMPRESSION));
|
||
|
||
return IupSetAttributes(
|
||
IupFrame(
|
||
IupVbox(
|
||
IupSetCallbacks(IupSetAttributes(tglAuthentication, "NAME=SETTINGS_TGL_AUTHENTICATION, TIP=\"Получить окно входа авторизации\""), "ACTION", (Icallback) settingsTglAuthentication, NULL),
|
||
IupSetCallbacks(IupSetAttributes(tglCertIgnore, "NAME=SETTINGS_TGL_AUTHENTICATION, TIP=\"Игнорировать подтверждение принятия сертификата\""), "ACTION", (Icallback) settingsTglCertIgnore, NULL),
|
||
IupSetCallbacks(IupSetAttributes(tglThemes, "NAME=SETTINGS_TGL_THEMES, TIP=\"Отключить поддержку тем оформления (улучшает скорость соединения)\""), "ACTION", (Icallback) settingsTglThemes, NULL),
|
||
IupSetCallbacks(IupSetAttributes(tglWallpaper, "NAME=SETTINGS_TGL_WALLPAPER, TIP=\"Отключить поддержку обоев рабочего стола (улучшает скорость соединения)\""), "ACTION", (Icallback) settingsTglWallpaper, NULL),
|
||
IupSetCallbacks(IupSetAttributes(tglDecorations, "NAME=SETTINGS_TGL_DECORATIONS, TIP=\"Отключить поддержку оформления окон (улучшает скорость соединения)\""), "ACTION", (Icallback) settingsTglDecorations, NULL),
|
||
#ifdef IUP_WITH_SOUND_CHECKBOX
|
||
IupSetCallbacks(IupSetAttributes(tglSound, "NAME=SETTINGS_TGL_SOUND, TIP=\"Включить поддержку звука с удаленного сервера\""), "ACTION", (Icallback) settingsTglSound, NULL),
|
||
#endif
|
||
IupSetCallbacks(IupSetAttributes(tglFonts, "NAME=SETTINGS_TGL_FONTS, TIP=\"Отключить прорисовку шрифтов (улучшает скорость соединения)\""), "ACTION", (Icallback) settingsTglFonts, NULL),
|
||
IupSetCallbacks(IupSetAttributes(tglEncryption, "NAME=SETTINGS_TGL_ENCRYPTION, TIP=\"Отключить шифрование данных\""), "ACTION", (Icallback) settingsTglEncryption, NULL),
|
||
IupSetCallbacks(IupSetAttributes(tglCompression, "NAME=SETTINGS_TGL_COMPRESSION, TIP=\"Включить сжатие данных (улучшает скорость соединения)\""), "ACTION", (Icallback) settingsTglCompression, NULL),
|
||
NULL
|
||
)
|
||
), "TITLE=\"Общие\", MARGIN=10x10"
|
||
);
|
||
}
|
||
|
||
static Ihandle* settingsBoxSecurity()
|
||
{
|
||
Ihandle *tglSecurity;
|
||
Ihandle *tglTLS, *tglRDP, *tglNLA, *tglEXT;
|
||
Ihandle *grdSecurity;
|
||
|
||
tglSecurity = IupToggle("Использовать", NULL);
|
||
IupSetInt(tglSecurity, "VALUE", getSetParameter(PARAMETER_SECURITY));
|
||
IupSetAttribute(tglSecurity, "TIP", "Выбрать конкретный протокол передачи данных");
|
||
IupSetCallback(tglSecurity, "ACTION", (Icallback) settingsUseSecurity);
|
||
|
||
tglTLS = IupToggle("TLS", NULL);
|
||
IupSetInt(tglTLS, "VALUE", getSetValue(PARAMETER_SECURITY, VALUE_SECURITY_TLS));
|
||
IupSetInt(tglTLS, "ACTIVE", getSetParameter(PARAMETER_SECURITY));
|
||
tglRDP = IupToggle("RDP", NULL);
|
||
IupSetInt(tglRDP, "VALUE", getSetValue(PARAMETER_SECURITY, VALUE_SECURITY_RDP));
|
||
IupSetInt(tglRDP, "ACTIVE", getSetParameter(PARAMETER_SECURITY));
|
||
tglNLA = IupToggle("NLA", NULL);
|
||
IupSetInt(tglNLA, "VALUE", getSetValue(PARAMETER_SECURITY, VALUE_SECURITY_NLA));
|
||
IupSetInt(tglNLA, "ACTIVE", getSetParameter(PARAMETER_SECURITY));
|
||
tglEXT = IupToggle("EXT", NULL);
|
||
IupSetInt(tglEXT, "VALUE", getSetValue(PARAMETER_SECURITY, VALUE_SECURITY_EXT));
|
||
IupSetInt(tglEXT, "ACTIVE", getSetParameter(PARAMETER_SECURITY));
|
||
|
||
grdSecurity = IupRadio(
|
||
IupGridBox(
|
||
IupSetCallbacks(IupSetAttributes(tglTLS, "NAME=SECURITY_TLS, TOOLINDEX=0"), "ACTION", (Icallback) settingsChooseSecurity, NULL),
|
||
IupSetCallbacks(IupSetAttributes(tglRDP, "NAME=SECURITY_RDP, TOOLINDEX=1"), "ACTION", (Icallback) settingsChooseSecurity, NULL),
|
||
IupSetCallbacks(IupSetAttributes(tglNLA, "NAME=SECURITY_NLA, TOOLINDEX=2"), "ACTION", (Icallback) settingsChooseSecurity, NULL),
|
||
IupSetCallbacks(IupSetAttributes(tglEXT, "NAME=SECURITY_EXT, TOOLINDEX=3"), "ACTION", (Icallback) settingsChooseSecurity, NULL),
|
||
NULL));
|
||
|
||
return IupHbox(IupSetAttributes(IupFrame(IupVbox(tglSecurity, grdSecurity, NULL)), "TITLE=\"Протокол безопасности\", MARGIN=15x10"), NULL);
|
||
}
|
||
|
||
static Ihandle* settingsBoxBitsPerPixel()
|
||
{
|
||
Ihandle *tglBitsPerPixel;
|
||
Ihandle *tgl8, *tgl16, *tgl24, *tgl32;
|
||
Ihandle *grdBitsPerPixel;
|
||
|
||
tglBitsPerPixel = IupToggle("Использовать", NULL);
|
||
IupSetInt(tglBitsPerPixel, "VALUE", getSetParameter(PARAMETER_BITSPERPIXEL));
|
||
IupSetAttribute(tglBitsPerPixel, "TIP", "Выбрать конкретную глубину цвета (меньше глубина - выше скорость и хуже качество)");
|
||
IupSetCallback(tglBitsPerPixel, "ACTION", (Icallback) settingsUseBitsPerPixel);
|
||
|
||
tgl8 = IupToggle("8 бит", NULL);
|
||
IupSetInt(tgl8, "VALUE", getSetValue(PARAMETER_BITSPERPIXEL, VALUES_BITSPERPIXEL_8));
|
||
IupSetInt(tgl8, "ACTIVE", getSetParameter(PARAMETER_BITSPERPIXEL));
|
||
tgl16 = IupToggle("16 бит", NULL);
|
||
IupSetInt(tgl16, "VALUE", getSetValue(PARAMETER_BITSPERPIXEL, VALUES_BITSPERPIXEL_16));
|
||
IupSetInt(tgl16, "ACTIVE", getSetParameter(PARAMETER_BITSPERPIXEL));
|
||
tgl24 = IupToggle("24 бит", NULL);
|
||
IupSetInt(tgl24, "VALUE", getSetValue(PARAMETER_BITSPERPIXEL, VALUES_BITSPERPIXEL_24));
|
||
IupSetInt(tgl24, "ACTIVE", getSetParameter(PARAMETER_BITSPERPIXEL));
|
||
tgl32 = IupToggle("32 бит", NULL);
|
||
IupSetInt(tgl32, "VALUE", getSetValue(PARAMETER_BITSPERPIXEL, VALUES_BITSPERPIXEL_32));
|
||
IupSetInt(tgl32, "ACTIVE", getSetParameter(PARAMETER_BITSPERPIXEL));
|
||
|
||
grdBitsPerPixel = IupRadio(
|
||
IupGridBox(IupSetCallbacks(IupSetAttributes(tgl8, "NAME=BITSPERPIXEL_8, TOOLINDEX=0"), "ACTION", (Icallback) settingsChooseBitsPerPixel,
|
||
NULL), IupSetCallbacks(IupSetAttributes(tgl16, "NAME=BITSPERPIXEL_16, TOOLINDEX=1"), "ACTION", (Icallback) settingsChooseBitsPerPixel,
|
||
NULL), IupSetCallbacks(IupSetAttributes(tgl24, "NAME=BITSPERPIXEL_24, TOOLINDEX=2"), "ACTION", (Icallback) settingsChooseBitsPerPixel,
|
||
NULL), IupSetCallbacks(IupSetAttributes(tgl32, "NAME=BITSPERPIXEL_32, TOOLINDEX=3"), "ACTION", (Icallback) settingsChooseBitsPerPixel,
|
||
NULL),
|
||
NULL));
|
||
|
||
return IupHbox(IupSetAttributes(IupFrame(IupVbox(tglBitsPerPixel, grdBitsPerPixel, NULL)), "TITLE=\"Глубина цвета\", MARGIN=15x10"), NULL);
|
||
}
|
||
|
||
static Ihandle* settingsBoxMonitor()
|
||
{
|
||
Ihandle *tglFullscreen, *tglMultimonitor, *ddMonitor;
|
||
|
||
tglMultimonitor = IupToggle("Все мониторы", NULL);
|
||
tglFullscreen = IupToggle("На весь экран", NULL);
|
||
ddMonitor = IupList(NULL);
|
||
|
||
Monitors *monitors = loadMonitors();
|
||
for (size_t i = 0; i < monitors->size; ++i)
|
||
{
|
||
IupSetAttribute(ddMonitor, monitors->monitor[i]->data[0], monitors->monitor[i]->data[1]);
|
||
if (monitors->monitor[i]->data[2][0] == '1')
|
||
IupSetAttribute(ddMonitor, "VALUE", monitors->monitor[i]->data[0]);
|
||
}
|
||
freeMonitors(monitors);
|
||
|
||
IupSetInt(tglMultimonitor, "VALUE", getSetParameter(PARAMETER_MULTIMONITOR));
|
||
IupSetInt(tglFullscreen, "VALUE", getSetParameter(PARAMETER_FULLSCREEN));
|
||
|
||
IupSetInt(tglMultimonitor, "ACTIVE", getSetParameter(PARAMETER_FULLSCREEN));
|
||
IupSetInt(ddMonitor, "ACTIVE", getSetParameter(PARAMETER_FULLSCREEN) && !getSetParameter(PARAMETER_MULTIMONITOR));
|
||
|
||
return IupSetAttributes(
|
||
IupFrame(
|
||
IupVbox(
|
||
IupSetAttributes(
|
||
IupVbox(
|
||
IupSetCallbacks(IupSetAttributes(tglFullscreen, "NAME=SETTINGS_TGL_FULLSCREEN, EXPAND=YES, TIP=\"Выполнить подключение на весь экран\""), "ACTION", (Icallback) settingsTglFullscreen, NULL),
|
||
IupSetCallbacks(IupSetAttributes(tglMultimonitor, "NAME=SETTINGS_TGL_MULTIMONITOR, TIP=\"Задействовать все подключенные мониторы\""), "ACTION", (Icallback) settingsTglMultimonitor, NULL),
|
||
NULL
|
||
), "MARGIN=0x0, GAP=0x0"),
|
||
IupSetCallbacks(IupSetAttributes(ddMonitor, "NAME=MONITORS, DROPDOWN=YES, EXPAND=YES, TIP=\"Выбрать конкретный монитор для подключения\""), "ACTION", (Icallback) settingsChooseMonitor, NULL),
|
||
NULL)
|
||
), "TITLE=\"Монитор\", MARGIN=15x10, GAP=15x0");
|
||
}
|
||
|
||
static Ihandle* settingsBoxAbout()
|
||
{
|
||
Ihandle *inputAbout;
|
||
|
||
inputAbout = IupText(NULL);
|
||
|
||
IupSetAttribute(inputAbout, "READONLY", "YES");
|
||
IupSetAttribute(inputAbout, "MULTILINE", "YES");
|
||
IupSetAttribute(inputAbout, "SIZE", "160");
|
||
IupSetAttribute(inputAbout, "VISIBLELINES", "6");
|
||
IupSetAttribute(inputAbout, "PADDING", "5");
|
||
IupSetAttribute(inputAbout, "VALUE", getAbout());
|
||
|
||
return IupSetAttributes(IupFrame(IupHbox(inputAbout, NULL)), "TITLE=\"О программе\", MARGIN=10x10");
|
||
}
|
||
|
||
static Ihandle* settingsHorizontalBox()
|
||
{
|
||
return IupSetAttributes(
|
||
IupHbox(
|
||
IupSetAttributes(
|
||
IupVbox(settingsBoxCheckbox(), settingsBoxMonitor(), NULL),
|
||
"NMARGIN=0x0"
|
||
),
|
||
IupSetAttributes(
|
||
IupVbox(
|
||
IupSetAttributes(IupHbox(settingsBoxSecurity(), settingsBoxBitsPerPixel(), NULL), "GAP=10x0"),
|
||
settingsBoxAbout(),
|
||
NULL),
|
||
"MARGIN=0x0"),
|
||
NULL), "NMARGIN=10x0, NGAP=10x0"
|
||
);
|
||
}
|
||
|
||
/*
|
||
* Блок кнопок
|
||
*/
|
||
static Ihandle* settingsHorizontalBoxButtons()
|
||
{
|
||
Ihandle *btnSave, *btnClose;
|
||
|
||
btnSave = IupButton("Сохранить", NULL);
|
||
IupSetAttribute(btnSave, "NAME", "SETTIGS_BTN_SAVE");
|
||
IupSetAttribute(btnSave, "TIP", "Сохранить настройки");
|
||
#ifdef IUP_WITH_COLOR_BUTTONS
|
||
IupSetAttribute(btnSave, "BGCOLOR", "0 179 0");
|
||
IupSetAttribute(btnSave, "FGCOLOR", "255 255 255");
|
||
#endif
|
||
|
||
btnClose = IupButton("Закрыть", NULL);
|
||
IupSetAttribute(btnClose, "NAME", "SETTIGS_BTN_CLOSE");
|
||
IupSetAttribute(btnClose, "TIP", "Отменить изменения");
|
||
#ifdef IUP_WITH_COLOR_BUTTONS
|
||
IupSetAttribute(btnClose, "BGCOLOR", "204 0 0");
|
||
IupSetAttribute(btnClose, "FGCOLOR", "255 255 255");
|
||
#endif
|
||
|
||
IupSetHandle("btnClosePointer", btnClose);
|
||
|
||
return IupSetAttributes(
|
||
IupHbox(IupFill(), IupSetCallbacks(btnSave, "ACTION", (Icallback) settingsSave, NULL),
|
||
IupSetCallbacks(btnClose, "ACTION", (Icallback) settingsClose, NULL), IupFill(),
|
||
NULL), "ALIGNMENT=ACENTER:ACENTER, GAP=10, MARGIN=10x10");
|
||
}
|
||
|
||
int settingsMainWindow(Ihandle *self)
|
||
{
|
||
Ihandle *dlg;
|
||
Ihandle *vBoxMain;
|
||
|
||
vBoxMain = IupSetAttributes(IupVbox(settingsHorizontalBox(), settingsHorizontalBoxButtons(), NULL), "NMARGIN=2x2, ALIGNMENT=ACENTER");
|
||
|
||
dlg = IupDialog(vBoxMain);
|
||
IupSetAttribute(dlg, "TITLE", "Настройки");
|
||
IupSetCallback(
|
||
IupSetAttributes(dlg,
|
||
"ICON=icon, DIALOGFRAME=ON, SIMULATEMODAL=ON, DEFAULTESC=btnClosePointer, TOPMOST=YES, BRINGFRONT=YES, NAME=SETTINGS_MAIN_WINDOW"),
|
||
"CLOSE_CB", (Icallback) settingsClose);
|
||
|
||
IupShowXY(dlg, IUP_CURRENT, IUP_CURRENT);
|
||
|
||
return IUP_DEFAULT;
|
||
}
|