[Aptitude-svn-commit] r3731 - in branches/aptitude-0.3/aptitude: . src/mine

Daniel Burrows dburrows at costa.debian.org
Mon Aug 8 16:53:37 UTC 2005


Author: dburrows
Date: Mon Aug  8 16:53:32 2005
New Revision: 3731

Modified:
   branches/aptitude-0.3/aptitude/ChangeLog
   branches/aptitude-0.3/aptitude/src/mine/cmine.cc
   branches/aptitude-0.3/aptitude/src/mine/cmine.h
Log:
Update minesweeper for ref_ptrs.

Modified: branches/aptitude-0.3/aptitude/ChangeLog
==============================================================================
--- branches/aptitude-0.3/aptitude/ChangeLog	(original)
+++ branches/aptitude-0.3/aptitude/ChangeLog	Mon Aug  8 16:53:32 2005
@@ -1,5 +1,9 @@
 2005-08-08  Daniel Burrows  <dburrows at debian.org>
 
+	* src/cmine/cmine.cc, src/cmine/cmine.h:
+
+	  Fix the Minesweeper code for ref_ptrs.
+
 	* src/ui.h:
 
 	  Use ref_ptrs in interface routines.

Modified: branches/aptitude-0.3/aptitude/src/mine/cmine.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/mine/cmine.cc	(original)
+++ branches/aptitude-0.3/aptitude/src/mine/cmine.cc	Mon Aug  8 16:53:32 2005
@@ -197,11 +197,16 @@
     }
 }
 
