ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/proj/RenegadeMapSelector/RenegadeMapSelector.cpp
(Generate patch)

Comparing trunk/RenegadeMapSelector/RenegadeMapSelector.cpp (file contents):
Revision 78 by douglas, 2003-03-13T23:29:48-08:00 vs.
Revision 90 by douglas, 2003-03-15T22:15:08-08:00

# Line 8 | Line 8
8   #include "RenegadeConfig.h"
9  
10   #ifdef _WIN32
11 +
12   #include <io.h>
13   #include <fcntl.h>
14   #include "resource.h"
15 +
16   #else
17 < #include "gtk/gtk.h"
17 >
18 > #include "MapSelector.h"
19 >
20   #endif
21  
22   bool debug = false;
# Line 20 | Line 24 | string program;
24   RenegadeConfig* config;
25  
26   #ifndef _WIN32
27 +
28   inline string fix(const string& ansi) { return ansi; }
29   inline void munge(void) { debug = true; }
30  
26 void message(const string& text, const string& title, GtkMessageType type);
31   #else
32 +
33   inline string fix(const wstring& wide)
34   {
35          char* buffer = new char[wide.length() + 1];
# Line 67 | Line 72 | inline void munge(void)
72  
73          debug = true;
74   }
75 +
76   #endif
77  
78   #ifdef _WIN32
# Line 82 | Line 88 | void selector(void);
88  
89   int main(int argc, char* argv[])
90   {
91 <        gtk_init(&argc, &argv);
91 >        if (!gtk_init_check(&argc, &argv))
92 >        {
93 >                cerr << argv[0] << ": Cannot open display, need a clue-by-four?\n";
94 >
95 >                return 1;
96 >        }
97   #endif
98  
99          string error;
# Line 111 | Line 122 | int main(int argc, char* argv[])
122   #ifdef _WIN32
123                                  MessageBox(NULL, error.c_str(), "Bad Arguments", MB_ICONERROR);
124   #else
125 <                                message(error, "Bad Arguments", GTK_MESSAGE_ERROR);
125 >                                message(NULL, error, "Bad Arguments", GTK_MESSAGE_ERROR);
126   #endif
127                                  return 1;
128                          }
129                  }
130 +                else
131 +                {
132 +                        error = "The argument " + arg + " is not a valid argument.";
133 +
134 + #ifdef _WIN32
135 +                        MessageBox(NULL, error.c_str(), "Unknown Arguments", MB_ICONWARNING
136 +                                );
137 + #else
138 +                        message(NULL, error, "Unknown Arguments", GTK_MESSAGE_WARNING);
139 + #endif
140 +                }
141          }
142  
143   #ifdef _WIN32
# Line 132 | Line 154 | int main(int argc, char* argv[])
154   #ifdef _WIN32
155                  MessageBox(NULL, error.c_str(), "Bad File", MB_ICONERROR);
156   #else
157 <                message(error, "Bad File", GTK_MESSAGE_ERROR);
157 >                message(NULL, error, "Bad File", GTK_MESSAGE_ERROR);
158   #endif
159                  return 1;
160          }
# Line 140 | Line 162 | int main(int argc, char* argv[])
162   #ifdef _WIN32
163          DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAP_SELECTOR), NULL, selector);
164   #else
165 <        selector();
165 >        MapSelector selector;
166   #endif
167  
168          delete config;
# Line 157 | Line 179 | int main(int argc, char* argv[])
179   }
180  
181   #ifdef _WIN32
182 +
183   int CALLBACK selector(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
184   {
185          switch (uMsg)
# Line 181 | Line 204 | int CALLBACK selector(HWND hwndDlg, UINT
204                          GetCurrentDirectory(MAX_PATH + 1, directory);
205                          if (debug) cerr << "directory = " << directory << "\n";
206  
207 <                        char* data = new char[MAX_PATH + 1];
207 >                        char* data = new char[strlen(directory) + 12];
208                          sprintf(data, "%s\\data\\*.mix", directory);
209                          delete [] directory;
210                          if (debug) cerr << "data = " << data << "\n";
# Line 208 | Line 231 | int CALLBACK selector(HWND hwndDlg, UINT
231                          if (GetListBoxInfo(GetDlgItem(hwndDlg, IDC_SELECTED)) == 0)
232                          {
233                                  MessageBox(hwndDlg, "You need at least one map.", "No Maps",
234 <                                        MB_ICONEXCLAMATION);
234 >                                        MB_ICONINFORMATION);
235  
236                                  return false;
237                          }
# Line 461 | Line 484 | int CALLBACK selector(HWND hwndDlg, UINT
484  
485          return false;
486   }
464 #else
465 static void destruct(GtkWidget* widget, gpointer data)
466 {
467        gtk_main_quit();
468 }
469
470 static void done(GtkWidget* widget, gpointer data)
471 {
472        if (true)
473        {
474                message("You need at least one map.", "No Maps",
475                        GTK_MESSAGE_WARNING);
476        }
477        else
478        {
479                //
480
481                config->save();
487  
483                gtk_main_quit();
484        }
485 }
486
487 static void mapAdd(GtkWidget* widget, gpointer data)
488 {
489        cout << "STUB: add\n\a" << flush;
490 }
491
492 static void mapRemove(GtkWidget* widget, gpointer data)
493 {
494        cout << "STUB: remove\n\a" << flush;
495 }
496
497 static void mapUp(GtkWidget* widget, gpointer data)
498 {
499        cout << "STUB: up\n\a" << flush;
500 }
501
502 static void mapDown(GtkWidget* widget, gpointer data)
503 {
504        cout << "STUB: down\n\a" << flush;
505 }
506
507 void selector(void)
508 {
509        GtkWidget* window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
510
511        gtk_window_set_title(GTK_WINDOW(window), "Renegade Map Selector");
512        gtk_window_set_resizable(GTK_WINDOW(window), false);
513        g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK(destruct),
514                NULL);
515
516        GtkWidget* vertical = gtk_vbox_new(false, 0);
517        GtkWidget* horizontal = gtk_hbox_new(false, 9);
518        GtkWidget* left = gtk_frame_new("Available Maps");
519
520        gtk_frame_set_label_align(GTK_FRAME(left), 0.5, 0.5);
521        gtk_container_set_border_width(GTK_CONTAINER(left), 6);
522
523        GtkWidget* center = gtk_vbox_new(true, 0);
524        GtkWidget* top = gtk_vbutton_box_new();
525
526        gtk_button_box_set_layout(GTK_BUTTON_BOX(top), GTK_BUTTONBOX_START);
527        gtk_box_set_spacing(GTK_BOX(top), 9);
528        gtk_container_set_border_width(GTK_CONTAINER(top), 6);
529
530        GtkWidget* add = gtk_button_new_with_mnemonic("_Add");
531
532        g_signal_connect(G_OBJECT(add), "clicked", G_CALLBACK(mapAdd), NULL);
533        gtk_widget_set_sensitive(add, false);
534
535        GtkWidget* remove = gtk_button_new_with_mnemonic("_Remove");
536
537        g_signal_connect(G_OBJECT(remove), "clicked", G_CALLBACK(mapRemove), NULL);
538        gtk_widget_set_sensitive(remove, false);
539
540        GtkWidget* middle = gtk_vbutton_box_new();
541
542        gtk_button_box_set_layout(GTK_BUTTON_BOX(middle), GTK_BUTTONBOX_END);
543        gtk_box_set_spacing(GTK_BOX(middle), 9);
544        gtk_container_set_border_width(GTK_CONTAINER(middle), 6);
545
546        GtkWidget* up = gtk_button_new_with_mnemonic("_Up");
547
548        g_signal_connect(G_OBJECT(up), "clicked", G_CALLBACK(mapUp), NULL);
549        gtk_widget_set_sensitive(up, false);
550
551        GtkWidget* down = gtk_button_new_with_mnemonic("_Down");
552
553        g_signal_connect(G_OBJECT(down), "clicked", G_CALLBACK(mapDown), NULL);
554        gtk_widget_set_sensitive(down, false);
555
556        GtkWidget* right = gtk_frame_new("Selected Maps");
557
558        gtk_frame_set_label_align(GTK_FRAME(right), 0.5, 0.5);
559        gtk_container_set_border_width(GTK_CONTAINER(right), 6);
560
561        GtkWidget* separator = gtk_hseparator_new();
562        GtkWidget* bottom = gtk_hbutton_box_new();
563
564        gtk_button_box_set_layout(GTK_BUTTON_BOX(bottom), GTK_BUTTONBOX_END);
565        gtk_box_set_spacing(GTK_BOX(bottom), 9);
566        gtk_container_set_border_width(GTK_CONTAINER(bottom), 6);
567
568        GtkWidget* ok = gtk_button_new_from_stock(GTK_STOCK_OK);
569
570        g_signal_connect(G_OBJECT(ok), "clicked", G_CALLBACK(done), NULL);
571
572        GtkWidget* cancel = gtk_button_new_from_stock(GTK_STOCK_CANCEL);
573
574        g_signal_connect(G_OBJECT(cancel), "clicked", G_CALLBACK(destruct), NULL);
575
576        // pack
577        gtk_container_add(GTK_CONTAINER(vertical), horizontal);
578        gtk_container_add(GTK_CONTAINER(horizontal), left);
579        gtk_container_add(GTK_CONTAINER(horizontal), center);
580        gtk_container_add(GTK_CONTAINER(center), top);
581        gtk_container_add(GTK_CONTAINER(top), add);
582        gtk_container_add(GTK_CONTAINER(top), remove);
583        gtk_container_add(GTK_CONTAINER(center), middle);
584        gtk_container_add(GTK_CONTAINER(middle), up);
585        gtk_container_add(GTK_CONTAINER(middle), down);
586        gtk_container_add(GTK_CONTAINER(horizontal), right);
587        gtk_container_add(GTK_CONTAINER(vertical), separator);
588        gtk_container_add(GTK_CONTAINER(bottom), ok);
589        gtk_container_add(GTK_CONTAINER(bottom), cancel);
590        gtk_container_add(GTK_CONTAINER(vertical), bottom);
591        gtk_container_add(GTK_CONTAINER(window), vertical);
592
593        // show
594        gtk_widget_show(left);
595        gtk_widget_show(add);
596        gtk_widget_show(remove);
597        gtk_widget_show(top);
598        gtk_widget_show(up);
599        gtk_widget_show(down);
600        gtk_widget_show(middle);
601        gtk_widget_show(center);
602        gtk_widget_show(right);
603        gtk_widget_show(horizontal);
604        gtk_widget_show(separator);
605        gtk_widget_show(ok);
606        gtk_widget_show(cancel);
607        gtk_widget_show(bottom);
608        gtk_widget_show(vertical);
609        gtk_widget_show(window);
610
611        gtk_main();
612 }
613
614 void message(const string& text, const string& title, GtkMessageType type)
615 {
616        GtkWidget* box = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, type,
617                GTK_BUTTONS_OK, text.c_str());
618
619        gtk_window_set_title(GTK_WINDOW(box), title.c_str());
620
621        gtk_dialog_run(GTK_DIALOG(box));
622        gtk_widget_destroy(box);
623 }
488   #endif

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines