|  | @@ -464,27 +464,37 @@ void laui_ColumnItem(laUiList *uil, laPropPack *Base, laPropPack *UNUSED_This, l
 | 
	
		
			
				|  |  |  void laui_DefaultMenuButtonsFileEntries(laUiList *uil, laPropPack *pp, laPropPack *actinst, laColumn *extracol, int context){
 | 
	
		
			
				|  |  |      laColumn* c=laFirstColumn(uil);
 | 
	
		
			
				|  |  |              
 | 
	
		
			
				|  |  | -    laShowLabel(uil, c, "Function Test", 0, 0);
 | 
	
		
			
				|  |  | +    laShowLabel(uil, c, "Function Test", 0, 0)->Flags|=LA_TEXT_MONO|LA_UI_FLAGS_DISABLED;
 | 
	
		
			
				|  |  |      laShowItem(uil, c, 0, "LA_pure_yes_no");
 | 
	
		
			
				|  |  |      laShowItem(uil, c, 0, "LA_file_dialog");
 | 
	
		
			
				|  |  |      laShowItem(uil, c, 0, "LA_udf_read");
 | 
	
		
			
				|  |  |      laShowItem(uil, c, 0, "LA_managed_save");
 | 
	
		
			
				|  |  |      laShowItem(uil, c, 0, "LA_manage_udf");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    laShowLabel(uil, c, "Other Entries", 0, 0);
 | 
	
		
			
				|  |  | -    laShowItemFull(uil, c, 0, "LA_panel_activator", 0, "panel_id=LAUI_about;text=About;", 0, 0);
 | 
	
		
			
				|  |  | +    laShowLabel(uil, c, "Other Entries", 0, 0)->Flags|=LA_TEXT_MONO|LA_UI_FLAGS_DISABLED;
 | 
	
		
			
				|  |  |      laShowItem(uil, c, 0, "LA_terminate_program");
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  | +void laui_DefaultMenuButtonsEditEntries(laUiList *uil, laPropPack *pp, laPropPack *actinst, laColumn *extracol, int context){
 | 
	
		
			
				|  |  | +    laColumn* c=laFirstColumn(uil);
 | 
	
		
			
				|  |  | +    laShowLabel(uil, c, "History", 0, 0)->Flags|=LA_TEXT_MONO|LA_UI_FLAGS_DISABLED;
 | 
	
		
			
				|  |  | +    laShowItem(uil, c, 0, "LA_undo")->Flags|=LA_UI_FLAGS_NO_CONFIRM;
 | 
	
		
			
				|  |  | +    laShowItem(uil, c, 0, "LA_redo")->Flags|=LA_UI_FLAGS_NO_CONFIRM;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  void laui_DefaultMenuButtonsOptionEntries(laUiList *uil, laPropPack *pp, laPropPack *actinst, laColumn *extracol, int context){
 | 
	
		
			
				|  |  |      laColumn* c=laFirstColumn(uil);
 | 
	
		
			
				|  |  | -    laShowLabel(uil, c, "Settings", 0, 0);
 | 
	
		
			
				|  |  | +    laShowLabel(uil, c, "Settings", 0, 0)->Flags|=LA_TEXT_MONO|LA_UI_FLAGS_DISABLED;
 | 
	
		
			
				|  |  |      laShowItemFull(uil, c, 0, "LA_panel_activator", 0, "panel_id=LAUI_user_preferences;", 0, 0);
 | 
	
		
			
				|  |  | +    laShowLabel(uil, c, "Information", 0, 0)->Flags|=LA_TEXT_MONO|LA_UI_FLAGS_DISABLED;
 | 
	
		
			
				|  |  | +    laShowItemFull(uil, c, 0, "LA_panel_activator", 0, "panel_id=LAUI_about;text=About;", 0, 0);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  void laui_DefaultMenuButtons(laUiList *uil, laPropPack *pp, laPropPack *actinst, laColumn *extracol, int context){
 | 
	
		
			
				|  |  |      laUiList *muil; laColumn *mc,*c = laFirstColumn(uil);
 | 
	
		
			
				|  |  |      muil = laMakeMenuPage(uil, c, "File");{
 | 
	
		
			
				|  |  |          mc = laFirstColumn(muil); laui_DefaultMenuButtonsFileEntries(muil,pp,actinst,extracol,0);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +    muil = laMakeMenuPage(uil, c, "Edit");{
 | 
	
		
			
				|  |  | +        mc = laFirstColumn(muil); laui_DefaultMenuButtonsEditEntries(muil,pp,actinst,extracol,0);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |      muil = laMakeMenuPage(uil, c, "Options"); {
 | 
	
		
			
				|  |  |          mc = laFirstColumn(muil); laui_DefaultMenuButtonsOptionEntries(muil,pp,actinst,extracol,0);
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -947,7 +957,7 @@ void laui_FileBrowserFileList(laUiList *uil, laPropPack *THIS_UNUSED, laPropPack
 | 
	
		
			
				|  |  |      laShowItem(u, c, Operator, "disk_list");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      b = laMakeGroup(uil, cr, "File List", 0);b->State=LA_UI_ACTIVE; u=b->Page;
 | 
	
		
			
				|  |  | -    u->HeightCoeff = -3;
 | 
	
		
			
				|  |  | +    u->HeightCoeff = -1;
 | 
	
		
			
				|  |  |      c = laFirstColumn(u);
 | 
	
		
			
				|  |  |      laShowColumnAdjuster(u, c);
 | 
	
		
			
				|  |  |      laSplitColumn(u, c, 0.1);
 | 
	
	
		
			
				|  | @@ -1031,10 +1041,9 @@ void laui_ManagedPropInstance(laUiList *uil, laPropPack *Base, laPropPack *Opera
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      laPropContainer* pc=la_EnsureSubTarget(Base->LastPs->p, Base->EndInstance);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      if(pc->UDFPropagate){
 | 
	
		
			
				|  |  |          char buf[128]; sprintf(buf,"Assign all \"%s\" into:",pc->Name);
 | 
	
		
			
				|  |  | -        laShowLabel(uil,crl,buf,0,0)->Flags|=LA_TEXT_ALIGN_RIGHT;
 | 
	
		
			
				|  |  | +        laShowLabel(uil,crl,buf,0,0)->Flags|=LA_TEXT_ALIGN_RIGHT|LA_UI_FLAGS_DISABLED;
 | 
	
		
			
				|  |  |          laShowItem(uil,crr,Base,"__single_udf_propagate");
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      
 | 
	
	
		
			
				|  | @@ -1068,7 +1077,7 @@ void laui_ManagedPropInstance(laUiList *uil, laPropPack *Base, laPropPack *Opera
 | 
	
		
			
				|  |  |          if(p->PropertyType!=LA_PROP_SUB || p->UDFIsRefer) continue;
 | 
	
		
			
				|  |  |          la_EnsureSubTarget(p,0); 
 | 
	
		
			
				|  |  |          if(p->SubProp &&p->SubProp->Hyper!=2 &&(!p->UDFIsSingle)) continue;
 | 
	
		
			
				|  |  | -        if(p->UDFNoCreate) continue;
 | 
	
		
			
				|  |  | +        if(p->UDFNoCreate || p->UDFHideInSave) continue;
 | 
	
		
			
				|  |  |          if(p==pc->SaverDummy){
 | 
	
		
			
				|  |  |              laShowItem(uil,cl,Base,"__single_saver_dummy.__modified");
 | 
	
		
			
				|  |  |              laShowItem(uil,crl,Base,"identifier")->Flags|=LA_UI_FLAGS_PLAIN;
 | 
	
	
		
			
				|  | @@ -1196,6 +1205,11 @@ void laui_UserPreference(laUiList *uil, laPropPack *Base, laPropPack *OperatorIn
 | 
	
		
			
				|  |  |      laShowItem(uil,cr,0,"LA_save_user_preferences");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      bracket = laMakeTab(uil, c, 0);{
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        for(laExtraPreferencePage* epp=MAIN.ExtraPreferencePages.pFirst;epp;epp=epp->Item.pNext){
 | 
	
		
			
				|  |  | +            muil = laAddTabPage(bracket, epp->Name); epp->Func(muil,0,0,0,0);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          muil = laAddTabPage(bracket, "Display");{
 | 
	
		
			
				|  |  |              //muil->HeightCoeff = -1;
 | 
	
		
			
				|  |  |              mc = laFirstColumn(muil);
 | 
	
	
		
			
				|  | @@ -1203,6 +1217,8 @@ void laui_UserPreference(laUiList *uil, laPropPack *Base, laPropPack *OperatorIn
 | 
	
		
			
				|  |  |              mcl = laLeftColumn(mc, 0);
 | 
	
		
			
				|  |  |              mcr = laRightColumn(mc, 0);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +            if(MAIN.PreferencePageDisplay){ MAIN.PreferencePageDisplay(muil,0,0,0,0); }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              laShowLabel(muil, mc, "Interface:", 0, 0);
 | 
	
		
			
				|  |  |              laShowLabel(muil, mcl, "Row Height:", 0, 0);
 | 
	
		
			
				|  |  |              laShowItem(muil, mcr, 0, "la.user_preferences.interface_size");
 | 
	
	
		
			
				|  | @@ -1247,6 +1263,8 @@ void laui_UserPreference(laUiList *uil, laPropPack *Base, laPropPack *OperatorIn
 | 
	
		
			
				|  |  |              mcl = laLeftColumn(mc, 0);
 | 
	
		
			
				|  |  |              mcr = laRightColumn(mc, 0);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +            if(MAIN.PreferencePageInput){ MAIN.PreferencePageInput(muil,0,0,0,0); }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              laShowLabel(muil, mc, "User Interactions:", 0, 0);
 | 
	
		
			
				|  |  |              laShowItem(muil, mc, 0, "la.user_preferences.scroll_speed");
 | 
	
		
			
				|  |  |              laShowItem(muil, mcl, 0, "la.user_preferences.animation_speed");
 | 
	
	
		
			
				|  | @@ -1255,6 +1273,21 @@ void laui_UserPreference(laUiList *uil, laPropPack *Base, laPropPack *OperatorIn
 | 
	
		
			
				|  |  |              laShowItem(muil, mc, 0, "la.user_preferences.zoom_speed_2d");
 | 
	
		
			
				|  |  |              laShowItem(muil, mcl, 0, "la.user_preferences.tooltip_close_distance");
 | 
	
		
			
				|  |  |              laShowItem(muil, mcr, 0, "la.user_preferences.idle_time");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            laShowSeparator(muil,mc);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            laShowLabel(muil, mc, "Input device handling:", 0, 0);
 | 
	
		
			
				|  |  | +            laShowLabel(muil, mcl, "Input Mapping:", 0, 0)->Flags|=LA_TEXT_ALIGN_RIGHT;
 | 
	
		
			
				|  |  | +            laShowItemFull(muil, mcr, 0, "LA_panel_activator",0,"panel_id=LAUI_input_mapper;text=Configure",0,0);
 | 
	
		
			
				|  |  | +            laShowLabel(muil, mcl, "Pads/Joysticks:", 0, 0)->Flags|=LA_TEXT_ALIGN_RIGHT;
 | 
	
		
			
				|  |  | +            laShowItemFull(muil, mcr, 0, "LA_panel_activator",0,"panel_id=LAUI_controllers;text=Configure",0,0);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            laShowSeparator(muil,mc);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            laShowLabel(muil, mc, "Wacom Devices:", 0, 0);
 | 
	
		
			
				|  |  | +            laShowItem(muil, mcl, 0, "la.user_preferences.wacom_device_stylus");
 | 
	
		
			
				|  |  | +            laShowItem(muil, mcl, 0, "la.user_preferences.wacom_device_eraser");
 | 
	
		
			
				|  |  | +            laShowItemFull(muil, mcr, 0, "LA_refresh_controllers",0,"text=Refresh",0,0);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          muil = laAddTabPage(bracket, "Resource");{
 | 
	
	
		
			
				|  | @@ -1264,6 +1297,9 @@ void laui_UserPreference(laUiList *uil, laPropPack *Base, laPropPack *OperatorIn
 | 
	
		
			
				|  |  |              laSplitColumn(muil, mc, 0.5);
 | 
	
		
			
				|  |  |              mcl = laLeftColumn(mc, 0);
 | 
	
		
			
				|  |  |              mcr = laRightColumn(mc, 0);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            if(MAIN.PreferencePageResource){ MAIN.PreferencePageResource(muil,0,0,0,0); }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              laShowLabel(muil, mcl, "UDF Manager Default View:", 0, 0);
 | 
	
		
			
				|  |  |              laShowItem(muil, mcr, 0, "la.user_preferences.manager_default_view")->Flags|=LA_UI_FLAGS_EXPAND;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1279,6 +1315,9 @@ void laui_UserPreference(laUiList *uil, laPropPack *Base, laPropPack *OperatorIn
 | 
	
		
			
				|  |  |          muil = laAddTabPage(bracket, "Theme");{
 | 
	
		
			
				|  |  |              //muil->HeightCoeff = -1;
 | 
	
		
			
				|  |  |              mc = laFirstColumn(muil);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            if(MAIN.PreferencePageTheme){ MAIN.PreferencePageTheme(muil,0,0,0,0); }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              laShowLabel(muil, mc, "Active Theme", 0, 0);
 | 
	
		
			
				|  |  |              laShowItemFull(muil, mc, 0, "la.themes", LA_WIDGET_COLLECTION_SELECTOR, 0,laui_ThemeListItem,0);
 | 
	
		
			
				|  |  |              laShowItemFull(muil, mc, 0, "la.themes", LA_WIDGET_COLLECTION_SINGLE, 0 ,0,0);
 | 
	
	
		
			
				|  | @@ -1298,14 +1337,22 @@ void laui_About(laUiList *uil, laPropPack *Base, laPropPack *OperatorInst, laCol
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      c = laFirstColumn(uil);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    laShowLabel(uil, c, "LaGUI", 0, 0);
 | 
	
		
			
				|  |  | -    laShowLabel(uil, c, "A graphical user interface application toolkit", 0, 0)->Flags|=LA_TEXT_LINE_WRAP;
 | 
	
		
			
				|  |  | -    laShowLabel(uil, c, "(C)Yiming Wu", 0, 0);
 | 
	
		
			
				|  |  | +    if(MAIN.AboutContent){
 | 
	
		
			
				|  |  | +        MAIN.AboutContent(uil,Base,OperatorInst,ExtraColumns,0);
 | 
	
		
			
				|  |  | +    }else{
 | 
	
		
			
				|  |  | +        laShowLabel(uil, c, "LaGUI", 0, 0);
 | 
	
		
			
				|  |  | +        laShowLabel(uil, c, "A graphical user interface application toolkit", 0, 0)->Flags|=LA_TEXT_LINE_WRAP;
 | 
	
		
			
				|  |  | +        laShowLabel(uil, c, "(C)Yiming Wu", 0, 0);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      t = laMakeTab(uil, c, 0);{
 | 
	
		
			
				|  |  |          first = u = laAddTabPage(t, "Version");
 | 
	
		
			
				|  |  |          tc = laFirstColumn(u);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        if(MAIN.AboutVersion){
 | 
	
		
			
				|  |  | +            MAIN.AboutVersion(u,Base,OperatorInst,ExtraColumns,0);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          g = laMakeGroup(u, tc, "LaGUI information", 0);
 | 
	
		
			
				|  |  |          gu = g->Page;{
 | 
	
		
			
				|  |  |              gc = laFirstColumn(gu);
 | 
	
	
		
			
				|  | @@ -1313,20 +1360,20 @@ void laui_About(laUiList *uil, laPropPack *Base, laPropPack *OperatorInst, laCol
 | 
	
		
			
				|  |  |              laShowLabel(gu, gc, buf, 0, 0)->Flags|=LA_TEXT_MONO;
 | 
	
		
			
				|  |  |              sprintf(buf, "Program built on:[UTC+8] %s %s", __DATE__, __TIME__);
 | 
	
		
			
				|  |  |              laShowLabel(gu, gc, buf, 0, 0)->Flags|=LA_TEXT_MONO;
 | 
	
		
			
				|  |  | -            sprintf(buf, "UDF Capability %s %d.%d.%d",LA_UDF_IDENTIFIER, LA_UDF_CAPABILITY_MAIN, LA_UDF_CAPABILITY_SUB, LA_UDF_CAPABILITY_MINOR);
 | 
	
		
			
				|  |  | +            sprintf(buf, "UDF Identifier: %s",LA_UDF_IDENTIFIER);
 | 
	
		
			
				|  |  |              laShowLabel(gu, gc, buf, 0, 0)->Flags|=LA_TEXT_MONO;
 | 
	
		
			
				|  |  |              laShowLabel(gu, gc, "UDF Extensions:", 0, 0)->Flags|=LA_TEXT_MONO;
 | 
	
		
			
				|  |  | -            laShowLabel(gu, gc, "🗸 LA_UDF_BASICS", 0, 0)->Flags|=LA_TEXT_MONO;
 | 
	
		
			
				|  |  | +            laShowLabel(gu, gc, "🗸LA_UDF_BASICS", 0, 0)->Flags|=LA_TEXT_MONO;
 | 
	
		
			
				|  |  |              for(int i=0;i<64;i++){
 | 
	
		
			
				|  |  |                  if(!LA_UDF_EXTENSION_STRINGS[i][0]) break; int gray=!((1<<i)&LA_UDF_EXTENSION_BITS);
 | 
	
		
			
				|  |  | -                sprintf(buf,"%s %s",gray?" ":"🗸",LA_UDF_EXTENSION_STRINGS[i]);
 | 
	
		
			
				|  |  | +                sprintf(buf,"%s%s",gray?"  ":"🗸",LA_UDF_EXTENSION_STRINGS[i]);
 | 
	
		
			
				|  |  |                  laUiItem* ext=laShowLabel(gu, gc, buf, 0, 0); ext->Flags|=LA_TEXT_MONO;
 | 
	
		
			
				|  |  |                  if(gray){ ext->Flags|=LA_UI_FLAGS_DISABLED; }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          
 | 
	
		
			
				|  |  | -        g = laMakeGroup(u, tc, "Graphics", 0);
 | 
	
		
			
				|  |  | +        g = laMakeGroup(u, tc, "Device Graphics", 0);
 | 
	
		
			
				|  |  |          gu = g->Page;{
 | 
	
		
			
				|  |  |              gc = laFirstColumn(gu);
 | 
	
		
			
				|  |  |              sprintf(buf, "OpenGL Version: %s", T->GLVersionStr);   laShowLabel(gu, gc, buf, 0, 0)->Flags|=LA_TEXT_MONO;
 | 
	
	
		
			
				|  | @@ -1335,64 +1382,22 @@ void laui_About(laUiList *uil, laPropPack *Base, laPropPack *OperatorInst, laCol
 | 
	
		
			
				|  |  |              sprintf(buf, "GLSL Version: %s", T->GLSLVersionStr);   laShowLabel(gu, gc, buf, 0, 0)->Flags|=LA_TEXT_MONO;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        u = laAddTabPage(t, "Props");{
 | 
	
		
			
				|  |  | -            c = laFirstColumn(u);
 | 
	
		
			
				|  |  | -            laSplitColumn(u, c, 0.2);
 | 
	
		
			
				|  |  | -            gcl = laLeftColumn(c, 1);
 | 
	
		
			
				|  |  | -            gcr = laRightColumn(c, 0);
 | 
	
		
			
				|  |  | -            for (pc = MAIN.PropContainers.pFirst; pc; pc = pc->Item.pNext){
 | 
	
		
			
				|  |  | -                buf[0] = L' ';buf[1]= L'\0';
 | 
	
		
			
				|  |  | -                if(pc->IconID){
 | 
	
		
			
				|  |  | -                    sprintf(buf, "%lc", pc->IconID);
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                laShowLabelDynamic(u, gcl, buf, 0, LA_WIDGET_STRING_PLAIN);
 | 
	
		
			
				|  |  | -                laShowLabelDynamic(u, gcr, pc->Identifier, 0, LA_WIDGET_STRING_PLAIN);
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | +        u = laAddTabPage(t, "Authors");
 | 
	
		
			
				|  |  | +        tc= laFirstColumn(u);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        u = laAddTabPage(t, "Functions");{
 | 
	
		
			
				|  |  | -            c = laFirstColumn(u);
 | 
	
		
			
				|  |  | -            laSplitColumn(u, c, 0.2);
 | 
	
		
			
				|  |  | -            gcl = laLeftColumn(c, 1);
 | 
	
		
			
				|  |  | -            gcr = laRightColumn(c, 0);
 | 
	
		
			
				|  |  | -            for (h = 0; h < 256; h++){
 | 
	
		
			
				|  |  | -                for (at = MAIN.OperatorTypeHash.Entries[h].pFirst; at; at = at->Item.pNext){
 | 
	
		
			
				|  |  | -                    buf[0] = L' ';buf[1]= L'\0';
 | 
	
		
			
				|  |  | -                    if(at->IconID){
 | 
	
		
			
				|  |  | -                        sprintf(buf, "%lc", at->IconID);
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                    laShowLabelDynamic(u, gcl, buf, 0, LA_WIDGET_STRING_PLAIN);
 | 
	
		
			
				|  |  | -                    laShowLabelDynamic(u, gcr, at->Identifier, 0, LA_WIDGET_STRING_PLAIN);
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | +        if(MAIN.AboutAuthor){
 | 
	
		
			
				|  |  | +            MAIN.AboutAuthor(u,Base,OperatorInst,ExtraColumns,0);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        u = laAddTabPage(t, "Author");
 | 
	
		
			
				|  |  | -        tc = laFirstColumn(u);
 | 
	
		
			
				|  |  | -        laSplitColumn(u, tc, 0.8);
 | 
	
		
			
				|  |  | -        tcl = laLeftColumn(tc, 3);
 | 
	
		
			
				|  |  | -        tcr = laRightColumn(tc, 00);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        strSafeSet(&laShowSymbol(u, tc, 0, 0)->ExtraInstructions, "mode=invert;preserve=5;");
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        laShowItemFull(u, tcl, 0, "LA_open_internet_link", 0, "link=http://www.wellobserve.com;", 0, 0);
 | 
	
		
			
				|  |  | -        laShowLabel(u, tcr, "Yiming's Website", 0, 0);
 | 
	
		
			
				|  |  | -        laShowSeparator(u, tc);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        laShowLabel(u, tcr, "QQ 1094469528", 0, 0);
 | 
	
		
			
				|  |  | -        laShowSeparator(u, tc);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        laShowItemFull(u, tcl, 0, "LA_open_internet_link", 0, "link=http://weibo.com/1919404360;", 0, 0);
 | 
	
		
			
				|  |  | -        laShowLabel(u, tcr, "Weibo", 0, 0);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        laShowItemFull(u, tcl, 0, "LA_open_internet_link", 0, "link=https://www.artstation.com/artist/nicksbest;", 0, 0);
 | 
	
		
			
				|  |  | -        laShowLabel(u, tcr, "Artstation", 0, 0);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        laShowItemFull(u, tcl, 0, "LA_open_internet_link", 0, "link=mailto:1094469528@qq.com;icon=🖅", 0, 0);
 | 
	
		
			
				|  |  | -        laShowLabel(u, tcr, "QQ Mail", 0, 0);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        laShowLabel(u, tcr, "Outlook Mail", 0, 0);
 | 
	
		
			
				|  |  | -        laShowItemFull(u, tcl, 0, "LA_open_internet_link", 0, "link=mailto:xp8110@outlook.com;icon=🖅", 0, 0);
 | 
	
		
			
				|  |  | +        g = laMakeGroup(u, tc, "LaGUI", 0);
 | 
	
		
			
				|  |  | +        gu = g->Page;{
 | 
	
		
			
				|  |  | +            gc = laFirstColumn(gu);
 | 
	
		
			
				|  |  | +            laShowLabel(gu,gc,"LaGUI application framework is made by Wu Yiming.",0,0)->Flags|=LA_TEXT_LINE_WRAP;
 | 
	
		
			
				|  |  | +            laUiItem* b=laBeginRow(gu,gc,1,0);
 | 
	
		
			
				|  |  | +            laShowItemFull(gu, gc, 0, "LA_open_internet_link", 0, "link=http://www.ChengduLittleA.com/lagui;text=Details", 0, 0);
 | 
	
		
			
				|  |  | +            laShowItemFull(gu, gc, 0, "LA_open_internet_link", 0, "link=http://www.ChengduLittleA.com;text=Yiming's Blog", 0, 0);
 | 
	
		
			
				|  |  | +            laEndRow(gu,b);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          t->Page = first;
 | 
	
		
			
				|  |  |      }
 |