-void cmine::do_start_custom_game(vscreen_widget *w,
-				 vs_editline *heightedit,
-				 vs_editline *widthedit,
-				 vs_editline *minesedit)
-{
+void cmine::do_start_custom_game(vscreen_widget &w_bare,
+				 vs_editline &heightedit_bare,
+				 vs_editline &widthedit_bare,
+				 vs_editline &minesedit_bare)
+{
+  // Be ultra-safe and hold strong references to everything.
+  vs_widget_ref w(&w_bare);
+  vs_editline_ref heightedit(&heightedit_bare),
+    widthedit(&widthedit_bare), minesedit(&minesedit_bare);
+
   wstring s=heightedit->get_text();
 
   wchar_t *end=const_cast<wchar_t *>(s.c_str());
@@ -252,38 +257,38 @@
 
 void cmine::do_custom_game()
 {
-  vs_center *center=new vs_center;
+  vs_center_ref center=vs_center::create();
   center->set_bg_style(style_attrs_flip(A_REVERSE));
 
-  vs_table *table=new vs_table;
+  vs_table_ref table=vs_table::create();
 
-  vs_label *overalllabel=new vs_label(_("Setup custom game"));
+  vs_label_ref overalllabel=vs_label::create(_("Setup custom game"));
 
-  vs_label *heightlabel=new vs_label(_("Height of board: "));
-  vs_editline *heightedit=new vs_editline(L"");
+  vs_label_ref heightlabel=vs_label::create(_("Height of board: "));
+  vs_editline_ref heightedit=vs_editline::create(L"");
 
-  vs_label *widthlabel=new vs_label(_("Width of board: "));
-  vs_editline *widthedit=new vs_editline(L"");
+  vs_label_ref widthlabel=vs_label::create(_("Width of board: "));
+  vs_editline_ref widthedit=vs_editline::create(L"");
 
-  vs_label *mineslabel=new vs_label(_("Number of mines: "));
-  vs_editline *minesedit=new vs_editline(L"");
+  vs_label_ref mineslabel=vs_label::create(_("Number of mines: "));
+  vs_editline_ref minesedit=vs_editline::create(L"");
 
-  vs_button *okbutton=new vs_button(_("Ok"));
-  vs_button *cancelbutton=new vs_button(_("Cancel"));
+  vs_button_ref okbutton=vs_button::create(_("Ok"));
+  vs_button_ref cancelbutton=vs_button::create(_("Cancel"));
 
   table->connect_key("Confirm", &global_bindings, okbutton->pressed.make_slot());
 
   okbutton->pressed.connect(sigc::bind(sigc::mem_fun(*this, &cmine::do_start_custom_game),
-				       center,
-				       heightedit,
-				       widthedit,
-				       minesedit));
-  cancelbutton->pressed.connect(sigc::mem_fun(*center, &vscreen_widget::destroy));
+				       center.weak_ref(),
+				       heightedit.weak_ref(),
+				       widthedit.weak_ref(),
+				       minesedit.weak_ref()));
+  cancelbutton->pressed.connect(sigc::mem_fun(*center.unsafe_get_ref(), &vscreen_widget::destroy));
 
   table->connect_key("Cancel", &global_bindings, cancelbutton->pressed.make_slot());
 
-  vs_center *cyes=new vs_center(okbutton);
-  vs_center *cno=new vs_center(cancelbutton);
+  vs_center_ref cyes=vs_center::create(okbutton);
+  vs_center_ref cno=vs_center::create(cancelbutton);
 
   table->add_widget(overalllabel, 0, 0, 1, 2, true, false);
 
@@ -311,7 +316,7 @@
   cyes->show();
   cno->show();
 
-  vs_frame *frame=new vs_frame(table);
+  vs_frame_ref frame=vs_frame::create(table);
   center->add_widget(frame);
 
   popup_widget(center);
@@ -319,20 +324,20 @@
 
 void cmine::do_new_game()
 {
-  vs_center *center=new vs_center;
+  vs_center_ref center=vs_center::create();
   center->set_bg_style(style_attrs_flip(A_REVERSE));
 
-  vs_table *table=new vs_table;
+  vs_table_ref table=vs_table::create();
 
-  vs_label *overalllabel=new vs_label(_("Choose difficulty level"));
+  vs_label_ref overalllabel=vs_label::create(_("Choose difficulty level"));
 
-  vs_radiobutton *easybutton=new vs_radiobutton(_("Easy"), true);
-  vs_radiobutton *mediumbutton=new vs_radiobutton(_("Medium"), false);
-  vs_radiobutton *hardbutton=new vs_radiobutton(_("Hard"), false);
-  vs_radiobutton *custombutton=new vs_radiobutton(_("Custom"), false);
+  vs_radiobutton_ref easybutton=vs_radiobutton::create(_("Easy"), true);
+  vs_radiobutton_ref mediumbutton=vs_radiobutton::create(_("Medium"), false);
+  vs_radiobutton_ref hardbutton=vs_radiobutton::create(_("Hard"), false);
+  vs_radiobutton_ref custombutton=vs_radiobutton::create(_("Custom"), false);
 
-  vs_button *okbutton=new vs_button(_("Ok"));
-  vs_button *cancelbutton=new vs_button(_("Cancel"));
+  vs_button_ref okbutton=vs_button::create(_("Ok"));
+  vs_button_ref cancelbutton=vs_button::create(_("Cancel"));
 
   table->connect_key_post("Confirm", &global_bindings, okbutton->pressed.make_slot());
 
@@ -349,15 +354,15 @@
 
   okbutton->pressed.connect(sigc::bind(sigc::mem_fun(*this, &cmine::do_continue_new_game),
 				       true,
-				       center,
+				       center.weak_ref(),
 				       grp));
   cancelbutton->pressed.connect(sigc::bind(sigc::mem_fun(*this, &cmine::do_continue_new_game),
 					   false,
-					   center,
+					   center.weak_ref(),
 					   grp));
 
-  vs_center *cok=new vs_center(okbutton);
-  vs_center *ccancel=new vs_center(cancelbutton);
+  vs_center_ref cok=vs_center::create(okbutton);
+  vs_center_ref ccancel=vs_center::create(cancelbutton);
 
   table->add_widget(overalllabel, 0, 0, 1, 2, true, false);
   table->add_widget(easybutton,   1, 0, 1, 2, true, false);
@@ -367,16 +372,18 @@
   table->add_widget(cok,          6, 0, 1, 1, false, false);
   table->add_widget(ccancel,      6, 1, 1, 1, false, false);
 
-  vs_frame *frame=new vs_frame(table);
+  vs_frame_ref frame=vs_frame::create(table);
   center->add_widget(frame);
 
   popup_widget(center);
 }
 
 void cmine::do_continue_new_game(bool start,
-				 vscreen_widget *w,
+				 vscreen_widget &w_bare,
 				 vs_radiogroup *grp)
 {
+  vs_widget_ref w(&w_bare);
+
   if(start)
     switch(grp->get_selected())
       {
@@ -436,36 +443,36 @@
 	      if(rand()<(RAND_MAX/3))
 		{
 		  if(rand()<(RAND_MAX/2))
-		    add_status_widget(new vs_label(_("The spikes were poisoned!  The poison was deadly..  --More--"),
-						   retr_status_color()));
+		    add_status_widget(vs_label::create(_("The spikes were poisoned!  The poison was deadly..  --More--"),
+						       retr_status_color()));
 
-		  add_status_widget(new vs_label(_("You land on a set of sharp iron spikes!  --More--"),
-						 retr_status_color()));
+		  add_status_widget(vs_label::create(_("You land on a set of sharp iron spikes!  --More--"),
+						     retr_status_color()));
 		}
-	      add_status_widget(new vs_label(_("You fall into a pit!  --More--"),
-					     retr_status_color()));
+	      add_status_widget(vs_label::create(_("You fall into a pit!  --More--"),
+						 retr_status_color()));
 	    }
-	  add_status_widget(new vs_label(_("KABOOM!  You step on a land mine.  --More--"),
-					 retr_status_color()));
+	  add_status_widget(vs_label::create(_("KABOOM!  You step on a land mine.  --More--"),
+					     retr_status_color()));
 	  break;
 	case 4:
 	  if(rand()<RAND_MAX/2)
-	    add_status_widget(new vs_label(_("The dart was poisoned!  The poison was deadly...  --More--"),
-					   retr_status_color()));
-	  add_status_widget(new vs_label(_("A little dart shoots out at you!  You are hit by a little dart!  --More--"),
-					 retr_status_color()));
+	    add_status_widget(vs_label::create(_("The dart was poisoned!  The poison was deadly...  --More--"),
+					       retr_status_color()));
+	  add_status_widget(vs_label::create(_("A little dart shoots out at you!  You are hit by a little dart!  --More--"),
+					     retr_status_color()));
 	  break;
 	case 5:
-	  add_status_widget(new vs_label(_("You turn to stone... --More--"),
-					 retr_status_color()));
-	  add_status_widget(new vs_label(_("Touching the cockatrice corpse was a fatal mistake.  --More--"),
-					 retr_status_color()));
-	  add_status_widget(new vs_label(_("You feel here a cockatrice corpse.  --More--"),
-					 retr_status_color()));
+	  add_status_widget(vs_label::create(_("You turn to stone... --More--"),
+					     retr_status_color()));
+	  add_status_widget(vs_label::create(_("Touching the cockatrice corpse was a fatal mistake.  --More--"),
+					     retr_status_color()));
+	  add_status_widget(vs_label::create(_("You feel here a cockatrice corpse.  --More--"),
+					     retr_status_color()));
 	  break;
 	case 6:
-	  add_status_widget(new vs_label(_("Click!  You trigger a rolling boulder trap!  You are hit by a boulder! --More--"),
-					 retr_status_color()));
+	  add_status_widget(vs_label::create(_("Click!  You trigger a rolling boulder trap!  You are hit by a boulder! --More--"),
+					     retr_status_color()));
 	  break;
 	case 7:
 	  if(rand()<(RAND_MAX/2))
@@ -503,12 +510,12 @@
 
 	      snprintf(buf, 512, _("Your wand of %s breaks apart and explodes!  --More--"));
 
-	      add_status_widget(new vs_label(buf,
-					     retr_status_color()));
+	      add_status_widget(vs_label::create(buf,
+						 retr_status_color()));
 	    }
 
-	  add_status_widget(new vs_label(_("You are jolted by a surge of electricity!  --More--"),
-					 retr_status_color()));
+	  add_status_widget(vs_label::create(_("You are jolted by a surge of electricity!  --More--"),
+					     retr_status_color()));
 	  break;
 	}
 #endif
