/*
- * Copyright (C) 2003-2006 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2003-2007 Andre Noll <maan@systemlinux.org>
*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
+ * Licensed under the GPL v2. For licencing details see COPYING.
*/
/** \file sdl_gui.c SDL-based interface for paraslash */
#include "para.h"
-#include "string.h"
+#include "gui_common.h"
#include "fd.h"
SDL_EventState(SDL_MOUSEBUTTONUP, SDL_IGNORE);
/* Set the window manager title bar */
SDL_WM_SetCaption("The Gui of death that makes you blind (paraslash "
- VERSION ")", "SFont");
+ PACKAGE_VERSION ")", "SFont");
}
/*
* Check if buf is a known status line. If so call do_update and return 1.
* Return 0 otherwise.
*/
-void update_status(char *buf)
+int update_status(char *buf, __a_unused void *data)
{
int i;
i = stat_line_valid(buf);
if (i < 0)
- return;
+ return 1;
//free(stat_items[i].content);
stat_items[i].content = para_strdup(buf +
strlen(status_item_list[i]) + 1);
do_update(i);
+ return 1;
}
/*
*/
int main(int argc, char *argv[])
{
- int i, ret, fd;
+ int i, ret, fd = -1;
SDLKey sym;
sdl_gui_cmdline_parser(argc, argv, &args_info);
+ HANDLE_VERSION_FLAG("sdl_gui", args_info);
ret = configfile_exists();
// printf("w=%i,h=%i,ret=%i, cf=%s\n", width, height, ret, args_info.config_file_arg);
args_info.config_file_arg);
exit(EXIT_FAILURE);
}
- if (ret)
- sdl_gui_cmdline_parser_configfile(args_info.config_file_arg,
- &args_info, 0, 0, 0);
+ if (ret) {
+ struct sdl_gui_cmdline_parser_params params = {
+ .override = 0,
+ .initialize = 0,
+ .check_required = 0,
+ .check_ambiguity = 0
+ };
+ sdl_gui_cmdline_parser_config_file(args_info.config_file_arg,
+ &args_info, ¶ms);
+ }
signal(SIGCHLD, SIG_IGN);
width = args_info.width_arg;
height = args_info.height_arg;
// printf("w=%i,h=%i,ret=%i, cf=%s\n", width, height, ret, args_info.config_file_arg);
init_stat_items();
- fd = para_open_audiod_pipe(args_info.stat_cmd_arg);
init_SDL();
for (i = 0; fonts[i].name[0]; i++) {
char buf[MAXLINE];
update_input();
}
for (;;) {
+ if (fd < 0) {
+ fd = para_open_audiod_pipe(args_info.stat_cmd_arg);
+ if (fd < 0)
+ clean_exit(EXIT_FAILURE);
+ }
ret = draw_status(fd);
if (ret < 0) {
close(fd);
|| sym == SDLK_COMPOSE
)
continue;
- if (fd < 0) {
- kill(0, SIGINT);
- close(fd);
- }
fill_input_rect();
update_input();
if (!command_handler())
print_help();
update_pic();
SDL_UpdateRect(screen, 0, 0, 0, 0);
- fd = para_open_audiod_pipe(args_info.stat_cmd_arg);
break;
}
}