/*-----------------------------------------------------------------------------------*/ PROCESS_THREAD(about_process, ev, data) { unsigned char width; PROCESS_BEGIN(); width = ctk_desktop_width(NULL); strcpy(abouturl_ascii, abouturl_petscii); petsciiconv_toascii(abouturl_ascii, sizeof(abouturl_ascii)); if(width > 34) { ctk_dialog_new(&aboutdialog, 32, 9); } else { ctk_dialog_new(&aboutdialog, width - 2, 9); } CTK_WIDGET_ADD(&aboutdialog, &aboutlabel1); CTK_WIDGET_ADD(&aboutdialog, &aboutlabel2); CTK_WIDGET_ADD(&aboutdialog, &aboutlabel3); CTK_WIDGET_ADD(&aboutdialog, &aboutlabel4); if(width > 34) { CTK_WIDGET_ADD(&aboutdialog, &abouturl); CTK_WIDGET_SET_FLAG(&abouturl, CTK_WIDGET_FLAG_MONOSPACE); } else { CTK_WIDGET_SET_XPOS(&aboutlabel1, 0); CTK_WIDGET_SET_XPOS(&aboutlabel2, 0); CTK_WIDGET_SET_XPOS(&aboutlabel3, 0); CTK_WIDGET_SET_XPOS(&aboutlabel4, 0); CTK_WIDGET_SET_XPOS(&aboutclose, 0); } CTK_WIDGET_ADD(&aboutdialog, &aboutclose); CTK_WIDGET_FOCUS(&aboutdialog, &aboutclose); ctk_dialog_open(&aboutdialog); while(1) { PROCESS_WAIT_EVENT(); if(ev == PROCESS_EVENT_EXIT) { about_quit(); PROCESS_EXIT(); } else if(ev == ctk_signal_button_activate) { if(data == (process_data_t)&aboutclose) { about_quit(); PROCESS_EXIT(); } } else if(ev == ctk_signal_hyperlink_activate) { if((struct ctk_widget *)data == (struct ctk_widget *)&abouturl) { about_quit(); PROCESS_EXIT(); } } } PROCESS_END(); }
/*static DISPATCHER_SIGHANDLER(about_sighandler, s, data)*/ EK_EVENTHANDLER(about_eventhandler, ev, data) { unsigned char width; EK_EVENTHANDLER_ARGS(ev, data); if(ev == EK_EVENT_INIT) { width = ctk_desktop_width(NULL); strcpy(abouturl_ascii, abouturl_petscii); petsciiconv_toascii(abouturl_ascii, sizeof(abouturl_ascii)); if(width > 34) { ctk_dialog_new(&aboutdialog, 32, 9); } else { ctk_dialog_new(&aboutdialog, width - 2, 9); } CTK_WIDGET_ADD(&aboutdialog, &aboutlabel1); CTK_WIDGET_ADD(&aboutdialog, &aboutlabel2); CTK_WIDGET_ADD(&aboutdialog, &aboutlabel3); CTK_WIDGET_ADD(&aboutdialog, &aboutlabel4); if(width > 34) { CTK_WIDGET_ADD(&aboutdialog, &abouturl); CTK_WIDGET_SET_FLAG(&abouturl, CTK_WIDGET_FLAG_MONOSPACE); } else { CTK_WIDGET_SET_XPOS(&aboutlabel1, 0); CTK_WIDGET_SET_XPOS(&aboutlabel2, 0); CTK_WIDGET_SET_XPOS(&aboutlabel3, 0); CTK_WIDGET_SET_XPOS(&aboutlabel4, 0); CTK_WIDGET_SET_XPOS(&aboutclose, 0); } CTK_WIDGET_ADD(&aboutdialog, &aboutclose); CTK_WIDGET_FOCUS(&aboutdialog, &aboutclose); /* dispatcher_listen(ctk_signal_button_activate); dispatcher_listen(ctk_signal_hyperlink_activate);*/ ctk_dialog_open(&aboutdialog); } else if(ev == EK_EVENT_REQUEST_EXIT) { about_quit(); } else if(ev == ctk_signal_button_activate) { if(data == (ek_data_t)&aboutclose) { about_quit(); } } else if(ev == ctk_signal_hyperlink_activate) { if((struct ctk_widget *)data == (struct ctk_widget *)&abouturl) { about_quit(); } } }