iup-stack/iup/src/android/main_c.c

175 lines
4.1 KiB
C
Raw Normal View History

2023-02-20 16:44:45 +00:00
#include "iup.h"
#include "iup_varg.h"
#include "iup_config.h"
#include <stddef.h>
#include <stdio.h>
void MyPrintf(const char* fmt, ...)
{
va_list ap;
va_start(ap, fmt);
IupLogV("DEBUG", fmt, ap);
va_end(ap);
}
int OnButtonCallback()
{
MyPrintf("OnButtonCallback()\n");
char temp_string[1024];
static int button_count = 0;
snprintf(temp_string, 1024, "Iup Button %d", button_count);
Ihandle* button = IupButton(temp_string, "");
IupSetCallback(button, "ACTION", (Icallback)OnButtonCallback);
Ihandle* dialog = IupDialog(button);
snprintf(temp_string, 1024, "Iup Activity Title %d", button_count);
IupSetStrAttribute(dialog, "TITLE", temp_string);
IupShow(dialog);
button_count++;
return IUP_DEFAULT;
}
Ihandle *timer1, *timer2;
int timer_cb(Ihandle *n)
{
if(n == timer1)
{
static int counter = 0;
IupLog("DEBUG", "timer 1 called\n");
if(counter > 5)
{
IupLog("DEBUG", "killing timer 1\n");
IupDestroy(timer1);
timer1 = NULL;
}
counter++;
}
if(n == timer2)
{
IupLog("DEBUG", "timer 2 called\n");
IupDestroy(timer2);
timer2 = NULL;
return IUP_CLOSE;
}
return IUP_DEFAULT;
}
void IupExitPoint()
{
IupClose();
}
// For Android, this name is hardcoded
void IupEntryPoint()
{
/*
{
int ret_val;
const char* config_value;
Ihandle* config_file = IupConfig();
IupSetStrAttribute(config_file, "APP_NAME", "TestApp");
ret_val = IupConfigLoad(config_file);
if(ret_val == 0)
{
const char* config_value = IupConfigGetVariableStrDef(config_file, "Group1", "Key1", "");
MyPrintf("config value is %s\n", config_value);
}
else
{
MyPrintf("config file not found\n");
}
IupConfigSetVariableStr(config_file, "Group1", "Key1", "Value1");
IupConfigSave(config_file);
config_value = IupConfigGetVariableStrDef(config_file, "Group1", "Key1", "");
MyPrintf("retrieved saved config value is %s\n", config_value);
IupDestroy(config_file);
config_file = NULL;
}
*/
{
IupSetFunction("EXIT_CB", (Icallback)IupExitPoint);
}
// Ihandle* label = IupLabel("Iup Label");
#if 1
Ihandle* text_view_result = IupMultiLine(NULL);
// Ihandle* text_view_result = IupText(NULL);
// IupSetAttribute(text_view_result, "SIZE", "500x100");
IupSetAttribute(text_view_result, "VISIBLECOLUMNS", "40");
IupSetAttribute(text_view_result, "VISIBLELINES", "10");
IupSetAttribute(text_view_result, "EXPAND", "HORIZONTAL");
IupSetAttribute(text_view_result, "READONLY", "YES");
IupSetAttribute(text_view_result, "VALUE", "Velcome tu zee vonderful wurld");
#endif
Ihandle* button = IupButton("Iup Button", "");
IupSetCallback(button, "ACTION", (Icallback)OnButtonCallback);
Ihandle* button2 = IupButton("Iup Button 2", "");
Ihandle* button3 = IupButton("Iup Button 3", "");
Ihandle* button4 = IupButton("Iup Button 4", "");
// Ihandle* vb=IupVbox(text_view_result, button, NULL);
// Ihandle* vb=IupVbox(button, text_view_result, NULL);
// Ihandle* vb=IupVbox(button, button2, NULL);
Ihandle* hb1=IupHbox(button, button2, NULL);
Ihandle* hb2=IupHbox(button3, button4, NULL);
// Ihandle* vb=IupVbox(hb1, hb2, NULL);
Ihandle* vb=IupVbox(hb1, text_view_result, hb2, NULL);
// IupSetAttribute(vb, "GAP", "10");
// IupSetAttribute(vb, "MARGIN", "10x10");
// IupSetAttribute(vb, "ALIGNMENT", "ACENTER");
Ihandle* dialog = IupDialog(vb);
// IupMap(dialog);
IupSetAttribute(dialog, "TITLE", "Iup Activity Title");
// IupSetAttribute(dialog, "RASTERSIZE", "1024x1920");
timer1 = IupTimer();
timer2 = IupTimer();
IupSetAttribute(timer1, "TIME", "4000");
IupSetAttribute(timer1, "RUN", "YES");
IupSetCallback(timer1, "ACTION_CB", (Icallback)timer_cb);
IupSetAttribute(timer2, "TIME", "10000");
IupSetAttribute(timer2, "RUN", "YES");
IupSetCallback(timer2, "ACTION_CB", (Icallback)timer_cb);
IupShow(dialog);
}
// IMPORTANT: This is never called on Android and does nothing. But a good cross-platform IUP app will always have this for the other platforms.
// You should not modify this template.
// Everything reconverges at IupEntryPoint().
int main(int argc, char* argv[])
{
IupOpen(&argc, &argv);
IupSetFunction("ENTRY_POINT", (Icallback)IupEntryPoint);
IupMainLoop();
return 0;
}