;+ ;NAME: ; thm_ui_panel_settings__define ; ;PURPOSE: ; Panel Settings object - holds the settings for panel traces, layout and grid ; ;CALLING SEQUENCE: ; panelTrace = Obj_New("THM_UI_PANEL_SETTINGS") ; ;INPUT: ; none ; ;OUTPUT: ; panel setting object reference ; ;ATTRIBUTES: ; panelNames list of panel names ; titleobj titleobj panel ; titleMargin the margin between the plot and the title in pts ; overlay set this flag to overlay title ; row current row ; col current column ; rSpan number of rows to span ; cSpan number of columns to span ; bottom flag indicating value was set by user ; bvalue value of bottom position ; bunit unit of position value 0=pt, 1=in, 2=cm, 3=mm ; left flag indicating value was set by user ; lValue value of left position ; lUnit unit of position value 0=pt, 1=in, 2=cm, 3=mm ; width flag indicating value was set by user ; wValue value of width position ; wUnit unit of position value 0=pt, 1=in, 2=cm, 3=mm ; height flag indicating value was set by user ; hValue value of height position ; hUnit unit of position value 0=pt, 1=in, 2=cm, 3=mm ; relVertSize relative size (percentage) ; backgroundColor background color ; framecolor frame color ; framethick framethickness ; ;METHODS: ; SetProperty procedure to set keywords ; GetProperty procedure to get keywords ; GetAll returns the entire structure ; GetUnitNames returns a string array of possible unit values ; GetUnitName returns a string containing the name of the unit ; ;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_panel_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_panel_settings__define.pro $ ;----------------------------------------------------------------------------------- FUNCTION THM_UI_PANEL_SETTINGS::Copy out = Obj_New("THM_UI_PANEL_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 ; copy title object newTitle=Obj_New("THM_UI_TEXT") IF Obj_Valid(self.titleObj) THEN newTitle=self.titleObj->Copy() ELSE $ newTitle=Obj_New() out->SetProperty, TitleObj=newTitle RETURN, out END ;-------------------------------------------------------------------------------- ;handles special cases for setProperty, the rest is handled by parent class: thm_ui_getset pro thm_ui_panel_settings::setProperty,$ bunit=bunit,$ lunit=lunit,$ wunit=wunit,$ hunit=hunit,$ _extra=ex if n_elements(bunit) gt 0 then begin self.bvalue = self->convertunit(self.bvalue,self.bunit,bunit) endif if n_elements(lunit) gt 0 then begin self.lvalue = self->convertunit(self.lvalue,self.lunit,lunit) endif if n_elements(wunit) gt 0 then begin self.wvalue = self->convertunit(self.wvalue,self.wunit,wunit) endif if n_elements(hunit) gt 0 then begin self.hvalue = self->convertunit(self.hvalue,self.hunit,hunit) endif ;Do all general purpose setPropery with parent class self->thm_ui_getset::setProperty,bunit=bunit,lunit=lunit,wunit=wunit,hunit=hunit,_extra=ex end FUNCTION THM_UI_PANEL_SETTINGS::GetUnitNames RETURN, ['pt', 'in', 'cm', 'mm'] END ;-------------------------------------------------------------------------------- FUNCTION THM_UI_PANEL_SETTINGS::GetUnitName, index names = self->GetUnitNames() RETURN, names[index] END ;-------------------------------------------------------------------------------- function THM_UI_PANEL_SETTINGS::convertunit,value,oldunit,newunit in2cm = 2.54D cm2mm = 10D mm2pt = 360D/127D ;turn value into points case oldunit of 0: pts=value 1: pts=value*(in2cm*cm2mm*mm2pt) 2: pts=value*(cm2mm*mm2pt) 3: pts=value*(mm2pt) end ;turn points into new value case newunit of 0: new=pts 1: new=pts/(in2cm*cm2mm*mm2pt) 2: new=pts/(cm2mm*mm2pt) 3: new=pts/(mm2pt) end ;turn points into new value return,new END ;-------------------------------------------------------------------------------- PRO THM_UI_PANEL_SETTINGS::Save obj = self->copy() if ptr_valid(self.origsettings) then begin ptr_free,self.origsettings endif self.origsettings = ptr_new(obj->getall()) RETURN END ;-------------------------------------------------------------------------------- PRO THM_UI_PANEL_SETTINGS::Reset if ptr_valid(self.origsettings) then begin self->SetAll,*self.origsettings endif RETURN END ;-------------------------------------------------------------------------------- ;handles special case of getProperty, the rest is handled by parent class pro thm_ui_panel_settings::getProperty,backgroundrgb=backgroundrgb,_ref_extra=ex IF Arg_Present(backgroundrgb) THEN backgroundrgb = GetColor(self.backgroundColor) ;call getproperty on parent class to handle all general purpose cases self->thm_ui_getset::getProperty,_extra=ex end FUNCTION THM_UI_PANEL_SETTINGS::Init, $ TitleObj=titleObj, $ ; title obj panel titleMargin=titleMargin, $ ; the margin between the plot and the title in pts Row=row, $ ; current row Col=col, $ ; current column RSpan=rspan, $ ; number of rows to span CSpan=cspan, $ ; number of columns to span Bottom=bottom, $ ; flag indicating value was set by user BValue=bvalue, $ ; value of bottom position BUnit=bunit, $ ; unit of position value 0=pt, 1=in, 2=cm, 3=mm Left=left, $ ; flag indicating value was set by user LValue=lvalue, $ ; value of left position LUnit=lunit, $ ; unit of position value 0=pt, 1=in, 2=cm, 3=mm Width=width, $ ; flag indicating value was set by user WValue=wvalue, $ ; value of width position WUnit=wunit, $ ; unit of position value 0=pt, 1=in, 2=cm, 3=mm Height=height, $ ; flag indicating value was set by user HValue=hvalue, $ ; value of height position HUnit=hunit, $ ; unit of position value 0=pt, 1=in, 2=cm, 3=mm RelVertSize=relvertsize, $ ; relative vertical size (percentage) BackgroundColor=backgroundcolor, $ ; background color framecolor=framecolor, $ ; color of panel frame framethick=framethick, $ ; value indicating the thickness of the frame nosave=nosave ; don't save on start Catch, theError IF theError NE 0 THEN BEGIN Catch, /Cancel ok = Error_Message(Traceback=1) RETURN, 0 ENDIF ; Check that all parameters have values IF N_Elements(titleObj) EQ 0 THEN titleObj = obj_new('thm_ui_text', size=10) IF n_elements(titleMargin) eq 0 then titleMargin = 5. IF N_Elements(row) EQ 0 THEN row = 1 IF N_Elements(col) EQ 0 THEN col = 1 IF N_Elements(rspan) EQ 0 THEN rspan = 1 IF N_Elements(cspan) EQ 0 THEN cspan = 1 ;IF N_Elements(bvalue) EQ 0 THEN bvalue = 15 IF n_elements(bvalue) eq 0 then bvalue = -1. IF N_Elements(bunit) EQ 0 THEN bunit = 0 ;IF N_Elements(lvalue) EQ 0 THEN lvalue = 49 if n_elements(lvalue) eq 0 then lvalue = -1. IF N_Elements(lunit) EQ 0 THEN lunit = 0 ;IF N_Elements(wvalue) EQ 0 THEN wvalue = 756 if n_elements(wvalue) eq 0 then wvalue = -1. IF N_Elements(wunit) EQ 0 THEN wunit = 0 ;IF N_Elements(hvalue) EQ 0 THEN hvalue = 150 if n_elements(hvalue) eq 0 then hvalue = -1. IF N_Elements(hunit) EQ 0 THEN hunit = 0 IF N_Elements(relvertsize) EQ 0 THEN relvertsize = 100 IF N_Elements(backgroundcolor) EQ 0 THEN backgroundcolor = [255,255,255] if n_elements(framecolor) eq 0 then framecolor = [0,0,0] if n_elements(framethick) eq 0 then framethick = 1.0 ; Set all parameters self.titleObj = titleObj self.titleMargin = titleMargin self.row = row self.col = col self.rSpan = rspan self.cSpan = cspan self.bottom = Keyword_Set(bottom) self.bValue = bvalue self.bUnit = bunit self.left = Keyword_Set(left) self.lValue = lvalue self.lUnit = lunit self.width = Keyword_Set(width) self.wValue = wvalue self.wUnit = wunit self.height = Keyword_Set(height) self.hValue = hvalue self.hUnit = hunit self.relVertSize = relvertsize self.backgroundColor = backgroundcolor self.framecolor = framecolor self.framethick = framethick if ~keyword_set(nosave) then begin self->Save endif RETURN, 1 END ;-------------------------------------------------------------------------------- PRO THM_UI_PANEL_SETTINGS__DEFINE struct = { THM_UI_PANEL_SETTINGS, $ ; layout settings titleObj: obj_new(), $ ; text object for panel title titleMargin:0, $ ; the margin between the plot and the title in pts row: 0, $ ; current row col: 0, $ ; current column rSpan: 0, $ ; number of rows to span cSpan: 0, $ ; number of columns to span bottom: 0., $ ; flag indicating whether explicit positioning is used bValue: 0D, $ ; numerical value of the explicit position bUnit: 0, $ ; 0=pt, 1=in, 2=cm, 3=mm, units of numerical value left: 0., $ ; lValue: 0D, $ ; lUnit: 0, $ ; width: 0., $ ; wValue: 0D, $ ; wUnit: 0, $ ; height: 0., $ ; hValue: 0D, $ ; hUnit: 0, $ ; relVertSize: 0, $ ; relative size (percentage) backgroundColor:[0,0,0], $ ; background color framecolor:[0,0,0], $ ; color of panel frame framethick:0, $ ; thickness of panel frame origsettings: ptr_new(), $ ; original settings for reset INHERITS THM_UI_READWRITE, $ ; generalized read/write methods inherits thm_ui_getset $ ; generalized setProperty/getProperty/getAll/setAll methods } END ;--------------------------------------------------------------------------------