*/}}
Procházet zdrojové kódy

Mostly done airdoil table for clark y at 1M

Yiming Wu před 2 roky
rodič
revize
7389945f53

+ 4 - 2
source/lagui/la_interface.h

@@ -726,6 +726,7 @@ STRUCTURE(laMultiStringExtra){
 NEED_STRUCTURE(laCanvasExtra);
 
 typedef void(*laCanvasDrawFunc)(laBoxedTheme* bt, void* DataInstance, laCanvasExtra* Extra);
+typedef int (*laModalFunc)(laOperator *, laEvent *);
 
 STRUCTURE(laCanvasTemplate){
     laListItem Item;
@@ -737,6 +738,7 @@ STRUCTURE(laCanvasTemplate){
     laPropContainer *TargetContainer;
     laPropContainer *ExtraProps;
     laSubProp       *FakeProp;
+    laModalFunc      ExtraModal;
     //float           LimitYScale;
     laUiInitFunc     Init;
     laUiDestroyFunc  Destroy;
@@ -1672,7 +1674,7 @@ laUiItem *laShowSymbol(laUiList *uil, laColumn *c, int SymbolID, int Height);
 laUiItem *laBeginRow(laUiList *uil, laColumn *c, int Expand, int Even);
 laUiItem *laEndRow(laUiList *uil, laUiItem* Begin);
 laUiItem *laMakeGroup(laUiList *uil, laColumn *c, const char *Name, laWidget* Widget);
-laUiItem *laMakeFoldableGroup(laUiList *uil, laColumn *c, const char *Name, laWidget* Widget, int DefaultFolded);
+laUiItem *laMakeFoldableGroup(laUiList *uil, laColumn *c, const char *Name, laWidget* Widget, int DefaultFolded, int ButtonFlags);
 laUiItem *laMakeEmptyGroup(laUiList *uil, laColumn *c, const char *Name, laWidget* Widget);
 void laEndFoldableGroup(laUiList *sub, laUiItem *group);
 laUiItem *laMakeTab(laUiList *uil, laColumn *c, laWidget* Widget);
@@ -1703,7 +1705,7 @@ laUiTemplate *laFindUiTemplate(char *Identifier);
 void la_DestroyUiTemplate(laUiTemplate* uit);
 void la_DestroyCanvasTemplate(laCanvasTemplate* uit);
 laUiTemplate *laRegisterUiTemplate(char *Identifier, char* Title, laUiDefineFunc func,laPanelDetachedPropFunc PropFunc, laUiDefineFunc header);
-laCanvasTemplate *laRegisterCanvasTemplate(char *Identifier, char *ForContainer, laCanvasDrawFunc Func, laUiDrawFunc SecondDraw, laUiInitFunc CustomInit, laUiDestroyFunc CustomDestroy);
+laCanvasTemplate *laRegisterCanvasTemplate(char *Identifier, char *ForContainer, laModalFunc ExtraModal, laCanvasDrawFunc Func, laUiDrawFunc SecondDraw, laUiInitFunc CustomInit, laUiDestroyFunc CustomDestroy);
 
 void laGet2DViewRange(laCanvasExtra *e, int *L, int *R, int *U, int *B);
 void laGet2DViewRanged(laCanvasExtra *e, real *L, real *R, real *U, real *B);

+ 5 - 5
source/lagui/la_kernel.c

@@ -3179,16 +3179,16 @@ laUiItem *laMakeGroup(laUiList *uil, laColumn *c, const char *Name, laWidget* Wi
     
     return ui;
 }
-laUiItem *laMakeFoldableGroup(laUiList *uil, laColumn *c, const char *Name, laWidget* Widget, int DefaultFolded){
+laUiItem *laMakeFoldableGroup(laUiList *uil, laColumn *c, const char *Name, laWidget* Widget, int DefaultFolded, int ButtonFlags){
     laUiItem *SubUi = laMakeGroup(uil, c, Name, Widget?Widget:0);
     laUiList *sub = SubUi->Page;
     laColumn *s = laFirstColumn(sub);
     SubUi->State = LA_UI_ACTIVE;
 
     laUiItem *b1 = laOnConditionToggle(sub, s, 0, 0, 0, 0, 0);
-    strSafePrint(&b1->ExtraInstructions, "text=%s", Name);
+    strSafePrint(&b1->ExtraInstructions, "text=%s", Name);
     if(!DefaultFolded) b1->State=LA_UI_ACTIVE;
-    b1->Flags|=LA_UI_FLAGS_NO_DECAL;
+    if(ButtonFlags)b1->Flags|=ButtonFlags; else b1->Flags|=LA_UI_FLAGS_NO_DECAL;
     laShowSeparator(sub, s);
     return SubUi;
 }
@@ -3774,10 +3774,10 @@ laUiTemplate *laRegisterUiTemplate(char *Identifier, char* Title, laUiDefineFunc
     la_UDFAppendSharedTypePointer(Identifier, uit);
     return uit;
 }
-laCanvasTemplate *laRegisterCanvasTemplate(char *Identifier, char *ForContainer, laCanvasDrawFunc Func, laUiDrawFunc SecondDraw, laUiInitFunc CustomInit, laUiDestroyFunc CustomDestroy){
+laCanvasTemplate *laRegisterCanvasTemplate(char *Identifier, char *ForContainer, laModalFunc ExtraModal, laCanvasDrawFunc Func, laUiDrawFunc SecondDraw, laUiInitFunc CustomInit, laUiDestroyFunc CustomDestroy){
     laCanvasTemplate *t = memAcquire(sizeof(laCanvasTemplate));
     strSafeSet(&t->Identifier, Identifier);
-    t->Draw = Func; t->SecondDraw = SecondDraw; t->TargetContainerID = ForContainer;
+    t->Draw = Func; t->SecondDraw = SecondDraw; t->TargetContainerID = ForContainer; t->ExtraModal=ExtraModal;
     t->Init = CustomInit; t->Destroy = CustomDestroy;
     lstAppendItem(&MAIN.View2DTemplates, t);
     la_UDFAppendSharedTypePointer(Identifier, t);

+ 2 - 2
source/lagui/la_tns_kernel.c

@@ -1965,7 +1965,7 @@ void tnsUnbindTexture(){
         if(T->TexColor->GLTexType == GL_TEXTURE_2D){tnsActiveTexture(GL_TEXTURE0);}
         else if(T->TexColor->GLTexType == GL_TEXTURE_2D_MULTISAMPLE){tnsActiveTexture(GL_TEXTURE1);}
         else if(T->TexColor->GLTexType == GL_TEXTURE_3D){tnsActiveTexture(GL_TEXTURE0);}
-        glBindTexture(T->TexColor->GLTexType, 0); T->TexColor=0;
+        glBindTexture(T->TexColor->GLTexType, -1); T->TexColor=0;
     }
 }
 void tnsUniformUseTexture(tnsShader* s, int mode, int sample){
@@ -3128,7 +3128,7 @@ void tnsDrawStringAutoM(char *content, uint32_t* contentU, real Color[4], int L,
     case LA_TEXT_ALIGN_CENTER: LL = L+(R-L-tnsStringGetDimension(content, contentU, 0, 0, 0, Flags&LA_TEXT_MONO)) / 2; if(LL<L) LL=L; break;
     default:
     case LA_TEXT_ALIGN_LEFT: LL = L; break;
-    case LA_TEXT_ALIGN_RIGHT: LL = R-(tnsStringGetDimension(content, contentU, 0, 0, 0, Flags&LA_TEXT_MONO)); break;
+    case LA_TEXT_ALIGN_RIGHT: LL = R-(tnsStringGetDimension(content, contentU, 0, 0, 0, Flags&LA_TEXT_MONO)); if(LL<L) LL=L; break;
     }
     tnsDrawStringM(content, contentU, Color, LL, R, T, Flags);
 }

+ 3 - 1
source/lagui/resources/la_widgets.c

@@ -162,7 +162,9 @@ int la_SocketGetHeight(laUiItem *ui){
 }
 
 int la_ValueGetMinWidth(laUiItem *ui){
-    return LA_RH*4;
+    int ExtraW=0;
+    if(ui->Flags&LA_UI_FLAGS_EXPAND){ ExtraW+=tnsStringGetWidth(ui->PP.LastPs->p->Name,0,0);  }
+    return LA_RH*4+ExtraW;
 }
 int la_LabelGetMinWidth(laUiItem *ui){
     laBoxedTheme *bt = *ui->Type->Theme;

+ 9 - 7
source/lagui/resources/la_widgets_viewers.c

@@ -447,7 +447,7 @@ void laDefault3DViewOverlay(laUiItem *ui){
     laShowItem(uil,cl,&ui->ExtraPP,"select_through");
     laEndRow(uil,b);
 
-    g = laMakeFoldableGroup(uil, cll, "Tools", 0, 1);{
+    g = laMakeFoldableGroup(uil, cll, "Tools", 0, 1, 0);{
         gu = g->Page; gc = laFirstColumn(gu);
         laSplitColumn(gu, gc, 0.35); gcl = laLeftColumn(gc, 0); gcr = laRightColumn(gc, 0);
         laShowItem(gu,gc,&ui->ExtraPP,"_this_M_delete");
@@ -468,7 +468,7 @@ void laDefault3DViewOverlay(laUiItem *ui){
         laShowItem(gu,gc,&ui->ExtraPP,"_this_M_recalculate_normals");
     }
 
-    g = laMakeFoldableGroup(uil, cr, "Scene Info", 0, 1);{
+    g = laMakeFoldableGroup(uil, cr, "Scene Info", 0, 1, 0);{
         gu = g->Page;
         gc = laFirstColumn(gu);
         laSplitColumn(gu, gc, 0.35);
@@ -478,7 +478,7 @@ void laDefault3DViewOverlay(laUiItem *ui){
         laShowLabel(gu, gcl, "Rename:", 0, 0);
         laShowItem(gu, gcr, &ui->PP, "name");
     }
-    g = laMakeFoldableGroup(uil, cr, "Object Info", 0, 0);{
+    g = laMakeFoldableGroup(uil, cr, "Object Info", 0, 0, 0);{
         gu = g->Page;
         gc = laFirstColumn(gu);
         laSplitColumn(gu, gc, 0.35);
@@ -490,7 +490,7 @@ void laDefault3DViewOverlay(laUiItem *ui){
         laShowLabel(gu, gcl, "Rotation:", 0, 0);laShowItem(gu, gcr, &ui->PP, "active.rotation")->Flags|=LA_UI_FLAGS_TRANSPOSE;
         laShowItem(gu, gc, &ui->PP, "active.scale");
     }
-    g = laMakeFoldableGroup(uil, cr, "Display", 0, 1);{
+    g = laMakeFoldableGroup(uil, cr, "Display", 0, 1, 0);{
         gu = g->Page;
         gc = laFirstColumn(gu);
         laSplitColumn(gu, gc, 0.35);
@@ -577,7 +577,7 @@ void laDefault2DViewOverlayRight(laUiItem *ui){
     laEndRow(uil,b);
     laShowItem(uil, cl, &ui->PP, "internal_type")->Flags|=LA_UI_FLAGS_PLAIN;
 
-    g = laMakeFoldableGroup(uil, cr, "Display", 0, 1);{
+    g = laMakeFoldableGroup(uil, cr, "Display", 0, 1, 0);{
         gu = g->Page;
         gc = laFirstColumn(gu);
         laSplitColumn(gu, gc, 0.35);
@@ -712,6 +712,8 @@ int OPMOD_Canvas(laOperator *a, laEvent *e){
         laRedrawCurrentPanel();
     }
 
+    if(ui->CanvasTemplate->ExtraModal){ if(ui->CanvasTemplate->ExtraModal(a,e)&LA_BLOCK) return LA_RUNNING; }
+
     if (laKeyMapExecuteEventEx(a, &ui->ExtraPP, &ui->CanvasTemplate->KeyMapper, e)) return LA_RUNNING;
     if (laKeyMapExecuteEventEx(a, &ui->ExtraPP, &ui->Type->KeyMapper, e)) return LA_RUNNING;
 
@@ -920,7 +922,7 @@ void la_RegisterUiTypesViewerWidgets(){
     _LA_UI_CANVAS = la_RegisterUiType("LA_canvas_default", 0, "LA_canvas_operator", &_LA_THEME_2D_VIEW, la_CanvasDraw, la_CanvasGetHeight, la_CanvasUiInit, la_CanvasUiDestroy);
     _LA_UI_CANVAS->Tag = LA_UI_TAG_NEED_REBUILD;
 
-    laCanvasTemplate* ct=laRegisterCanvasTemplate("la_CanvasDrawTexture", "tns_texture", la_CanvasDrawTexture, la_CanvasDrawOverlay, la_CanvasInit, la_CanvasDestroy);
+    laCanvasTemplate* ct=laRegisterCanvasTemplate("la_CanvasDrawTexture", "tns_texture", 0, la_CanvasDrawTexture, la_CanvasDrawOverlay, la_CanvasInit, la_CanvasDestroy);
     pc = laCanvasHasExtraProps(ct,sizeof(laCanvasExtra),2);{
         _LA_PROP_2D_EXTRA = pc;
         laAddIntProperty(pc, "height_coeff", "Ui Height", "Ui Height Coefficiency Entry", 0, 0, "Rows", 100, -100, 1, 0, 0, offsetof(laCanvasExtra, HeightCoeff), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
@@ -969,7 +971,7 @@ void la_RegisterUiTypesViewerWidgets(){
     laAssignNewKey(km, 0, "LA_2d_view_click", LA_KM_SEL_UI_EXTRA, 0, LA_L_MOUSE_DOWN, 0, 0);
 
 
-    ct=laRegisterCanvasTemplate("la_3DView", "tns_object", la_RootObjectDraw, la_RootObjectDrawOverlay, la_3DViewInit, la_3DViewDestroy);
+    ct=laRegisterCanvasTemplate("la_3DView", "tns_object", 0, la_RootObjectDraw, la_RootObjectDrawOverlay, la_3DViewInit, la_3DViewDestroy);
     pc = laCanvasHasExtraProps(ct, sizeof(laCanvasExtra), 2);{
         _LA_PROP_3D_EXTRA = pc;
         laAddIntProperty(pc, "grid_size", "Grid Size", "Floor Grid Size Per Cell", 0, 0, "Unit", 100, 1, 1, 10, 0, offsetof(laCanvasExtra, GridSize), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);