@@ -636,7 +643,7 @@
 	  encoding="UTF-8";
 	}
 
-      vscreen_widget *w=vs_dialog_fileview(buf, NULL, NULL, NULL, encoding);
+      vs_widget_ref w=vs_dialog_fileview(buf, NULL, NULL, NULL, encoding);
       w->show_all();
 
       popup_widget(w);

Modified: branches/aptitude-0.3/aptitude/src/mine/cmine.h
==============================================================================
--- branches/aptitude-0.3/aptitude/src/mine/cmine.h	(original)
+++ branches/aptitude-0.3/aptitude/src/mine/cmine.h	Mon Aug  8 16:53:32 2005
@@ -59,13 +59,13 @@
   void do_save_game(std::wstring s);
   void do_new_game();
   void do_continue_new_game(bool start,
-			    vscreen_widget *w,
+			    vscreen_widget &w,
 			    vs_radiogroup *grp);
   void do_custom_game();
-  void do_start_custom_game(vscreen_widget *w,
-			    vs_editline *heightedit,
-			    vs_editline *widthedit,
-			    vs_editline *minesedit);
+  void do_start_custom_game(vscreen_widget &w,
+			    vs_editline &heightedit,
+			    vs_editline &widthedit,
+			    vs_editline &minesedit);
 protected:
   void paint_header(const style &st);
 public:



More information about the Aptitude-svn-commit mailing list