|
@@ -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);
|