File: gnaskstr.c

package info (click to toggle)
glhack 1.2-1
  • links: PTS
  • area: main
  • in suites: squeeze, wheezy
  • size: 24,604 kB
  • ctags: 18,992
  • sloc: ansic: 208,570; cpp: 13,139; yacc: 2,005; makefile: 1,161; lex: 377; sh: 321; awk: 89; sed: 11
file content (61 lines) | stat: -rw-r--r-- 1,440 bytes parent folder | download | duplicates (23)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/*	SCCS Id: @(#)gnaskstr.c	3.4	2000/07/16	*/
/* Copyright (C) 1998 by Erik Andersen <andersee@debian.org> */
/* NetHack may be freely redistributed.  See license for details. */

#include "gnaskstr.h"
#include "gnmain.h"
#include <gnome.h>


static
void ghack_ask_string_callback(gchar * string, gpointer data)
{
  char **user_text = (char **) data;

  g_assert(user_text != NULL);

  *user_text = string; /* note - value must be g_free'd */
}


int ghack_ask_string_dialog(const char *szMessageStr, 
	const char *szDefaultStr, const char *szTitleStr, 
	char *buffer)
{
    int i;
    GtkWidget* dialog;
    gchar   *user_text = NULL;

    dialog = gnome_request_dialog(FALSE, szMessageStr,
    				  szDefaultStr, 0,
				  ghack_ask_string_callback,
				  &user_text, NULL);
    g_assert(dialog != NULL);

    gtk_window_set_title(GTK_WINDOW(dialog), szTitleStr);

    gnome_dialog_set_default( GNOME_DIALOG(dialog), 0);
    gtk_window_set_modal( GTK_WINDOW(dialog), TRUE);
    gnome_dialog_set_parent (GNOME_DIALOG (dialog), 
	    GTK_WINDOW (ghack_get_main_window ()) );

    i = gnome_dialog_run_and_close (GNOME_DIALOG (dialog));
    
    /* Quit */
    if ( i != 0 || user_text == NULL ) {
	if (user_text)
	  g_free(user_text);
	return -1;
    }

    if ( *user_text == 0 ) {
      g_free(user_text);
      return -1;
    }

    g_assert(strlen(user_text) > 0);
    strcpy (buffer, user_text);
    g_free(user_text);
    return 0;
}