]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - contrib/bobtoolz/funchandlers-GTK.cpp
Merge branch 'osxnetradiant'
[xonotic/netradiant.git] / contrib / bobtoolz / funchandlers-GTK.cpp
index 8f26d7149538d7a95f9884b5d7dd52c12a19b7b9..2e4fce176dff32cec004bdd88b30db7a02da9274 100644 (file)
@@ -599,6 +599,64 @@ void DoSplitPatchRows() {
        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];