|  | @@ -33,11 +33,17 @@ void laset_TerminalInput(void* unused, char* content){
 | 
	
		
			
				|  |  |      strcpy(MAIN.TerminalInput,content);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +void lareset_Theme(laTheme *th){
 | 
	
		
			
				|  |  | +    laBoxedTheme*bt; while(bt=lstPopItem(&th->BoxedThemes)){ strSafeDestroy(&bt->Name); *bt->BackRef=0; memFree(bt); }
 | 
	
		
			
				|  |  | +    strSafeDestroy(&th->Name);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  void lapostim_Theme(laTheme *th){
 | 
	
		
			
				|  |  |      for(laBoxedTheme* bt=th->BoxedThemes.pFirst;bt;bt=bt->Item.pNext){
 | 
	
		
			
				|  |  |          memAssignRef(bt, &bt->Parent,th);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +    MAIN.CurrentTheme = th;
 | 
	
		
			
				|  |  |      la_RefreshThemeColor(th);
 | 
	
		
			
				|  |  | +    laRedrawAllWindows();
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  laTheme* laget_ThemePreviewTheme(void* unused, laTheme* theme){
 | 
	
		
			
				|  |  |      return theme;
 | 
	
	
		
			
				|  | @@ -55,71 +61,68 @@ void laset_ThemeName(laTheme *t, char *content){
 | 
	
		
			
				|  |  |      char buf[32]; sprintf(buf,"LATHEME_%.22s",content);
 | 
	
		
			
				|  |  |      laset_InstanceUID(t, buf);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  | -void laset_ThemeAuthor(laTheme *t, char *content){ strSafeSet(&t->Author, content); }
 | 
	
		
			
				|  |  |  void laset_ThemeColor(laTheme* t, real* array){
 | 
	
		
			
				|  |  | -    tnsVectorCopy4d(array,t->Color);
 | 
	
		
			
				|  |  | -    la_RefreshThemeColor(t);
 | 
	
		
			
				|  |  | -    laRedrawAllWindows();
 | 
	
		
			
				|  |  | +    tnsVectorCopy4d(array,t->Color); la_RefreshThemeColor(t); laRedrawAllWindows();
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +void laset_ThemeColorB(laTheme* t, real* array){
 | 
	
		
			
				|  |  | +    tnsVectorCopy4d(array,t->ColorB); la_RefreshThemeColor(t); laRedrawAllWindows();
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +void laset_ThemeColorC(laTheme* t, real* array){
 | 
	
		
			
				|  |  | +    tnsVectorCopy4d(array,t->ColorC); la_RefreshThemeColor(t); laRedrawAllWindows();
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  void laset_ThemeAccentColor(laTheme* t, real* array){
 | 
	
		
			
				|  |  | -    tnsVectorCopy4d(array,t->AccentColor);
 | 
	
		
			
				|  |  | -    la_RefreshThemeColor(t);
 | 
	
		
			
				|  |  | -    laRedrawAllWindows();
 | 
	
		
			
				|  |  | +    tnsVectorCopy4d(array,t->AccentColor); la_RefreshThemeColor(t); laRedrawAllWindows();
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  void laset_ThemeWarningColor(laTheme* t, real* array){
 | 
	
		
			
				|  |  | -    tnsVectorCopy4d(array,t->WarningColor);
 | 
	
		
			
				|  |  | -    la_RefreshThemeColor(t);
 | 
	
		
			
				|  |  | -    laRedrawAllWindows();
 | 
	
		
			
				|  |  | +    tnsVectorCopy4d(array,t->WarningColor); la_RefreshThemeColor(t); laRedrawAllWindows();
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  void laset_ThemeInactiveSaturation(laTheme* t, real a){
 | 
	
		
			
				|  |  | -    t->InactiveSaturation=a;
 | 
	
		
			
				|  |  | -    la_RefreshThemeColor(t);
 | 
	
		
			
				|  |  | -    laRedrawAllWindows();
 | 
	
		
			
				|  |  | +    t->InactiveSaturation=a; la_RefreshThemeColor(t); laRedrawAllWindows();
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  void laset_ThemeInactiveMix(laTheme* t, real a){
 | 
	
		
			
				|  |  | -    t->InactiveMix=a;
 | 
	
		
			
				|  |  | -    la_RefreshThemeColor(t);
 | 
	
		
			
				|  |  | -    laRedrawAllWindows();
 | 
	
		
			
				|  |  | +    t->InactiveMix=a; la_RefreshThemeColor(t); laRedrawAllWindows();
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  void laset_ThemeCursorAlpha(laTheme* t, real a){
 | 
	
		
			
				|  |  | -    t->CursorAlpha=a;
 | 
	
		
			
				|  |  | -    la_RefreshThemeColorSelf(t);
 | 
	
		
			
				|  |  | -    laRedrawAllWindows();
 | 
	
		
			
				|  |  | +    t->CursorAlpha=a; la_RefreshThemeColorSelf(t); laRedrawAllWindows();
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  void laset_ThemeSelectionAlpha(laTheme* t, real a){
 | 
	
		
			
				|  |  | -    t->SelectionAlpha=a;
 | 
	
		
			
				|  |  | -    la_RefreshThemeColorSelf(t);
 | 
	
		
			
				|  |  | -    laRedrawAllWindows();
 | 
	
		
			
				|  |  | +    t->SelectionAlpha=a; la_RefreshThemeColorSelf(t); laRedrawAllWindows();
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +void laset_ThemeShadowAlpha(laTheme* t, real a){
 | 
	
		
			
				|  |  | +    t->ShadowAlpha=a; la_RefreshThemeColorSelf(t); laRedrawAllWindows();
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +void laset_ThemeTextShadowAlpha(laTheme* t, real a){
 | 
	
		
			
				|  |  | +    t->TextShadowAlpha=a; la_RefreshThemeColorSelf(t); laRedrawAllWindows();
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  void laset_ThemeNormal(laBoxedTheme* bt, real val){
 | 
	
		
			
				|  |  | -    bt->NormalY=val;
 | 
	
		
			
				|  |  | -    la_RefreshBoxedThemeColor(bt);
 | 
	
		
			
				|  |  | -    laRedrawAllWindows();
 | 
	
		
			
				|  |  | +    bt->NormalY=val; la_RefreshBoxedThemeColor(bt); laRedrawAllWindows();
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  void laset_ThemeActive(laBoxedTheme* bt, real val){
 | 
	
		
			
				|  |  | -    bt->ActiveY=val;
 | 
	
		
			
				|  |  | -    la_RefreshBoxedThemeColor(bt);
 | 
	
		
			
				|  |  | -    laRedrawAllWindows();
 | 
	
		
			
				|  |  | +    bt->ActiveY=val; la_RefreshBoxedThemeColor(bt); laRedrawAllWindows();
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  void laset_ThemeBorder(laBoxedTheme* bt, real val){
 | 
	
		
			
				|  |  | -    bt->BorderY=val;
 | 
	
		
			
				|  |  | -    la_RefreshBoxedThemeColor(bt);
 | 
	
		
			
				|  |  | -    laRedrawAllWindows();
 | 
	
		
			
				|  |  | +    bt->BorderY=val; la_RefreshBoxedThemeColor(bt); laRedrawAllWindows();
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  void laset_ThemeText(laBoxedTheme* bt, real val){
 | 
	
		
			
				|  |  | -    bt->TextY=val;
 | 
	
		
			
				|  |  | -    la_RefreshBoxedThemeColor(bt);
 | 
	
		
			
				|  |  | -    laRedrawAllWindows();
 | 
	
		
			
				|  |  | +    bt->TextY=val; la_RefreshBoxedThemeColor(bt); laRedrawAllWindows();
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  void laset_ThemeTextActive(laBoxedTheme* bt, real val){
 | 
	
		
			
				|  |  | -    bt->TextActiveY=val;
 | 
	
		
			
				|  |  | -    la_RefreshBoxedThemeColor(bt);
 | 
	
		
			
				|  |  | -    laRedrawAllWindows();
 | 
	
		
			
				|  |  | +    bt->TextActiveY=val; la_RefreshBoxedThemeColor(bt); laRedrawAllWindows();
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  void laset_ThemeAlpha(laBoxedTheme* bt, real val){
 | 
	
		
			
				|  |  | -    bt->Alpha=val;
 | 
	
		
			
				|  |  | -    la_RefreshBoxedThemeColor(bt);
 | 
	
		
			
				|  |  | -    laRedrawAllWindows();
 | 
	
		
			
				|  |  | +    bt->Alpha=val; la_RefreshBoxedThemeColor(bt); laRedrawAllWindows();
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +void laset_ThemeBoxStyle(laBoxedTheme* bt, int val){
 | 
	
		
			
				|  |  | +    bt->BoxStyle=val; la_RefreshBoxedThemeColor(bt); laRedrawAllWindows();
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +void laset_ThemeTextShadow(laBoxedTheme* bt, int val){
 | 
	
		
			
				|  |  | +    bt->TextShadow=val; la_RefreshBoxedThemeColor(bt); laRedrawAllWindows();
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +void laset_ThemeColorSelection(laBoxedTheme* bt, int val){
 | 
	
		
			
				|  |  | +    bt->ColorSelection=val; la_RefreshBoxedThemeColor(bt); laRedrawAllWindows();
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +void laset_ThemeNoDecalInvert(laBoxedTheme* bt, int val){
 | 
	
		
			
				|  |  | +    bt->NoDecalInvert=val; la_RefreshBoxedThemeColor(bt); laRedrawAllWindows();
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  void laset_ThemeWireTransparency(laTheme* t, real val){ t->WireTransparency = val; la_RegenerateWireColors(); laRedrawAllWindows(); }
 | 
	
		
			
				|  |  |  void laset_ThemeWireBrightness(laTheme* t, real val){ t->WireBrightness = val; la_RegenerateWireColors(); laRedrawAllWindows(); }
 | 
	
	
		
			
				|  | @@ -1549,7 +1552,7 @@ void la_RegisterInternalProps(){
 | 
	
		
			
				|  |  |              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);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              p = laAddPropertyContainer("boxed_theme", "Boxed Theme", "A single theme item for one or multiple kinds of uiitems", 0,laui_BoxedThemeItem, sizeof(laBoxedTheme), 0,0,1);{
 | 
	
		
			
				|  |  | -                laAddStringProperty(p, "name", "Name", "Boxed theme name", 0,0,0,0,1, offsetof(laBoxedTheme, Name), 0,0,0,0,LA_AS_IDENTIFIER);
 | 
	
		
			
				|  |  | +                laAddStringProperty(p, "name", "Name", "Boxed theme name", 0,0,0,0,1, offsetof(laBoxedTheme, Name), 0,0,0,0,LA_AS_IDENTIFIER|LA_TRANSLATE);
 | 
	
		
			
				|  |  |                  laAddFloatProperty(p, "normal", "Normal", "Background brightness", 0,0,0,1, 0,0.025, 1, 0,offsetof(laBoxedTheme, NormalY), 0,laset_ThemeNormal, 0,0,0,0,0,0,0,0,0);
 | 
	
		
			
				|  |  |                  laAddFloatProperty(p, "active", "Active", "Background brightness in active state", 0,0,0,1, 0,0.025, 1, 0,offsetof(laBoxedTheme, ActiveY), 0,laset_ThemeActive, 0,0,0,0,0,0,0,0,0);
 | 
	
		
			
				|  |  |                  laAddFloatProperty(p, "border", "Border", "Border brightness", 0,0,0,1, 0,0.025, 1, 0,offsetof(laBoxedTheme, BorderY), 0,laset_ThemeBorder, 0,0,0,0,0,0,0,0,0);
 | 
	
	
		
			
				|  | @@ -1558,19 +1561,37 @@ void la_RegisterInternalProps(){
 | 
	
		
			
				|  |  |                  laAddFloatProperty(p, "alpha", "Alpha", "Background alpha", 0,0,0,1, 0,0.025, 1, 0,offsetof(laBoxedTheme, Alpha), 0,laset_ThemeAlpha, 0,0,0,0,0,0,0,0,0);
 | 
	
		
			
				|  |  |                  laAddSubGroup(p, "back_ref", "Back Ref", "Boxed theme internal back-ref", "any_pointer",0,0,0,offsetof(laBoxedTheme, BackRef), 0,0,0,0,0,0,0,LA_UDF_REFER);
 | 
	
		
			
				|  |  |                  laAddSubGroup(p, "parent", "Parent", "Parent Theme", "theme",0,0,0,offsetof(laBoxedTheme, Parent), 0,0,0,0,0,0,0,LA_UDF_REFER);
 | 
	
		
			
				|  |  | +                ep=laAddEnumProperty(p, "box_style","Box Style","Draw box pop up or lowered down",0,0,0,0,0,offsetof(laBoxedTheme, BoxStyle),0,laset_ThemeBoxStyle,0,0,0,0,0,0,0,0);
 | 
	
		
			
				|  |  | +                laAddEnumItemAs(ep,"NORMAL","Normal","Normal box",0,0);
 | 
	
		
			
				|  |  | +                laAddEnumItemAs(ep,"POP","Pop-up","Pop-up box",1,0);
 | 
	
		
			
				|  |  | +                laAddEnumItemAs(ep,"LOWERED","Lowered","Lowered box",-1,0);
 | 
	
		
			
				|  |  | +                ep=laAddEnumProperty(p, "text_shadow","Text Shadow","Whether to show text shadow",0,0,0,0,0,offsetof(laBoxedTheme, TextShadow),0,laset_ThemeTextShadow,0,0,0,0,0,0,0,0);
 | 
	
		
			
				|  |  | +                laAddEnumItemAs(ep,"NONE","None","Text doesn't have any shadow",0,0);
 | 
	
		
			
				|  |  | +                laAddEnumItemAs(ep,"SHADOW","Shadow","Text has shadow",1,0);
 | 
	
		
			
				|  |  | +                ep=laAddEnumProperty(p, "color_selection","Color Selection","Which color to use for this widget",0,0,0,0,0,offsetof(laBoxedTheme, ColorSelection),0,laset_ThemeColorSelection,0,0,0,0,0,0,0,0);
 | 
	
		
			
				|  |  | +                laAddEnumItemAs(ep,"SELA","A","Select Color A",0,0);
 | 
	
		
			
				|  |  | +                laAddEnumItemAs(ep,"SELB","B","Select Color B",1,0);
 | 
	
		
			
				|  |  | +                laAddEnumItemAs(ep,"SELC","C","Select Color C",2,0);
 | 
	
		
			
				|  |  | +                ep=laAddEnumProperty(p, "no_decal_invert","No Decal Invert","Invert text color when widget has no decal",0,0,0,0,0,offsetof(laBoxedTheme, NoDecalInvert),0,laset_ThemeNoDecalInvert,0,0,0,0,0,0,0,0);
 | 
	
		
			
				|  |  | +                laAddEnumItemAs(ep,"NONE","None","Don't invert text brightness when widget has no decal",0,0);
 | 
	
		
			
				|  |  | +                laAddEnumItemAs(ep,"INVERT","Invert","Invert text brightness when widget has no decal",1,0);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            p = laAddPropertyContainer("theme", "Theme Package", "A package with all types of theme for ui items", 0,laui_Theme, sizeof(laTheme), 0,lapostim_Theme,2);{
 | 
	
		
			
				|  |  | +            p = laAddPropertyContainer("theme", "Theme Package", "A package with all types of theme for ui items", 0,laui_Theme, sizeof(laTheme),0,lapostim_Theme,2);{
 | 
	
		
			
				|  |  | +                laPropContainerExtraFunctions(p,0,lareset_Theme,0,0,0);
 | 
	
		
			
				|  |  |                  laAddStringProperty(p, "name", "Name", "Theme name", 0,0,0,0,1, offsetof(laTheme, Name), 0,0,laset_ThemeName,0,LA_AS_IDENTIFIER);
 | 
	
		
			
				|  |  | -                laAddStringProperty(p, "author", "Author", "The author's name", 0,0,0,0,1, offsetof(laTheme, Author), 0,0,0,0,0);
 | 
	
		
			
				|  |  |                  laAddSubGroup(p, "boxed_themes", "Boxed Themes", "The Boxed Theme For Single UiItem Or Panel", "boxed_theme",0,0,0,-1, 0,0,0,0,0,0,offsetof(laTheme, BoxedThemes), 0);
 | 
	
		
			
				|  |  | -                laAddFloatProperty(p, "color", "Color", "Base color of the theme", LA_WIDGET_FLOAT_COLOR, "R,G,B,A", 0,1, 0,0.025, 1, 0,offsetof(laTheme, Color), 0,0,4, 0,0,0,0,laset_ThemeColor, 0,0,0);
 | 
	
		
			
				|  |  | +                laAddFloatProperty(p, "color", "Color A", "Base color of the theme", LA_WIDGET_FLOAT_COLOR, "R,G,B,A", 0,1, 0,0.025, 1, 0,offsetof(laTheme, Color), 0,0,4, 0,0,0,0,laset_ThemeColor, 0,0,0);
 | 
	
		
			
				|  |  | +                laAddFloatProperty(p, "color_b", "Color B", "Alternative (B) base color of the theme", LA_WIDGET_FLOAT_COLOR, "R,G,B,A", 0,1, 0,0.025, 1, 0,offsetof(laTheme, ColorB), 0,0,4, 0,0,0,0,laset_ThemeColorB, 0,0,0);
 | 
	
		
			
				|  |  | +                laAddFloatProperty(p, "color_c", "Color C", "Alternative (C) base color of the theme", LA_WIDGET_FLOAT_COLOR, "R,G,B,A", 0,1, 0,0.025, 1, 0,offsetof(laTheme, ColorC), 0,0,4, 0,0,0,0,laset_ThemeColorC, 0,0,0);
 | 
	
		
			
				|  |  |                  laAddFloatProperty(p, "accent_color", "Accent Color", "Theme accent color for hightlight etc", LA_WIDGET_FLOAT_COLOR, "R,G,B,A", 0,1, 0,0.025, 1, 0,offsetof(laTheme, AccentColor), 0,0,4, 0,0,0,0,laset_ThemeAccentColor, 0,0,0);
 | 
	
		
			
				|  |  |                  laAddFloatProperty(p, "warning_color", "Warning Color", "Theme accent color for warning etc", LA_WIDGET_FLOAT_COLOR, "R,G,B,A", 0,1, 0,0.025, 1, 0,offsetof(laTheme, WarningColor), 0,0,4, 0,0,0,0,laset_ThemeWarningColor, 0,0,0);
 | 
	
		
			
				|  |  | -                laAddFloatProperty(p, "inactive_saturation", "Inactive Saturation", "Reduced saturation on inactive widgets", 0,0,0,1, 0,0.025, 1, 0,offsetof(laTheme, InactiveSaturation), 0,0,1, 0,0,0,0,laset_ThemeInactiveSaturation, 0,0,0);
 | 
	
		
			
				|  |  | -                laAddFloatProperty(p, "inactive_mix", "Inactive Mix", "Reduced alpha on inactive widgets", 0,0,0,1, 0,0.025, 1, 0,offsetof(laTheme, InactiveMix), 0,0,1, 0,0,0,0,laset_ThemeInactiveMix, 0,0,0);
 | 
	
		
			
				|  |  | -                laAddFloatProperty(p, "cursor_alpha", "Cursor Alpha", "Transparency of the cursor", 0,0,0,1, 0,0.025, 1, 0,offsetof(laTheme, CursorAlpha), 0,0,1, 0,0,0,0,laset_ThemeCursorAlpha, 0,0,0);
 | 
	
		
			
				|  |  | -                laAddFloatProperty(p, "selection_alpha", "Selection Alpha", "Transparency of selection backgrounds", 0,0,0,1, 0,0.025, 1, 0,offsetof(laTheme, SelectionAlpha), 0,0,1, 0,0,0,0,laset_ThemeSelectionAlpha, 0,0,0);
 | 
	
		
			
				|  |  | +                laAddFloatProperty(p, "inactive_saturation", "Inactive Saturation", "Reduced saturation on inactive widgets", 0,0,0,1, 0,0.025, 1, 0,offsetof(laTheme, InactiveSaturation), 0,laset_ThemeInactiveSaturation,0,0,0,0,0,0,0,0,0);
 | 
	
		
			
				|  |  | +                laAddFloatProperty(p, "inactive_mix", "Inactive Mix", "Reduced alpha on inactive widgets", 0,0,0,1, 0,0.025, 1, 0,offsetof(laTheme, InactiveMix),0,laset_ThemeInactiveMix,0,0,0,0,0,0,0,0,0);
 | 
	
		
			
				|  |  | +                laAddFloatProperty(p, "cursor_alpha", "Cursor Alpha", "Transparency of the cursor", 0,0,0,1, 0,0.025, 1, 0,offsetof(laTheme, CursorAlpha), 0,laset_ThemeCursorAlpha,0,0,0,0,0,0,0,0,0);
 | 
	
		
			
				|  |  | +                laAddFloatProperty(p, "selection_alpha", "Selection Alpha", "Transparency of selection backgrounds", 0,0,0,1, 0,0.025, 1, 0,offsetof(laTheme, SelectionAlpha),0,laset_ThemeSelectionAlpha,0,0,0,0,0,0,0,0,0);
 | 
	
		
			
				|  |  | +                laAddFloatProperty(p, "shadow_alpha", "Shadow Alpha", "Transparency of the shadow", 0,0,0,1, 0,0.025, 1, 0,offsetof(laTheme, ShadowAlpha), 0,laset_ThemeShadowAlpha,0,0,0,0,0,0,0,0,0);
 | 
	
		
			
				|  |  | +                laAddFloatProperty(p, "text_shadow_alpha", "Text Shadow Alpha", "Transparency of the text shadow", 0,0,0,1, 0,0.025, 1, 0,offsetof(laTheme, TextShadowAlpha), 0,laset_ThemeTextShadowAlpha,0,0,0,0,0,0,0,0,0);
 | 
	
		
			
				|  |  |                  laAddFloatProperty(p, "wire_transparency", "Wire Transparency", "Alpha of the wire color", 0,0,0,1, 0,0.05, 0.7, 0,offsetof(laTheme, WireTransparency), 0,laset_ThemeWireTransparency, 0,0,0,0,0,0,0,0,0);
 | 
	
		
			
				|  |  |                  laAddFloatProperty(p, "wire_saturation", "Wire Saturation", "Saturation of the wires", 0,0,0,1, 0,0.05, 0.8, 0,offsetof(laTheme, WireSaturation), 0,laset_ThemeWireSaturation, 0,0,0,0,0,0,0,0,0);
 | 
	
		
			
				|  |  |                  laAddFloatProperty(p, "wire_brightness", "Wire Brightness", "Brightness of the wires", 0,0,0,1, 0,0.05, 0.8, 0,offsetof(laTheme, WireBrightness), 0,laset_ThemeWireBrightness, 0,0,0,0,0,0,0,0,0);
 | 
	
	
		
			
				|  | @@ -1584,7 +1605,7 @@ void la_RegisterInternalProps(){
 | 
	
		
			
				|  |  |                  sp=laAddSubGroup(p,"preview","Preview","Theme preview","theme",0,0,0,-1,laget_Self,0,0,0,0,0,0,LA_READ_ONLY|LA_UDF_IGNORE|LA_UDF_REFER);
 | 
	
		
			
				|  |  |                  laSubGroupExtraFunctions(sp,0,0,laget_ThemePreviewTheme,0,0);
 | 
	
		
			
				|  |  |                  laAddOperatorProperty(p, "delete", "Delete", "Delete this theme", "LA_delete_theme", 0,0);
 | 
	
		
			
				|  |  | -                laAddOperatorProperty(p, "save_as", "Save As", "Save theme as file", "LA_udf_save_instance", U'🖫',0);
 | 
	
		
			
				|  |  | +                laAddOperatorProperty(p, "save_as", "Save as", "Save theme as file", "LA_udf_save_instance", U'🖫',0);
 | 
	
		
			
				|  |  |                  laAddOperatorProperty(p, "duplicate", "Duplicate", "Duplicate this theme", "LA_new_theme", U'⎘',0)
 | 
	
		
			
				|  |  |                      ->ExtraInstructions="duplicate=true;";
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -1816,8 +1837,6 @@ void la_RegisterInternalProps(){
 | 
	
		
			
				|  |  |              laAddFloatProperty(p, "font_size", "Font Size", "The height of the font related to the row height", 0,0,0,1.0f, 0.1f, 0.02, 0.75, 0,offsetof(LA, FontSize), 0,laset_FontSize, 0,0,0,0,0,0,0,0,0);
 | 
	
		
			
				|  |  |              laAddIntProperty(p, "interface_size", "Interface Size", "The height of one row of ui item", 0,0,0,64, 16, 1, 40,0,offsetof(LA, UiRowHeight), 0,laset_UiRowHeight, 0,0,0,0,0,0,0,0,0);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            laAddFloatProperty(p, "floating_alpha", "Shadow Alpha", "Shadow transparency for floating panels", 0,0,0,1, 0,0.01, 0.7, 0,offsetof(LA, FloatingAlpha), 0,0,0,0,0,0,0,0,0,0,0);
 | 
	
		
			
				|  |  | -            laAddIntProperty(p, "solid_shadow_length", "Solid Shadow Length", "Solid shadow length for floating panels", 0,0,0,40,0,1, 6, 0,offsetof(LA, SolidShadowLength), 0,0,0,0,0,0,0,0,0,0,0);
 | 
	
		
			
				|  |  |              laAddIntProperty(p, "wire_color_slices", "Wire color slices", "How many slices of color to give to node sockets", 0,0,0,32, 1, 1, 16, 0,offsetof(LA, WireColorSlices), 0,laset_WireColorSlices, 0,0,0,0,0,0,0,0,0);
 | 
	
		
			
				|  |  |              laAddFloatProperty(p, "wire_thickness", "Wire thickness", "How thick is a wire", 0,0,0,10,0.1, 0.5, 5, 0,offsetof(LA, WireThickness), 0,laset_WireThickness, 0,0,0,0,0,0,0,0,0);
 | 
	
		
			
				|  |  |              laAddFloatProperty(p, "wire_saggyness", "Wire saggyness", "How saggy is a wire", 0,0,0,1,0,0.01, 0.5, 0,offsetof(LA, WireSaggyness), 0,laset_WireSaggyness, 0,0,0,0,0,0,0,0,0);
 |