|  | @@ -299,7 +299,10 @@ void laget_PanelTitle(laPanel *p, char *result){
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  void laset_PanelTitle(laPanel *p, char *content){
 | 
	
		
			
				|  |  |      strSafeSet(&p->Title, content);
 | 
	
		
			
				|  |  | -    p->TitleWidth = tnsStringGetWidth(p->Title->Ptr, 0,0);
 | 
	
		
			
				|  |  | +    p->TitleWidth = tnsStringGetWidth(transLate(p->Title->Ptr), 0,0);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +void laread_PanelTitle(laPanel *p, char *content){
 | 
	
		
			
				|  |  | +    strSafeSet(&p->Title, content);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  void laset_PanelSnapDistance(laPanel *p, int index, int n){
 | 
	
		
			
				|  |  |      int a;
 | 
	
	
		
			
				|  | @@ -600,10 +603,15 @@ void laget_PanelTemplateCategory(void* rack_unused, laUiTemplate* uit, char* cop
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void lapost_Window(laWindow *w){
 | 
	
		
			
				|  |  | -    la_CreateSystemWindow(w);
 | 
	
		
			
				|  |  | -    MAIN.CurrentWindow = w;
 | 
	
		
			
				|  |  |      laStartWindow(w);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  | +int la_CreateSystemWindow(laWindow *window, int synctovbank);
 | 
	
		
			
				|  |  | +void lapostim_Window(laWindow *w){
 | 
	
		
			
				|  |  | +    w->IsFullScreen=0;
 | 
	
		
			
				|  |  | +    la_CreateSystemWindow(w,MAIN.Windows.pFirst==MAIN.Windows.pLast);
 | 
	
		
			
				|  |  | +    la_AssignWindowPP(w);
 | 
	
		
			
				|  |  | +    MAIN.CurrentWindow = w;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  void lapost_PropPack(laPropPack *pp){
 | 
	
		
			
				|  |  |      char *path = pp->Go;
 | 
	
		
			
				|  |  |      if (pp->LastPs /* || !path*/) return;
 | 
	
	
		
			
				|  | @@ -623,6 +631,14 @@ void lapostim_UiItem(laUiItem *ui){
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      la_AssignPropExtras(ui);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  | +void* laget_SavePanel(laWindow* w, laPropIterator* pi){
 | 
	
		
			
				|  |  | +    for(laPanel* p=w->Panels.pFirst;p;p=p->Item.pNext){ if(!p->Mode || p->IsMenuPanel || p->PanelTemplate) return p; }
 | 
	
		
			
				|  |  | +    return 0;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +void* lagetnext_SavePanel(laPanel* p, laPropIterator* pi){
 | 
	
		
			
				|  |  | +    for(p=p->Item.pNext;p;p=p->Item.pNext){ if(!p->Mode || p->IsMenuPanel || p->PanelTemplate) return p; }
 | 
	
		
			
				|  |  | +    return 0;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  void lapost_Panel(laPanel *p){
 | 
	
		
			
				|  |  |      p->PP.EndInstance = p;
 | 
	
		
			
				|  |  |      p->PP.LastPs = &p->FakePS;
 | 
	
	
		
			
				|  | @@ -631,6 +647,17 @@ void lapost_Panel(laPanel *p){
 | 
	
		
			
				|  |  |      la_EnsurePanelExtras(p);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      p->Refresh = LA_TAG_RECALC;
 | 
	
		
			
				|  |  | +    p->FrameDistinguish = 100;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    laUiTemplate* uit=p->PanelTemplate;
 | 
	
		
			
				|  |  | +    if(uit&&uit->PropFunc){ uit->PropFunc(p); }
 | 
	
		
			
				|  |  | +    if(uit){
 | 
	
		
			
				|  |  | +        uit->Define(&p->UI, &p->PP, &p->PropLinkPP, 0, 0);
 | 
	
		
			
				|  |  | +        if(p->Mode) laui_DefaultPanelTitleBar(&p->TitleBar, &p->PP, &p->PropLinkPP, uit->Header);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    if(p->IsMenuPanel){ laui_DefaultMenuBarActual(&p->TitleBar, &p->PP, &p->PropLinkPP, 0, 0); }
 | 
	
		
			
				|  |  | +    if(p->Title) p->TitleWidth = tnsStringGetWidth(transLate(p->Title->Ptr), 0, 0);
 | 
	
		
			
				|  |  | +    XSync(MAIN.dpy,1);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  void lapost_UserPreferences(void* unused){
 | 
	
		
			
				|  |  |      MAIN.ScaledUiRowHeight=MAIN.UiRowHeight;
 | 
	
	
		
			
				|  | @@ -877,8 +904,7 @@ void la_RegisterInternalProps(){
 | 
	
		
			
				|  |  |              p = laDefineRoot();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              laAddPropertyContainer("any_pointer", "Any Pointer", "A pointer that is not exposed to access", 0,0,sizeof(void*), 0,0,LA_PROP_OTHER_ALLOC);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            laAddSubGroup(p, "windows", "Windows", "All Registered Windows Of This Application", "ui_window",0,0,0,-1, laget_FirstWindow, laget_ActiveWindow, laget_ListNext, 0,0,0,0,0);
 | 
	
		
			
				|  |  | +            
 | 
	
		
			
				|  |  |              laAddSubGroup(p, "tns","TNS", "TNS Kernel Main Structure", "tns_main",0,0,0,-1, tnsget_TnsMain, 0,0,0,0,0,0,LA_UDF_SINGLE | LA_UDF_LOCAL);
 | 
	
		
			
				|  |  |              laAddSubGroup(p, "la","LA", "LA Main Structure", "la_main",0,0,laui_SubPropInfoDefault, -1, laget_Main, 0,0,0,0,0,0,LA_UDF_SINGLE | LA_UDF_LOCAL);
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -938,15 +964,15 @@ void la_RegisterInternalProps(){
 | 
	
		
			
				|  |  |          p = laAddPropertyContainer("la_main", "LA Root", "LA Root Structure", L'🖴', 0,sizeof(LA), 0,0,2|LA_PROP_OTHER_ALLOC);{
 | 
	
		
			
				|  |  |              laAddSubGroup(p, "logs", "Logs", "Application logs", "la_log",0,0,laui_LogItem, -1, 0,0,0,0,0,0,offsetof(LA, Logs), LA_UDF_IGNORE|LA_READ_ONLY);
 | 
	
		
			
				|  |  |              laAddSubGroup(p, "differences", "Differences", "Difference stack (for undo/redo)", "la_difference",0,0,0,offsetof(LA, HeadDifference), 0,0,0,0,0,0,offsetof(LA, Differences), LA_UDF_IGNORE|LA_READ_ONLY);
 | 
	
		
			
				|  |  | +            sp=laAddSubGroup(p, "panel_templates", "Panel Templates", "Panel templates used to create new panel", "panel_template",0,0,0,-1, 0,0,0,0,0,0,offsetof(LA, PanelTemplates), 0);
 | 
	
		
			
				|  |  |              
 | 
	
		
			
				|  |  | -            _LA_PROP_WINDOW=laAddSubGroup(p, "windows", "Windows", "All Windows Under LA Control", "ui_window",0,0,0,offsetof(LA, CurrentWindow), laget_FirstWindow, 0,laget_ListNext, 0,0,0,offsetof(LA, Windows), 0);
 | 
	
		
			
				|  |  | +            _LA_PROP_WINDOW=laAddSubGroup(p, "windows", "Windows", "All windows inside this application", "ui_window",0,0,0,offsetof(LA, CurrentWindow), laget_FirstWindow, 0,laget_ListNext, 0,0,0,offsetof(LA, Windows), 0);
 | 
	
		
			
				|  |  |              la_UDFAppendSharedTypePointer("_LA_PROP_WINDOW", _LA_PROP_WINDOW);
 | 
	
		
			
				|  |  |              laAddSubGroup(p, "data", "Data", "Data Root Control", "property_container",0,0,0,offsetof(LA, DataRoot.Root), 0,0,0,0,0,0,0,0);
 | 
	
		
			
				|  |  |              laAddSubGroup(p, "prop_containers", "Sub Type", "Sub Type Property Container", "property_container",0,0,0,-1, laget_FirstContainer, 0,laget_ListNext, 0,0,0,0,0);
 | 
	
		
			
				|  |  |              laAddSubGroup(p, "managed_props", "Managed Props", "Managed properties for saving", "managed_prop",0,0,0,-1, 0,0,0,0,0,0,offsetof(LA, ManagedSaveProps), LA_UDF_IGNORE|LA_READ_ONLY);
 | 
	
		
			
				|  |  |              laAddSubGroup(p, "managed_udfs", "Managed UDFs", "Managed UDFs for saving", "managed_udf", 0,0,laui_ManagedUDFOps, -1, 0,0,0,0,0,0,offsetof(LA, ManagedUDFs), LA_UDF_IGNORE|LA_READ_ONLY);
 | 
	
		
			
				|  |  |              laAddSubGroup(p, "user_preferences", "User Preference", "Kernel Settings For LA Main Structure", "la_user_preference",0,0,0,-1, laget_Main, 0,0,0,0,0,0,LA_UDF_LOCAL);
 | 
	
		
			
				|  |  | -            sp=laAddSubGroup(p, "panel_templates", "Panel Templates", "Panel templates used to create new panel", "panel_template",0,0,0,-1, 0,0,0,0,0,0,offsetof(LA, PanelTemplates), 0);
 | 
	
		
			
				|  |  |              laSubGroupExtraFunctions(sp,0,0,0,laget_PanelTemplateCategory);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              laAddSubGroup(p, "themes", "Themes", "Themes Loded In The Program", "theme",0,0,laui_Theme, -1, 0,laget_ActiveTheme, 0,laset_ActiveTheme, 0,0,offsetof(LA,Themes), 0);
 | 
	
	
		
			
				|  | @@ -1104,6 +1130,10 @@ void la_RegisterInternalProps(){
 | 
	
		
			
				|  |  |                  laAddEnumItemAs(ep, "DATA_BLOCKS", "Data Blocks", "All data blocks", 0,0);
 | 
	
		
			
				|  |  |                  laAddEnumItemAs(ep, "FILES", "Files", "All Files", 1, 0);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +            ep = laAddEnumProperty(p, "save_preferences_on_exit", "Save On Exit", "Save user preferences before exiting the program", 0,0,0,0,0,offsetof(LA, SavePreferenceOnExit), 0,0,0,0,0,0,0,0,0,0);{
 | 
	
		
			
				|  |  | +                laAddEnumItemAs(ep, "NONE", "Don't save", "Not saving user preferences on exit", 0,0);
 | 
	
		
			
				|  |  | +                laAddEnumItemAs(ep, "SAVE", "Save", "Saving user preferences on exit", 1, 0);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |          
 | 
	
		
			
				|  |  |              laAddIntProperty(p, "wacom_device_stylus", "Stylus Device", "Wacom stylus device ID", LA_WIDGET_INT_PLAIN, 0,0,0,0,0,0,0,offsetof(LA, WacomDeviceStylus), 0,0,0,0,0,0,0,0,0,0,LA_READ_ONLY|LA_UDF_IGNORE);
 | 
	
		
			
				|  |  |              laAddIntProperty(p, "wacom_device_eraser", "Eraser Device", "Wacom eraser device ID", LA_WIDGET_INT_PLAIN, 0,0,0,0,0,0,0,offsetof(LA, WacomDeviceEraser), 0,0,0,0,0,0,0,0,0,0,LA_READ_ONLY|LA_UDF_IGNORE);
 | 
	
	
		
			
				|  | @@ -1121,18 +1151,18 @@ void la_RegisterInternalProps(){
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // UI WINDOW ========================================================================================
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        p = laAddPropertyContainer("ui_window", "Window Node", "Property Container For A System Window", 0,laui_SubPropInfoDefault, sizeof(laWindow), lapost_Window, 0,2);{
 | 
	
		
			
				|  |  | +        p = laAddPropertyContainer("ui_window", "Window Node", "Property Container For A System Window", 0,0, sizeof(laWindow), lapost_Window, lapostim_Window,1);{
 | 
	
		
			
				|  |  |              laAddStringProperty(p, "title", "Title", "The Title/Name Of A Panel", 0,0,0,0,1, offsetof(laWindow, Title), 0,0,0,0,LA_AS_IDENTIFIER);
 | 
	
		
			
				|  |  |              laAddSubGroup(p, "layouts", "Layouts", "Layout List Of The Whole Window", "ui_layout",0,0,0,offsetof(laWindow, CurrentLayout), laget_WindowFirstLayout, 0,laget_ListNext, 0,0,laset_WindowActiveLayout, offsetof(laWindow, Layouts), 0);
 | 
	
		
			
				|  |  | -            _LA_PROP_PANEL = laAddSubGroup(p, "panels", "Panels", "Panel list of this window", "ui_panel",0,0,0,-1, 0,0,0,0,0,0,offsetof(laWindow, Panels), 0);
 | 
	
		
			
				|  |  | +            _LA_PROP_PANEL = laAddSubGroup(p, "panels", "Panels", "Panel list of this window", "ui_panel",0,0,0,-1,laget_SavePanel,0,lagetnext_SavePanel,0,0,0,offsetof(laWindow, Panels), 0);
 | 
	
		
			
				|  |  |              la_UDFAppendSharedTypePointer("_LA_PROP_PANEL", _LA_PROP_PANEL);
 | 
	
		
			
				|  |  | -            laAddSubGroup(p, "maximized_block", "Maximized Block", "Maximized block in this window", "ui_block",0,0,0,offsetof(laWindow, MaximizedBlock), 0,0,0,0,0,0,0,LA_UDF_REFER);
 | 
	
		
			
				|  |  | -            laAddSubGroup(p, "maximized_ui", "Maximized Ui", "Maximized ui in this window", "ui_item",0,0,0,offsetof(laWindow, MaximizedUi), 0,0,0,0,0,0,0,LA_UDF_REFER);
 | 
	
		
			
				|  |  | +            laAddSubGroup(p, "maximized_block", "Maximized Block", "Maximized block in this window", "ui_block",0,0,0,offsetof(laWindow, MaximizedBlock), 0,0,0,0,0,0,0,LA_UDF_REFER|LA_UDF_IGNORE);
 | 
	
		
			
				|  |  | +            laAddSubGroup(p, "maximized_ui", "Maximized Ui", "Maximized ui in this window", "ui_item",0,0,0,offsetof(laWindow, MaximizedUi), 0,0,0,0,0,0,0,LA_UDF_REFER|LA_UDF_IGNORE);
 | 
	
		
			
				|  |  |              laAddSubGroup(p, "panels_hidden", "Hidden Panels", "Hidden panels of this window", "ui_panel",0,0,0,-1, laget_FirstHiddenPanel, 0,laget_NextHiddenPanel, laset_WindowHiddenPanel, 0,0,0,LA_UDF_IGNORE);
 | 
	
		
			
				|  |  |              laAddIntProperty(p, "position", "Position", "The Position Of A Window", 0,"X,Y", "px", 0,0,1, 0,0,offsetof(laWindow, X), 0,0,2, 0,0,0,0,0,0,0,0);
 | 
	
		
			
				|  |  |              laAddIntProperty(p, "size", "Size", "The Size Of A Window", 0,"W,H", "px", 0,0,0,0,0,offsetof(laWindow, W), 0,0,2, 0,0,0,0,0,0,0,LA_READ_ONLY);
 | 
	
		
			
				|  |  |              laAddIntProperty(p, "client_size", "Client Area Size", "Display Canvans Size Of A Window", 0,"W,H", "px", 0,0,1, 0,0,offsetof(laWindow, CW), 0,0,2, 0,0,0,0,0,0,0,LA_READ_ONLY);
 | 
	
		
			
				|  |  | -            laAddStringProperty(p, "operator_hints", "Operator Hints", "Operator hints if there's any", LA_WIDGET_STRING_PLAIN, 0,0,0,1, offsetof(laWindow, OperatorHints), 0,0,0,0,LA_READ_ONLY);
 | 
	
		
			
				|  |  | +            laAddStringProperty(p, "operator_hints", "Operator Hints", "Operator hints if there's any", LA_WIDGET_STRING_PLAIN, 0,0,0,1, offsetof(laWindow, OperatorHints), 0,0,0,0,LA_READ_ONLY|LA_UDF_IGNORE);
 | 
	
		
			
				|  |  |              ep = laAddEnumProperty(p, "output_color_space", "Output Color Space", "Output color space of this window, set this to the monitor's color space to get accurate result", 0,0,0,0,0,offsetof(laWindow, OutputColorSpace), 0,laset_WindowColorSpace, 0,0,0,0,0,0,0,0);{
 | 
	
		
			
				|  |  |                  laAddEnumItemAs(ep, "SRGB", "sRGB", "Standard sRGB diplay", TNS_COLOR_SPACE_SRGB, 0);
 | 
	
		
			
				|  |  |                  laAddEnumItemAs(ep, "CLAY", "Clay", "Clay color space (AdobeRGB 1998 compatible)", TNS_COLOR_SPACE_CLAY, 0);
 | 
	
	
		
			
				|  | @@ -1146,7 +1176,7 @@ void la_RegisterInternalProps(){
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // UI LAYOUT ========================================================================================
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        p = laAddPropertyContainer("ui_block", "Layout Node", "Property Container For Single Layout", 0,laui_LayoutListItem, sizeof(laBlock), 0,0,0);{
 | 
	
		
			
				|  |  | +        p = laAddPropertyContainer("ui_block", "Layout Node", "Property Container For Single Layout", 0,laui_LayoutListItem, sizeof(laBlock), 0,0,1);{
 | 
	
		
			
				|  |  |              laAddIntProperty(p, "location", "Location", "Block Location", 0,"X,Y", "px", 0,0,1, 0,0,offsetof(laBlock, X), 0,0,2, 0,0,0,0,0,0,0,LA_READ_ONLY);
 | 
	
		
			
				|  |  |              laAddIntProperty(p, "size", "Size", "Block Size", 0,"W,H", "px", 0,0,1, 0,0,offsetof(laBlock, W), 0,0,2, 0,0,0,0,0,0,0,LA_READ_ONLY);
 | 
	
		
			
				|  |  |              laAddFloatProperty(p, "split_ratio", "Split Ratio", "Split Ratio On Two Subs", 0,0,0,1, 0,0.05, 0.5, 0,offsetof(laBlock, SplitRatio), 0,0,0,0,0,0,0,0,0,0,0);
 | 
	
	
		
			
				|  | @@ -1155,6 +1185,7 @@ void la_RegisterInternalProps(){
 | 
	
		
			
				|  |  |              laAddSubGroup(p, "current_panel", "Current Panel", "Current Selected Tab Panel", "ui_panel",0,0,0,offsetof(laBlock, CurrentPanel), 0,0,0,0,0,0,0,LA_UDF_REFER);
 | 
	
		
			
				|  |  |              laAddSubGroup(p, "sub1", "Sub 1", "Sub Block 1", "ui_block",0,0,0,offsetof(laBlock, B1), 0,0,0,0,0,0,0,LA_UDF_SINGLE);
 | 
	
		
			
				|  |  |              laAddSubGroup(p, "sub2", "Sub 2", "Sub Block 2", "ui_block",0,0,0,offsetof(laBlock, B2), 0,0,0,0,0,0,0,LA_UDF_SINGLE);
 | 
	
		
			
				|  |  | +            laAddSubGroup(p, "parent", "Parent", "Parent block reference", "ui_block",0,0,0,offsetof(laBlock, parent), 0,0,0,0,0,0,0,LA_UDF_REFER);
 | 
	
		
			
				|  |  |              laAddOperatorProperty(p, "fold", "Fold", "Fold the title bar", "LA_block_fold_title", 0,0);
 | 
	
		
			
				|  |  |              laAddOperatorProperty(p, "maximize", "Maximize", "Maximize the block", "LA_block_maximize", 0,0);
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -1168,7 +1199,7 @@ void la_RegisterInternalProps(){
 | 
	
		
			
				|  |  |          // UI PANEL =========================================================================================
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          p = laAddPropertyContainer("ui_panel", "Panel Node", "Property Container For General Panels", 0,laui_PanelListItem, sizeof(laPanel), lapost_Panel, 0,1);{
 | 
	
		
			
				|  |  | -            laAddStringProperty(p, "title", "Title", "The Title/Name Of A Panel", 0,0,0,0,1, offsetof(laPanel, Title), 0,0,laset_PanelTitle, 0,LA_AS_IDENTIFIER|LA_TRANSLATE);
 | 
	
		
			
				|  |  | +            laAddStringProperty(p, "title", "Title", "The Title/Name Of A Panel", 0,0,0,0,1, offsetof(laPanel, Title), 0,0,laset_PanelTitle, laread_PanelTitle,LA_AS_IDENTIFIER|LA_TRANSLATE);
 | 
	
		
			
				|  |  |              laAddIntProperty(p, "position", "Position", "The Position Of A Panel", 0,"X,Y", "px", 0,0,1, 0,0,offsetof(laPanel, X), 0,0,2, 0,0,0,0,0,0,0,LA_READ_ONLY);
 | 
	
		
			
				|  |  |              laAddIntProperty(p, "size", "Size", "The Size Of A Panel", 0,"Width,Height", "px", 0,0,1, 0,0,offsetof(laPanel, W), 0,0,2, 0,0,0,0,0,0,0,LA_READ_ONLY);
 | 
	
		
			
				|  |  |              laAddIntProperty(p, "real_xywh", "Real Placemnt", "Placeent Data In Structure", 0,"X,Y,W,H", "px", 0,0,1, 0,0,offsetof(laPanel, TX), 0,0,4, 0,0,0,0,0,0,0,LA_READ_ONLY);
 | 
	
	
		
			
				|  | @@ -1188,11 +1219,13 @@ void la_RegisterInternalProps(){
 | 
	
		
			
				|  |  |              laAddOperatorProperty(p, "dock", "Dock", "Dock this panel", "LA_dock_panel", L'🗖', 0);
 | 
	
		
			
				|  |  |              laAddOperatorProperty(p, "close", "Close", "Close this panel", "LA_block_close_panel", L'❌', 0);
 | 
	
		
			
				|  |  |              //laAddSubGroup(p, "Detached Props", "Detached Props", "detached_prop",0,0,0,0,0,0,0,0,0,0,0,0,offsetof(laPanel, PropLinkContainer->Props), 0);
 | 
	
		
			
				|  |  | -            laAddSubGroup(p, "uil","Ui List", "Panel Main Ui List", "ui_list",0,0,0,offsetof(laPanel, UI), 0,0,0,0,0,0,0,0);
 | 
	
		
			
				|  |  | -            laAddSubGroup(p, "title_uil","Title Ui List", "Panel Title Ui List", "ui_list",0,0,0, offsetof(laPanel, TitleBar), 0,0,0,0,0,0,0,0);
 | 
	
		
			
				|  |  | -            laAddSubGroup(p, "pp","Prop Pack", "Panel Base With Own Instance", "property_package",0,0,0,offsetof(laPanel, PP), 0,0,0,0,0,0,0,LA_UDF_REFER);
 | 
	
		
			
				|  |  | -            laAddSubGroup(p, "fake_pp","Fake Prop Pack", "Fake Prop Pack", "property_package",0,0,0,offsetof(laPanel, PropLinkPP), 0,0,0,0,0,0,0,LA_UDF_REFER);
 | 
	
		
			
				|  |  | -            laAddSubGroup(p, "parent_block","Parent Block", "The Block That Directly Links This Panel In", "ui_block",0,0,0,offsetof(laPanel, Block), 0,0,0,0,0,0,0,LA_UDF_REFER);
 | 
	
		
			
				|  |  | +            laAddSubGroup(p, "uil","Ui List", "Panel Main Ui List", "ui_list",0,0,0,offsetof(laPanel, UI), 0,0,0,0,0,0,0,LA_UDF_IGNORE);
 | 
	
		
			
				|  |  | +            laAddSubGroup(p, "title_uil","Title Ui List", "Panel Title Ui List", "ui_list",0,0,0, offsetof(laPanel, TitleBar), 0,0,0,0,0,0,0,LA_UDF_IGNORE);
 | 
	
		
			
				|  |  | +            laAddSubGroup(p, "pp","Prop Pack", "Panel Base With Own Instance", "property_package",0,0,0,offsetof(laPanel, PP), 0,0,0,0,0,0,0,LA_UDF_REFER|LA_UDF_IGNORE);
 | 
	
		
			
				|  |  | +            laAddSubGroup(p, "fake_pp","Fake Prop Pack", "Fake Prop Pack", "property_package",0,0,0,offsetof(laPanel, PropLinkPP), 0,0,0,0,0,0,0,LA_UDF_REFER|LA_UDF_IGNORE);
 | 
	
		
			
				|  |  | +            laAddSubGroup(p, "parent_block","Parent Block", "The Block That Directly Links This Panel In", "ui_block",0,0,0,offsetof(laPanel, Block), 0,0,0,0,0,0,0,LA_UDF_REFER|LA_UDF_IGNORE);
 | 
	
		
			
				|  |  | +            laAddSubGroup(p, "template","Template", "Panel template", "panel_template",0,0,0,offsetof(laPanel, PanelTemplate), 0,0,0,0,0,0,0,LA_UDF_REFER);
 | 
	
		
			
				|  |  | +            laAddSubGroup(p, "block", "Block", "Block reference of this panel", "ui_block",0,0,0,offsetof(laPanel, Block), 0,0,0,0,0,0,0,LA_UDF_REFER);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // UI ITEM ==========================================================================================
 |