]> git.xonotic.org Git - xonotic/netradiant.git/blob - contrib/pk3man/renamedlg.cpp
* added pk3man and fixed it to compile for latest radiant
[xonotic/netradiant.git] / contrib / pk3man / renamedlg.cpp
1 // RenameDlg.cpp: implementation of the CRenameDlg class.
2 //
3 //////////////////////////////////////////////////////////////////////
4
5 #include "stdafx.h"
6 #include "renamedlg.h"
7
8 //////////////////////////////////////////////////////////////////////
9 // Construction/Destruction
10 //////////////////////////////////////////////////////////////////////
11
12 static void rename_dialog_button_callback (GtkWidget *widget, gpointer data)
13 {
14         GtkWidget *parent;
15         int *loop, *ret;
16
17         parent = gtk_widget_get_toplevel (widget);
18         loop = (int*)gtk_object_get_data (GTK_OBJECT (parent), "loop");
19         ret = (int*)gtk_object_get_data (GTK_OBJECT (parent), "ret");
20
21         *loop = 0;
22         *ret = (int)data;
23 }
24
25 static gint rename_dialog_delete_callback (GtkWidget *widget, GdkEvent* event, gpointer data)
26 {
27         int *loop;
28
29         gtk_widget_hide (widget);
30         loop = (int*)gtk_object_get_data (GTK_OBJECT (widget), "loop");
31         *loop = 0;
32
33         return TRUE;
34 }
35
36 CRenameDlg::CRenameDlg()
37 {
38         m_Name="foo";
39 }
40
41 CRenameDlg::~CRenameDlg()
42 {
43
44 }
45
46 int CRenameDlg::DoModal()
47 {
48         GtkWidget *window, *w, *vbox, *hbox, *edit;
49         int ret, loop = 1;
50         char *lpCaption="Rename File";
51
52         window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
53         gtk_signal_connect (GTK_OBJECT (window), "delete_event",
54                                         GTK_SIGNAL_FUNC (rename_dialog_delete_callback), NULL);
55         gtk_signal_connect (GTK_OBJECT (window), "destroy",
56                                         GTK_SIGNAL_FUNC (gtk_widget_destroy), NULL);
57         gtk_window_set_title (GTK_WINDOW (window), lpCaption);
58         gtk_container_border_width (GTK_CONTAINER (window), 10);
59         gtk_object_set_data (GTK_OBJECT (window), "loop", &loop);
60         gtk_object_set_data (GTK_OBJECT (window), "ret", &ret);
61         gtk_widget_realize (window);
62
63         vbox = gtk_vbox_new (FALSE, 10);
64         gtk_container_add (GTK_CONTAINER (window), vbox);
65         gtk_widget_show (vbox);
66
67         edit = gtk_entry_new ();
68         gtk_entry_set_text(GTK_ENTRY(edit),m_Name.c_str());
69         gtk_box_pack_start (GTK_BOX (vbox), edit, FALSE, FALSE, 2);
70         gtk_widget_show (edit);
71
72         w = gtk_hseparator_new ();
73         gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 2);
74         gtk_widget_show (w);
75
76         hbox = gtk_hbox_new (FALSE, 10);
77         gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 2);
78         gtk_widget_show (hbox);
79
80         // buttons
81
82         w = gtk_button_new_with_label ("Ok");
83         gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
84         gtk_signal_connect (GTK_OBJECT (w), "clicked",
85                                         GTK_SIGNAL_FUNC (rename_dialog_button_callback), GINT_TO_POINTER (IDOK));
86         GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT);
87         gtk_widget_grab_default (w);
88         gtk_widget_show (w);
89
90         w = gtk_button_new_with_label ("Cancel");
91         gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
92         gtk_signal_connect (GTK_OBJECT (w), "clicked",
93                                         GTK_SIGNAL_FUNC (rename_dialog_button_callback), GINT_TO_POINTER (IDCANCEL));
94         gtk_widget_show (w);
95         ret = IDCANCEL;
96
97         // show it
98
99         gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
100         gtk_widget_show (window);
101         gtk_grab_add (window);
102
103         while (loop)
104                 gtk_main_iteration ();
105
106         m_Name=gtk_entry_get_text(GTK_ENTRY(edit));
107
108         gtk_grab_remove (window);
109         gtk_widget_destroy (window);
110
111         return ret;
112
113 }