1 |
/* |
/* |
2 |
* Copyright (C) 2006-2014 Andreas Persson |
* Copyright (C) 2006-2015 Andreas Persson |
3 |
* |
* |
4 |
* This program is free software; you can redistribute it and/or |
* This program is free software; you can redistribute it and/or |
5 |
* modify it under the terms of the GNU General Public License as |
* modify it under the terms of the GNU General Public License as |
933 |
multiSelectKeyDown = false; |
multiSelectKeyDown = false; |
934 |
} |
} |
935 |
|
|
936 |
|
void DimRegionChooser::resetSelectedZones() { |
937 |
|
this->dimzones.clear(); |
938 |
|
if (!region) { |
939 |
|
queue_draw(); // redraw required parts |
940 |
|
return; |
941 |
|
} |
942 |
|
if (maindimregno < 0 || maindimregno >= region->DimensionRegions) { |
943 |
|
queue_draw(); // redraw required parts |
944 |
|
return; |
945 |
|
} |
946 |
|
if (!region->pDimensionRegions[maindimregno]) { |
947 |
|
queue_draw(); // redraw required parts |
948 |
|
return; |
949 |
|
} |
950 |
|
gig::DimensionRegion* dimrgn = region->pDimensionRegions[maindimregno]; |
951 |
|
|
952 |
|
bool isValidZone; |
953 |
|
this->maindimcase = caseOfDimRegion(dimrgn, &isValidZone); |
954 |
|
if (!isValidZone) { |
955 |
|
queue_draw(); // redraw required parts |
956 |
|
return; |
957 |
|
} |
958 |
|
|
959 |
|
for (std::map<gig::dimension_t,int>::const_iterator it = this->maindimcase.begin(); |
960 |
|
it != this->maindimcase.end(); ++it) |
961 |
|
{ |
962 |
|
this->dimzones[it->first].insert(it->second); |
963 |
|
} |
964 |
|
|
965 |
|
// redraw required parts |
966 |
|
queue_draw(); |
967 |
|
} |
968 |
|
|
969 |
|
bool DimRegionChooser::select_dimregion(gig::DimensionRegion* dimrgn) { |
970 |
|
if (!region) return false; //.selection failed |
971 |
|
|
972 |
|
for (int dr = 0; dr < region->DimensionRegions && region->pDimensionRegions[dr]; ++dr) { |
973 |
|
if (region->pDimensionRegions[dr] == dimrgn) { |
974 |
|
// reset dim region zone selection to the requested specific dim region case |
975 |
|
maindimregno = dr; |
976 |
|
resetSelectedZones(); |
977 |
|
|
978 |
|
// emit signal that dimregion selection has changed, for external entities |
979 |
|
dimregion_selected(); |
980 |
|
|
981 |
|
return true; // selection success |
982 |
|
} |
983 |
|
} |
984 |
|
|
985 |
|
return false; //.selection failed |
986 |
|
} |
987 |
|
|
988 |
gig::DimensionRegion* DimRegionChooser::get_main_dimregion() const { |
gig::DimensionRegion* DimRegionChooser::get_main_dimregion() const { |
989 |
if (!region) return NULL; |
if (!region) return NULL; |
990 |
return region->pDimensionRegions[maindimregno]; |
return region->pDimensionRegions[maindimregno]; |