*/}}
Преглед изворни кода

Confirm dialog for restoring user preference

ChengduLittleA пре 1 година
родитељ
комит
fa4e05042a
3 измењених фајлова са 32 додато и 30 уклоњено
  1. 14 21
      la_kernel.c
  2. 17 8
      resources/la_operators.c
  3. 1 1
      resources/la_widgets.c

+ 14 - 21
la_kernel.c

@@ -3250,10 +3250,7 @@ laPanel *laEnableOperatorPanel(laOperator *For, laPropPack *This, int X, int Y,
     return p;
 }
 laPanel *laEnableYesNoPanel(laOperator *a, laPanel *Attachment, char *Title, char *Message, int X, int Y, int W, laEvent *e){
-    laPanel *p;
-    int b;
-    laUiList *uil;
-    laColumn *col, *cor, *corl, *corr;
+    laPanel *p; int b; laUiList *uil; laColumn* col;
 
     p = la_NewPanel(0, X, Y, W, 0, 1000, 500, 50, 0, 0, 0, 0, 0);
     strSafeSet(&p->Title, Title);
@@ -3264,16 +3261,15 @@ laPanel *laEnableYesNoPanel(laOperator *a, laPanel *Attachment, char *Title, cha
 
     laui_DefaultOperatorPanelTitleBar(&p->TitleBar, &p->PP, &p->PropLinkPP, 0, 0);
 
-    uil = laPrepareUi(p);
-    col = laFirstColumn(uil);
-    laSplitColumn(uil, col, 0.5);
-    cor = laRightColumn(col, 600);
+    uil = laPrepareUi(p); col = laFirstColumn(uil);
 
-    laShowLabel(uil, col, Message, 0, 0);
-    laShowItem(uil, cor, 0, "LA_confirm")->Flags|=LA_UI_FLAGS_HIGHLIGHT|LA_TEXT_ALIGN_CENTER;
+    laShowLabel(uil, col, Message, 0, 0)->Flags|=LA_TEXT_USE_NEWLINE|LA_TEXT_LINE_WRAP;
+    laUiItem* r=laBeginRow(uil,col,0,0);
+    laShowSeparator(uil,col)->Expand=1;
+    laShowItem(uil,col,0,"LA_confirm")->Flags|=LA_UI_FLAGS_HIGHLIGHT|LA_TEXT_ALIGN_CENTER;
+    laEndRow(uil,r);
 
-    laEnclosePanelContent(p,uil);
-    laShowPanelWithExpandEffect(p);
+    laEnclosePanelContent(p,uil); laShowPanelWithExpandEffect(p);
 
     lstPushItem(&MAIN.CurrentWindow->Panels, p);
     laSetOperatorLocalizer(p);
@@ -3282,10 +3278,7 @@ laPanel *laEnableYesNoPanel(laOperator *a, laPanel *Attachment, char *Title, cha
     return p;
 }
 laPanel *laEnableMessagePanel(laOperator *a, laPanel *Attachment, char *Title, char *Message, int X, int Y, int W, laEvent *e){
-    laPanel *p;
-    int b;
-    laUiList *uil;
-    laColumn *col, *cor, *corl, *corr;
+    laPanel *p; int b; laUiList *uil; laColumn* col;
 
     p = la_NewPanel(0, X, Y, W, 0, 1000, 0, 100, 0, 0, 0, 0, 0);
     strSafeSet(&p->Title, Title);
@@ -3296,14 +3289,14 @@ laPanel *laEnableMessagePanel(laOperator *a, laPanel *Attachment, char *Title, c
 
     laui_DefaultOperatorPanelTitleBar(&p->TitleBar, &p->PP, &p->PropLinkPP, 0, 0);
 
-    uil = laPrepareUi(p);
-    col = laFirstColumn(uil);
-    laSplitColumn(uil, col, 0.35);
-    cor = laRightColumn(col, 200);
+    uil = laPrepareUi(p); col = laFirstColumn(uil);
 
     laShowLabel(uil, col, Message, 0, 0)->Flags|=LA_TEXT_USE_NEWLINE|LA_TEXT_LINE_WRAP;
+    laUiItem* r = laBeginRow(uil,col,0,0);
+    laShowSeparator(uil,col)->Expand=1;
+    laShowItemFull(uil,col,0,"LA_confirm",0,"text=Okay;",0,0)->Flags|=LA_UI_FLAGS_HIGHLIGHT;
+    laEndRow(uil, r);
 
-    laShowItemFull(uil, cor, 0, "LA_confirm",0,"text=Okay;",0,0)->Flags|=LA_UI_FLAGS_HIGHLIGHT;
 
     laEnclosePanelContent(p,uil);
     laShowPanelWithExpandEffect(p);

+ 17 - 8
resources/la_operators.c

@@ -723,14 +723,23 @@ int OPINV_UDFPropagate(laOperator *a, laEvent *e){
 int OPINV_SaveUserPreferences(laOperator *a, laEvent *e){
     laSaveUserPreferences(); return LA_FINISHED;
 }
-int OPINV_RestoreFactorySettings(laOperator* a, laEvent* e) {
-    if(laRestoreFactorySettings()){
-        laEnableMessagePanel(0, 0, "Success", "Restart the program for changes to take effect.", e->x, e->y, 200, 0);
-        MAIN.SavePreferenceOnExit = 0;
-    }else{
-        laEnableMessagePanel(0, 0, "Problem", "Unable to remove preference file.", e->x, e->y, 200, 0);
+int OPMOD_RestoreFactorySettings(laOperator* a, laEvent* e){
+    if (a->ConfirmData){
+        if (a->ConfirmData->Mode == LA_CONFIRM_OK){
+            if (laRestoreFactorySettings()){
+                laEnableMessagePanel(0, 0, "Success", "Restart the program for changes to take effect.", e->x, e->y, 200, 0);
+                MAIN.SavePreferenceOnExit = 0;
+            }else{
+                laEnableMessagePanel(0, 0, "Problem", "Unable to remove preference file.", e->x, e->y, 200, 0);
+            }
+        }
+        return LA_FINISHED;
     }
-    return LA_FINISHED;
+    return LA_RUNNING;
+}
+int OPINV_RestoreFactorySettings(laOperator* a, laEvent* e){
+    laEnableYesNoPanel(0, 0, "Confirm?", "This will remove the preference file.\nChanges take effect on restating the program.", e->x, e->y, 200, e);
+    return LA_RUNNING;
 }
 
 int OPCHK_TerminateProgram(laPropPack *This, laStringSplitor *Instructions){
@@ -2189,7 +2198,7 @@ void la_RegisterBuiltinOperators(){
                                0, 0, 0, OPINV_RemoveResourceFolder, 0, U'❌', LA_ACTUATOR_SYSTEM);
 
     laCreateOperatorType("LA_save_user_preferences", "Save Preferences", "Save user preferences", 0, 0, 0, OPINV_SaveUserPreferences, 0, 0, LA_ACTUATOR_SYSTEM);
-    laCreateOperatorType("LA_restore_factory", "Restore Factory Settings", "Restore factory settings", 0, 0, 0, OPINV_RestoreFactorySettings, 0, 0, LA_ACTUATOR_SYSTEM);
+    laCreateOperatorType("LA_restore_factory", "Restore Factory Settings", "Restore factory settings", 0, 0, 0, OPINV_RestoreFactorySettings, OPMOD_RestoreFactorySettings, 0, LA_ACTUATOR_SYSTEM);
 
     laCreateOperatorType("LA_confirm", "Confirm", "Confirm The Statement", 0, 0, 0, OPINV_DoNothing, 0, U'✔', LA_ACTUATOR_SYSTEM)
         ->ExtraInstructions = "feedback=CONFIRM;";

+ 1 - 1
resources/la_widgets.c

@@ -177,7 +177,7 @@ int la_MultiStringHeight(laUiItem *ui){
     return e->HeightCoeff;
 }
 int la_LabelHeight(laUiItem *ui){
-    int Wrap=ui->Flags&LA_TEXT_LINE_WRAP;
+    int Wrap=ui->Flags&(LA_TEXT_USE_NEWLINE|LA_TEXT_LINE_WRAP);
     if(!Wrap) return 1;
     int rows;
     tnsStringGetDimension(transLate(ui->Display->Ptr), 0, 0, ui->TR-ui->TL, &rows, ui->Flags&LA_TEXT_MONO);