;+ ;NAME: ; thm_ui_zaxis_settings__define ; ;PURPOSE: ; zaxis_settings is an object that holds all of the settings necessary for ; spectral data plots that are common to the entire panel ; ;CALLING SEQUENCE: ; zaxisSettings = Obj_New("THM_UI_ZAXIS_SETTINGS") ; ;INPUT: ; none ; ;KEYWORDS: ; xAxisIndex flag to index x axis ; yAxisIndex flag to index y axis ; colorTable droplist value of color tables ; minRange minimum range value ; maxRange maximum range value ; fixed flag to use fixed min/max values ; tickNum the number of z-axis ticks ; minorTickNum the number of minor ticks between majors ; logMinorTickType full-interval,first-magnitude,last-magnitude,even-spacing ; annotationStyle droplist value for annotation style ; annotateTextObject a text object to indicate the size,color,font,format of the annotation text ; annotationOrientation flag indicating horizontal or vertical annotations 0=horizontal, 1=vertical ; annotateExponent Flag indicates whether to force annotations into an exponential format. 0: default behavior, 1: Always exponential, 2: Never exponential ; labelTextObject a text object to indicate the size,color,font,format of the label text - this is being treated as the z title ; subtitleTextObject a text object for the subtitle ; labelOrientation flag indicating horizontal/vertical text ; labelMargin in number of pts ; lazylabels flag indicating if underscores will be converted to carriage returns ; scaling 0=Linear, 1=Log10, 2= Natural Log ; placement droplist value of placement location ; margin number of points between plot & zaxis ; showFrequencies flag to show frequencies ; frequencyMin minimum value for showing frequencies ; frequencyMax maximum value for showing frequencies ; autoticks direct the draw object to make decisions about tick positioning automatically, and mutate axis object settings ; ;OUTPUT: ; spectra property object reference ; ;METHODS: ; SetProperty procedure to set keywords ; GetProperty procedure to get keywords ; GetAll returns the entire structure ; GetPlacements returns string array of placement options ; GetPlacement returns name of placement option given an index ; GetColorTables returns string array of color tables ; GetColorTable returns name of color table given an index ; ;NOTES: ; Methods: GetProperty,SetProperty,GetAll,SetAll are now managed automatically using the parent class ; thm_ui_getset. You can still call these methods when using objects of type thm_ui_zaxis_settings, and ; call them in the same way as before ; ;$LastChangedBy:pcruce $ ;$LastChangedDate:2009-09-10 09:15:19 -0700 (Thu, 10 Sep 2009) $ ;$LastChangedRevision:6707 $ ;$URL:svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/thmsoc/trunk/idl/themis/thm_ui_new/objects/thm_ui_zaxis_settings__define.pro $ ;----------------------------------------------------------------------------------- FUNCTION THM_UI_ZAXIS_SETTINGS::Copy out = Obj_New("THM_UI_ZAXIS_SETTINGS", /nosave) selfClass = Obj_Class(self) outClass = Obj_Class(out) IF selfClass NE outClass THEN BEGIN dprint, 'Object classes not identical' RETURN, -1 END Struct_Assign, self, out newLabel=Obj_New("THM_UI_TEXT") IF Obj_Valid(self.labelTextObject) THEN newLabel=self.labelTextObject->Copy() ELSE $ newLabel=Obj_New() out->SetProperty, LabelTextObject=newLabel newsubtitle=Obj_New("THM_UI_TEXT") IF Obj_Valid(self.subtitleTextObject) THEN newsubtitle=self.subtitleTextObject->Copy() ELSE $ newsubtitle=Obj_New() out->SetProperty, subtitleTextObject=newsubtitle newAnnotate=Obj_New("THM_UI_TEXT") IF Obj_Valid(self.annotateTextObject) THEN newAnnotate=self.annotateTextObject->Copy() ELSE $ newAnnotate=Obj_New() out->SetProperty, AnnotateTextObject=newAnnotate RETURN, out END ;-------------------------------------------------------------------------------- PRO THM_UI_ZAXIS_SETTINGS::Save copy = self->copy() if ptr_valid(self.origsettings) then begin ptr_free,self.origsettings endif self.origsettings = ptr_new(copy->getall()) RETURN END ;-------------------------------------------------------------------------------- PRO THM_UI_ZAXIS_SETTINGS::Reset if ptr_valid(self.origsettings) then begin self->setall,*self.origsettings self->Save endif END ;-------------------------------------------------------------------------------- FUNCTION THM_UI_ZAXIS_SETTINGS::GetPlacements RETURN, ['Top', 'Bottom', 'Left', 'Right', 'Do Not Show ColorBar'] END ;-------------------------------------------------------------------------------- FUNCTION THM_UI_ZAXIS_SETTINGS::GetPlacement, index IF N_Elements(index) EQ 0 THEN RETURN, 0 IF NOT Is_Numeric(index) THEN RETURN, 0 IF index LT 0 OR index GT 5 THEN RETURN, 0 placements = self->GetPlacements() RETURN, placements(index) END ;-------------------------------------------------------------------------------- FUNCTION THM_UI_ZAXIS_SETTINGS::GetColorTables RETURN, ['Rainbow', 'Cool', 'Hot', 'Copper', 'Extreme Hot-Cold', 'Gray','Themis'] END ;-------------------------------------------------------------------------------- FUNCTION THM_UI_ZAXIS_SETTINGS::GetColorTableNumber, index IF N_Elements(index) EQ 0 THEN index = self.colorTable IF NOT Is_Numeric(index) THEN RETURN, 0 IF index LT 0 OR index GT 6 THEN RETURN, 0 RETURN, index END ;-------------------------------------------------------------------------------- FUNCTION THM_UI_ZAXIS_SETTINGS::GetColorTable, index IF N_Elements(index) EQ 0 THEN RETURN, 0 IF NOT Is_Numeric(index) THEN RETURN, 0 IF index LT 0 OR index GT 5 THEN RETURN, 0 colorTables = self->GetColorTables() RETURN, colorTables(index) END ;-------------------------------------------------------------------------------- FUNCTION THM_UI_ZAXIS_SETTINGS::GetAnnotations return, [ '1234 (rounded down)', '1.', '1.2', '1.23', '1.234', '1.1234', $ '1.01234', '1.001234','1.0001234','1.00001234','1.000001234'] ;RETURN, ['d(1234)', 'f0(1234)', 'f1(123.4)', 'f2(12.34)', 'f3(1.234)', 'f4(0.1234)', $ ; 'f5(0.01234)', 'f6(0.001234)', 'e0(123e4)', 'e1(12.3e4)', 'e2(1.23e4)', $ ; 'e3(0.123e4)', 'e4(0.01234)', 'e5(0.001234)', 'e6(0.0001234)'] END ;-------------------------------------------------------------------------------- FUNCTION THM_UI_ZAXIS_SETTINGS::GetAnnotation, index IF N_Elements(index) EQ 0 THEN RETURN, 0 IF NOT Is_Numeric(index) THEN RETURN, 0 IF index LT 0 OR index GT 5 THEN RETURN, 0 annotations = self->GetAnnotations() RETURN, annotations(index) END ;-------------------------------------------------------------------------------- ;pro thm_ui_zaxis_settings::setTouched ; ; if ~self->equalTolerance((*self.origsettings).minRange,self.minRange) then self.touchedMinRange=1 ; if ~self->equalTolerance((*self.origsettings).maxRange,self.maxRange) then self.touchedmaxRange=1 ; if (*self.origsettings).fixed ne self.fixed then self.touchedfixed = 1 ; if (*self.origsettings).ticknum ne self.ticknum then self.touchedticknum = 1 ; if (*self.origsettings).minorticknum ne self.minorticknum then self.touchedminorticknum = 1 ; if (*self.origsettings).touchedautoticks ne self.minorticknum then self.touchedminorticknum = 1 ; ;end FUNCTION THM_UI_ZAXIS_SETTINGS::Init, $ xAxisIndex=xAxisIndex, $ yAxisIndex=yAxisIndex, $ colorTable=colorTable,$ minRange=minRange,$ maxRange=maxRange,$ fixed=fixed,$ tickNum=tickNum,$ minorTickNum=minorTickNum,$ logMinorTickType=logMinorTickType,$ annotationStyle=annotationStyle,$ annotateTextObject=annotateTextObject,$ annotationOrientation=annotationOrientation,$ annotateExponent=annotateExponent, $ ; Flag indicates whether to force annotations into an exponential format. 0: default behavior, 1: Always exponential, 2: Never exponential labelTextObject=labelTextObject,$ subtitleTextObject=subtitleTextObject,$ labelOrientation=labelOrientation,$ labelMargin=labelMargin,$ lazylabels=lazylabels,$ scaling=scaling,$ placement=placement,$ margin=margin,$ showFrequencies=showFrequencies,$ frequencyMin=frequencyMin,$ frequencyMax=frequencyMax, $ autoticks=autoticks, $ ; direct the draw object to make decisions about tick positioning automatically, and mutate axis object settings nosave=nosave if n_elements(xAxisIndex) eq 0 then xAxisIndex = 0 if n_elements(yAxisIndex) eq 0 then yAxisIndex = 0 if n_elements(colorTable) eq 0 then colorTable = 0 if n_elements(minRange) eq 0 then minRange = 0 if n_elements(maxRange) eq 0 then maxRange = 0 if n_elements(fixed) eq 0 then fixed = 0 if n_elements(tickNum) eq 0 then tickNum = 0 if n_elements(minorTickNum) eq 0 then minorTickNum = 0 if n_elements(logMinorTickType) eq 0 then logMinorTickType = 1 if n_elements(annotationStyle) eq 0 then annotationStyle = 0 if n_elements(annotateTextObject) eq 0 then annotateTextObject = obj_new() if n_elements(annotationOrientation) eq 0 then annotationOrientation = 0 if n_elements(annotateExponent) eq 0 then annotateExponent = 0 if n_elements(labelTextObject) eq 0 then labelTextObject = obj_new() if n_elements(subtitleTextObject) eq 0 then subtitleTextObject = obj_new() if n_elements(labelOrientation) eq 0 then labelOrientation = 0 if n_elements(labelMargin) eq 0 then labelMargin = 0 if n_elements(lazylabels) eq 0 then lazylabels = 1 if n_elements(scaling) eq 0 then scaling = 0 if n_elements(placement) eq 0 then placement = 0 if n_elements(margin) eq 0 then margin = 0 if n_elements(showFrequencies) eq 0 then showFrequencies = 0 if n_elements(frequencyMin) eq 0 then frequencyMin = 0 if n_elements(frequencyMax) eq 0 then frequencyMax = 0 self.xAxisIndex = xAxisIndex self.yAxisIndex = yAxisIndex self.colorTable = colorTable self.minRange = minRange self.maxRange = maxRange self.fixed = fixed self.tickNum = tickNum self.minorTickNum = minorTickNum self.logMinorTickType = logMinorTickType self.annotationStyle = annotationStyle self.annotateTextObject = annotateTextObject self.annotationOrientation = annotationOrientation self.annotateExponent = annotateExponent self.labelTextObject = labelTextObject self.subtitleTextObject = subtitleTextObject self.labelOrientation = labelOrientation self.labelMargin = labelMargin self.lazylabels = lazylabels self.scaling = scaling self.placement = placement self.margin = margin self.showFrequencies = showFrequencies self.frequencyMin = frequencyMin self.frequencyMax = frequencyMax if n_elements(autoticks) eq 0 then autoticks = 1 self.autoticks = autoticks if n_elements(nosave) EQ 0 then begin self->save endif RETURN, 1 END ;-------------------------------------------------------------------------------- PRO THM_UI_ZAXIS_SETTINGS__DEFINE struct = { THM_UI_ZAXIS_SETTINGS,$ xAxisIndex : 0, $ ; flag to index x axis yAxisIndex : 0, $ ; flag to index y axis colorTable : 0, $ ; droplist value of color tables minRange : 0.0D, $ ; minimum range value touchedminrange : 0b, $ ; indicated minrange field has been explicitly modified by the user maxRange : 0.0D, $ ; maximum range value touchedmaxrange : 0b, $ ; indicated maxrange field has been explicitly modified by the user fixed : 0, $ ; flag to indicate that fixed range is being used touchedfixed : 0b, $ ; indicated fixed field has been explicitly modified by the user tickNum : 0, $ ; the number of ticks on the z-axis touchedticknum : 0b, $ ; indicated ticknum field has been explicitly modified by the user minorTickNum : 0, $ ; the number of minor ticks between major ticks logMinorTickType:0l, $ ; type of logarithmic minor tick 0,1,2, or 3 touchedminorticknum : 0b, $ ; indicated minorticknum field has been explicitly modified by the user annotationStyle: 0, $ ; droplist value for annotation style annotateTextObject:Obj_new(), $ ;text object for style of zaxis annotations annotationOrientation: 0, $ ; flag indicating horizontal or vertical annotation orientation annotateExponent:0 , $ ; Flag indicates whether to force annotations into an exponential format. 0: default behavior, 1: Always exponential, 2: Never exponential labelTextObject: Obj_new(), $ ; a text object indicating the text/color/font/format/size of the label - this is now treated as the title for the z axis subtitleTextObject: Obj_new(), $ ; a text object indicating the text/color/font/format/size of the subtitle labelOrientation: 0, $ ; flag indicating horizontal or vertical label orientation labelMargin: 0, $ ; the margin between the label and the axis in points lazylabels: 0, $ ; flag indicating if underscores will be converted to carriage returns scaling : 0, $ ; 0=Linear, 1=Log10, 2 = Natural Log touchedscaling : 0b, $ ; indicated scaling field has been explicitly modified by the user placement : 0, $ ; droplist value of placement location touchedplacement: 0b, $ ; Indicates whether placement field was explicitly modified by the user margin : 0, $ ; margin of spacing between plot and zaxis in pts showFrequencies: 0, $ ; flag to show frequencies frequencyMin : 0, $ ; minimum value for showing frequencies frequencyMax : 0, $ ; maximum value for showing frequencies autoticks : 0, $ ; direct the draw object to make decisions about tick positioning automatically, and mutate axis object settings touchedautoticks : 0b, $ ; indicated autoticks field has been explicitly modified by the user origsettings: ptr_New(), $ ;pointer to original settings in case of reset INHERITS THM_UI_READWRITE, $ ; generalized read/write methods inherits thm_ui_getset $ ; generalized setProperty/getProperty/getAll/setAll methods } END