[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: pattern flags: Bug Fix
Ok, here's version 2 of the bug fix, which excludes the combined
flags. It involves two functions, so i'm incuding it here as a
context diff (patch file) relative to the *original* 2.0 code.
- Randy
*** enviro_iv.cc~ Thu Jul 20 15:03:19 2000
--- enviro_iv.cc Mon Mar 19 11:06:33 2001
***************
*** 2290,2296 ****
TypeDef* flagenm = TA_PatternSpec.sub_types.FindName("PatFlags");
int i;
for(i=1;i<flagenm->enum_vals.size;i++) {
! patflagsmenu->AddItem(flagenm->enum_vals[i]->name,NULL,taivMenu::use_default,
new taivMenuCallback(EnvEditor)
(this,&EnvEditor::SetPatFlags));
}
--- 2290,2299 ----
TypeDef* flagenm = TA_PatternSpec.sub_types.FindName("PatFlags");
int i;
for(i=1;i<flagenm->enum_vals.size;i++) {
! String nm = flagenm->enum_vals[i]->name;
! if((nm == "TARG_EXT_FLAG") || (nm == "COMP_TARG_FLAG") || (nm == "COMP_EXT_FLAG") ||
! (nm == "COMP_TARG_EXT_FLAG") || (nm == "TARG_EXT_VALUE")) continue;
! patflagsmenu->AddItem(nm,NULL,taivMenu::use_default,
new taivMenuCallback(EnvEditor)
(this,&EnvEditor::SetPatFlags));
}
***************
*** 2298,2304 ****
patflagsmenu->AddSubMenu("Global PatternSpec Flags");
for(i=1;i<flagenm->enum_vals.size;i++) {
! patflagsmenu->AddItem(flagenm->enum_vals[i]->name,NULL,taivMenu::use_default,
new taivMenuCallback(EnvEditor)
(this,&EnvEditor::SetPatFlags));
}
--- 2301,2310 ----
patflagsmenu->AddSubMenu("Global PatternSpec Flags");
for(i=1;i<flagenm->enum_vals.size;i++) {
! String nm = flagenm->enum_vals[i]->name;
! if((nm == "TARG_EXT_FLAG") || (nm == "COMP_TARG_FLAG") || (nm == "COMP_EXT_FLAG") ||
! (nm == "COMP_TARG_EXT_FLAG") || (nm == "TARG_EXT_VALUE")) continue;
! patflagsmenu->AddItem(nm,NULL,taivMenu::use_default,
new taivMenuCallback(EnvEditor)
(this,&EnvEditor::SetPatFlags));
}
***************
*** 2414,2438 ****
void EnvEditor::SetPatFlags(taivMenuEl* sel) { // set patflags from menu
Apply(); // apply current settings
! int index = ((((taivHierEl *) sel)->sub_no) * 8) + sel->itm_no;
! switch (index) {
! case 0: patflags = PatternSpec::NO_FLAGS; break;
! case 8: patflags = PatternSpec::TARG_FLAG; specflags = false; break;
! case 9: patflags = PatternSpec::EXT_FLAG; specflags = false; break;
! case 10: patflags = PatternSpec::COMP_FLAG; specflags = false; break;
! case 11: patflags = PatternSpec::TARG_VALUE; specflags = false; break;
! case 12: patflags = PatternSpec::EXT_VALUE; specflags = false; break;
! case 13: patflags = PatternSpec::NO_UNIT_FLAG; specflags = false; break;
! case 14: patflags = PatternSpec::NO_UNIT_VALUE; specflags = false; break;
! case 15: patflags = PatternSpec::NO_APPLY; specflags = false; break;
! case 16: patflags = PatternSpec::TARG_FLAG; specflags = true; break;
! case 17: patflags = PatternSpec::EXT_FLAG; specflags = true; break;
! case 18: patflags = PatternSpec::COMP_FLAG; specflags = true; break;
! case 19: patflags = PatternSpec::TARG_VALUE; specflags = true; break;
! case 20: patflags = PatternSpec::EXT_VALUE; specflags = true; break;
! case 21: patflags = PatternSpec::NO_UNIT_FLAG; specflags = true; break;
! case 22: patflags = PatternSpec::NO_UNIT_VALUE; specflags = true; break;
! case 23: patflags = PatternSpec::NO_APPLY; specflags = true; break;
}
if((patflags != PatternSpec::NO_FLAGS) &&
(owner->auto_scale == true) && (cbar != NULL))
--- 2420,2444 ----
void EnvEditor::SetPatFlags(taivMenuEl* sel) { // set patflags from menu
Apply(); // apply current settings
! patflags = PatternSpec::NO_FLAGS; specflags = false;
! int submnu = ((taivHierEl *) sel)->sub_no;
! if(submnu > 0) { // submnu 1 = pattern flags, submnu 2 = global (spec) flags
! if(submnu == 2)
! specflags = true; // global (spec) flags
! int flag_sel = sel->itm_no; // which flag item selected (TARG_FLAG (=0) - NO_APPLY (=12))
! // can't just bit-shift because some combinations are represented and others are pure flags
! // (i.e., TARG_EXT_FLAG is OR of TARG_FLAG and EXT_FLAG, but there aren't such combinations
! // for TARG_VALUE and TARG_FLAG, for example..
! switch (flag_sel) {
! case 0: patflags = PatternSpec::TARG_FLAG; break;
! case 1: patflags = PatternSpec::EXT_FLAG; break;
! case 2: patflags = PatternSpec::COMP_FLAG; break;
! case 3: patflags = PatternSpec::TARG_VALUE; break;
! case 4: patflags = PatternSpec::EXT_VALUE; break;
! case 5: patflags = PatternSpec::NO_UNIT_FLAG; break;
! case 6: patflags = PatternSpec::NO_UNIT_VALUE; break;
! case 7: patflags = PatternSpec::NO_APPLY; break;
! }
}
if((patflags != PatternSpec::NO_FLAGS) &&
(owner->auto_scale == true) && (cbar != NULL))