]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - contrib/bobtoolz/funchandlers-GTK.cpp
some fixes, and patch bobtoolz improvements, from osxnetradiant
[xonotic/netradiant.git] / contrib / bobtoolz / funchandlers-GTK.cpp
index 5d1f16a910c749b058816a74152ed53b8861ed69..5e7b25ce1d65379ff1fae15a65dd7f44cad3c0c1 100644 (file)
@@ -499,7 +499,7 @@ void DoSplitPatch() {
 
        patch.LoadFromPatch(instance);
 
-       std::list<DPatch> patchList = patch.Split( true, true );
+       std::list<DPatch> patchList = patch.Split();
        for(std::list<DPatch>::iterator patches = patchList.begin(); patches != patchList.end(); patches++) {
                (*patches).BuildInRadiant();
        }
@@ -507,6 +507,64 @@ void DoSplitPatch() {
        Path_deleteTop(instance.path());
 }
 
+void DoSplitPatchCols() {
+       UndoableCommand undo("bobToolz.splitPatchCols");
+       
+       DPatch patch;
+       
+       // ensure we have something selected
+       if( GlobalSelectionSystem().countSelected() != 1 )
+       {
+               DoMessageBox("Invalid number of patches selected, choose 1 only", "Error", eMB_OK);
+               return; 
+       }
+       
+       scene::Instance& instance = GlobalSelectionSystem().ultimateSelected();
+       
+       if( !Node_isPatch(instance.path().top()) ) {
+               DoMessageBox("You must select ONLY patches", "Error", eMB_OK);
+               return; 
+       }
+       
+       patch.LoadFromPatch(instance);
+       
+       std::list<DPatch> patchList = patch.SplitCols();
+       for(std::list<DPatch>::iterator patches = patchList.begin(); patches != patchList.end(); patches++) {
+               (*patches).BuildInRadiant();
+       }
+       
+       Path_deleteTop(instance.path());
+}
+
+void DoSplitPatchRows() {
+       UndoableCommand undo("bobToolz.splitPatchRows");
+       
+       DPatch patch;
+       
+       // ensure we have something selected
+       if( GlobalSelectionSystem().countSelected() != 1 )
+       {
+               DoMessageBox("Invalid number of patches selected, choose 1 only", "Error", eMB_OK);
+               return; 
+       }
+       
+       scene::Instance& instance = GlobalSelectionSystem().ultimateSelected();
+       
+       if( !Node_isPatch(instance.path().top()) ) {
+               DoMessageBox("You must select ONLY patches", "Error", eMB_OK);
+               return; 
+       }
+       
+       patch.LoadFromPatch(instance);
+       
+       std::list<DPatch> patchList = patch.SplitRows();
+       for(std::list<DPatch>::iterator patches = patchList.begin(); patches != patchList.end(); patches++) {
+               (*patches).BuildInRadiant();
+       }
+       
+       Path_deleteTop(instance.path());
+}
+
 void DoVisAnalyse()
 {
        char filename[1024];