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 84 by douglas, 2003-03-14T00:19:14-08:00 vs.
RenegadeMapSelector/RenegadeMapSelector.cpp (file contents), Revision 368 by douglas, 2008-08-23T02:44:00-07: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 113 | Line 119 | int main(int argc, char* argv[])
119                          {
120                                  error = "The argument -file must be followed by a filename.";
121  
122 +                                cerr << program << ": " << error << "\n";
123   #ifdef _WIN32
124                                  MessageBox(NULL, error.c_str(), "Bad Arguments", MB_ICONERROR);
125   #else
126 <                                message(error, "Bad Arguments", GTK_MESSAGE_ERROR);
126 >                                message(NULL, error, "Bad Arguments", GTK_MESSAGE_ERROR);
127   #endif
128                                  return 1;
129                          }
130                  }
131 +                else
132 +                {
133 +                        error = "The argument " + arg + " is not a valid argument.";
134 +
135 +                        cerr << program << ": " << error << "\n";
136 + #ifdef _WIN32
137 +                        MessageBox(NULL, error.c_str(), "Unknown Arguments", MB_ICONWARNING
138 +                                );
139 + #else
140 +                        message(NULL, error, "Unknown Arguments", GTK_MESSAGE_WARNING);
141 + #endif
142 +                }
143          }
144  
145   #ifdef _WIN32
# Line 134 | Line 153 | int main(int argc, char* argv[])
153          {
154                  error = "Could not open " + file + ".";
155  
156 +                cerr << program << ": " << error << "\n";
157   #ifdef _WIN32
158                  MessageBox(NULL, error.c_str(), "Bad File", MB_ICONERROR);
159   #else
160 <                message(error, "Bad File", GTK_MESSAGE_ERROR);
160 >                message(NULL, error, "Bad File", GTK_MESSAGE_ERROR);
161   #endif
162                  return 1;
163          }
# Line 145 | Line 165 | int main(int argc, char* argv[])
165   #ifdef _WIN32
166          DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAP_SELECTOR), NULL, selector);
167   #else
168 <        selector();
168 >        MapSelector selector;
169   #endif
170  
171          delete config;
# Line 162 | Line 182 | int main(int argc, char* argv[])
182   }
183  
184   #ifdef _WIN32
185 +
186   int CALLBACK selector(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
187   {
188          switch (uMsg)
# Line 186 | Line 207 | int CALLBACK selector(HWND hwndDlg, UINT
207                          GetCurrentDirectory(MAX_PATH + 1, directory);
208                          if (debug) cerr << "directory = " << directory << "\n";
209  
210 <                        char* data = new char[MAX_PATH + 1];
210 >                        char* data = new char[strlen(directory) + 12];
211                          sprintf(data, "%s\\data\\*.mix", directory);
212                          delete [] directory;
213                          if (debug) cerr << "data = " << data << "\n";
# Line 213 | Line 234 | int CALLBACK selector(HWND hwndDlg, UINT
234                          if (GetListBoxInfo(GetDlgItem(hwndDlg, IDC_SELECTED)) == 0)
235                          {
236                                  MessageBox(hwndDlg, "You need at least one map.", "No Maps",
237 <                                        MB_ICONEXCLAMATION);
237 >                                        MB_ICONINFORMATION);
238  
239                                  return false;
240                          }
# Line 367 | Line 388 | int CALLBACK selector(HWND hwndDlg, UINT
388                                  if (debug) cerr << "downs = {\n";
389                                  for (unsigned index = count; index > 0; index--)
390                                  {
391 <                                        if (debug) cerr << "   [" << index << "] = " << downs[index
392 <                                                - 1] << "\n";
391 >                                        if (debug) cerr << "   [" << index - 1 << "] = " << downs[
392 >                                                index - 1] << "\n";
393  
394                                          char* down = new char[SendMessage(GetDlgItem(hwndDlg,
395                                                  IDC_SELECTED), LB_GETTEXTLEN, downs[index - 1], 0) +
# Line 466 | Line 487 | int CALLBACK selector(HWND hwndDlg, UINT
487  
488          return false;
489   }
469 #else
470 static void destruct(GtkWidget* widget, gpointer data)
471 {
472        gtk_main_quit();
473 }
474
475 static void done(GtkWidget* widget, gpointer data)
476 {
477        if (true)
478        {
479                message("You need at least one map.", "No Maps",
480                        GTK_MESSAGE_WARNING);
481        }
482        else
483        {
484                //
485
486                config->save();
487
488                gtk_main_quit();
489        }
490 }
491
492 static void mapAdd(GtkWidget* widget, gpointer data)
493 {
494        cout << "STUB: add\n\a" << flush;
495 }
496
497 static void mapRemove(GtkWidget* widget, gpointer data)
498 {
499        cout << "STUB: remove\n\a" << flush;
500 }
490  
502 static void mapUp(GtkWidget* widget, gpointer data)
503 {
504        cout << "STUB: up\n\a" << flush;
505 }
506
507 static void mapDown(GtkWidget* widget, gpointer data)
508 {
509        cout << "STUB: down\n\a" << flush;
510 }
511
512 void selector(void)
513 {
514        GtkWidget* window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
515
516        gtk_window_set_title(GTK_WINDOW(window), "Renegade Map Selector");
517        gtk_window_set_resizable(GTK_WINDOW(window), false);
518        g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK(destruct),
519                NULL);
520
521        GtkWidget* vertical = gtk_vbox_new(false, 0);
522        GtkWidget* horizontal = gtk_hbox_new(false, 9);
523        GtkWidget* left = gtk_frame_new("Available Maps");
524
525        gtk_frame_set_label_align(GTK_FRAME(left), 0.5, 0.5);
526        gtk_container_set_border_width(GTK_CONTAINER(left), 6);
527
528        GtkWidget* center = gtk_vbox_new(true, 0);
529        GtkWidget* top = gtk_vbutton_box_new();
530
531        gtk_button_box_set_layout(GTK_BUTTON_BOX(top), GTK_BUTTONBOX_START);
532        gtk_box_set_spacing(GTK_BOX(top), 9);
533        gtk_container_set_border_width(GTK_CONTAINER(top), 6);
534
535        GtkWidget* add = gtk_button_new_with_mnemonic("_Add");
536
537        g_signal_connect(G_OBJECT(add), "clicked", G_CALLBACK(mapAdd), NULL);
538        gtk_widget_set_sensitive(add, false);
539
540        GtkWidget* remove = gtk_button_new_with_mnemonic("_Remove");
541
542        g_signal_connect(G_OBJECT(remove), "clicked", G_CALLBACK(mapRemove), NULL);
543        gtk_widget_set_sensitive(remove, false);
544
545        GtkWidget* middle = gtk_vbutton_box_new();
546
547        gtk_button_box_set_layout(GTK_BUTTON_BOX(middle), GTK_BUTTONBOX_END);
548        gtk_box_set_spacing(GTK_BOX(middle), 9);
549        gtk_container_set_border_width(GTK_CONTAINER(middle), 6);
550
551        GtkWidget* up = gtk_button_new_with_mnemonic("_Up");
552
553        g_signal_connect(G_OBJECT(up), "clicked", G_CALLBACK(mapUp), NULL);
554        gtk_widget_set_sensitive(up, false);
555
556        GtkWidget* down = gtk_button_new_with_mnemonic("_Down");
557
558        g_signal_connect(G_OBJECT(down), "clicked", G_CALLBACK(mapDown), NULL);
559        gtk_widget_set_sensitive(down, false);
560
561        GtkWidget* right = gtk_frame_new("Selected Maps");
562
563        gtk_frame_set_label_align(GTK_FRAME(right), 0.5, 0.5);
564        gtk_container_set_border_width(GTK_CONTAINER(right), 6);
565
566        GtkWidget* separator = gtk_hseparator_new();
567        GtkWidget* bottom = gtk_hbutton_box_new();
568
569        gtk_button_box_set_layout(GTK_BUTTON_BOX(bottom), GTK_BUTTONBOX_END);
570        gtk_box_set_spacing(GTK_BOX(bottom), 9);
571        gtk_container_set_border_width(GTK_CONTAINER(bottom), 6);
572
573        GtkWidget* ok = gtk_button_new_from_stock(GTK_STOCK_OK);
574
575        g_signal_connect(G_OBJECT(ok), "clicked", G_CALLBACK(done), NULL);
576
577        GtkWidget* cancel = gtk_button_new_from_stock(GTK_STOCK_CANCEL);
578
579        g_signal_connect(G_OBJECT(cancel), "clicked", G_CALLBACK(destruct), NULL);
580
581        // pack
582        gtk_container_add(GTK_CONTAINER(vertical), horizontal);
583        gtk_container_add(GTK_CONTAINER(horizontal), left);
584        gtk_container_add(GTK_CONTAINER(horizontal), center);
585        gtk_container_add(GTK_CONTAINER(center), top);
586        gtk_container_add(GTK_CONTAINER(top), add);
587        gtk_container_add(GTK_CONTAINER(top), remove);
588        gtk_container_add(GTK_CONTAINER(center), middle);
589        gtk_container_add(GTK_CONTAINER(middle), up);
590        gtk_container_add(GTK_CONTAINER(middle), down);
591        gtk_container_add(GTK_CONTAINER(horizontal), right);
592        gtk_container_add(GTK_CONTAINER(vertical), separator);
593        gtk_container_add(GTK_CONTAINER(bottom), ok);
594        gtk_container_add(GTK_CONTAINER(bottom), cancel);
595        gtk_container_add(GTK_CONTAINER(vertical), bottom);
596        gtk_container_add(GTK_CONTAINER(window), vertical);
597
598        // show
599        gtk_widget_show(left);
600        gtk_widget_show(add);
601        gtk_widget_show(remove);
602        gtk_widget_show(top);
603        gtk_widget_show(up);
604        gtk_widget_show(down);
605        gtk_widget_show(middle);
606        gtk_widget_show(center);
607        gtk_widget_show(right);
608        gtk_widget_show(horizontal);
609        gtk_widget_show(separator);
610        gtk_widget_show(ok);
611        gtk_widget_show(cancel);
612        gtk_widget_show(bottom);
613        gtk_widget_show(vertical);
614        gtk_widget_show(window);
615
616        gtk_main();
617 }
618
619 void message(const string& text, const string& title, GtkMessageType type)
620 {
621        GtkWidget* box = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, type,
622                GTK_BUTTONS_OK, text.c_str());
623
624        gtk_window_set_title(GTK_WINDOW(box), title.c_str());
625
626        gtk_dialog_run(GTK_DIALOG(box));
627        gtk_widget_destroy(box);
628 }
491   #endif

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines