*/}}
浏览代码

show backup

YimingWu 1 年之前
父节点
当前提交
48ed0c3fed
共有 3 个文件被更改,包括 25 次插入2 次删除
  1. 1 0
      la_interface.h
  2. 22 2
      resources/la_operators.c
  3. 2 0
      resources/la_templates.c

+ 1 - 0
la_interface.h

@@ -2172,6 +2172,7 @@ STRUCTURE(laFileBrowser){
     char UseExtension[64];
     int UseType;
     int FilterType;
+    int ShowBackups;
     laStringSplitor* ss_filter_extensions;
 };
 

+ 22 - 2
resources/la_operators.c

@@ -172,13 +172,24 @@ int la_DetectFileItemType(char* format){
 }
 int la_AcceptFileFormat(laFileBrowser* fb, char* format){
     if(!format || !format[0]) return 1;
+    char buf[2048];
     if(fb->FilterType){
-        for(laExtensionType* et=MAIN.ExtraExtensions.pFirst;et;et=et->Item.pNext){ if(et->FileType==fb->FilterType && strSame(format, et->Extension)) return 1; }
+        for(laExtensionType* et=MAIN.ExtraExtensions.pFirst;et;et=et->Item.pNext){
+            if(et->FileType==fb->FilterType && strSame(format, et->Extension)) return 1;
+            if(fb->ShowBackups){
+                sprintf(buf,"%s~",et->Extension);
+                if(strSame(format,buf)) return 1;
+            }
+        }
         return 0;
     }
     if(!fb->ss_filter_extensions) return 1;
     for(laStringPart* sp=fb->ss_filter_extensions->parts.pFirst;sp;sp=sp->Item.pNext){
         if(!strcmp(sp->Content, format)) return 1;
+        if(fb->ShowBackups){
+            sprintf(buf,"%s~",sp->Content);
+            if(strSame(format,buf)) return 1;
+        }
     }
     return 0;
 }
@@ -393,7 +404,9 @@ void *laset_FileBrowserActiveDisk(laFileBrowser *fb, laDiskItem *di, int UNUSED_
     fb->FileName[0] = 0;
 }
 void laset_FileBrowserPath(laFileBrowser *fb, char *content){
-    strCopyFull(fb->Path, content); la_FileBrowserRebuildList(fb); fb->FileName[0] = 0; laRecalcCurrentPanel();
+    if(!strSame(content, fb->Path)){
+        strCopyFull(fb->Path, content); la_FileBrowserRebuildList(fb); fb->FileName[0] = 0; laRecalcCurrentPanel();
+    }
 }
 void *laset_FileBrowserBookmark(laFileBrowser *fb, laBookmarkedFolder *bf){
     strcpy(fb->Path,bf->Path); la_FileBrowserRebuildList(fb); fb->FileName[0] = 0;
@@ -430,6 +443,9 @@ void* laset_FileBrowserExtension(laFileBrowser* fb, laExtensionType* et){
         la_FileBrowserRebuildList(fb); laRecalcCurrentPanel();
     }
 }
+void laset_FileBrowserShowBackups(laFileBrowser* fb, int show){
+    fb->ShowBackups = show; la_FileBrowserRebuildList(fb); laRecalcCurrentPanel();
+}
 void la_FileBrowserUpLevel(laFileBrowser *fb){
     char *p = fb->Path;
     char *LastP = 0;
@@ -2285,6 +2301,10 @@ void la_RegisterBuiltinOperators(){
         laAddStringProperty(p, "name", "Name", "Bookmark Name", 0, 0, 0, 0, 0, offsetof(laBookmarkedFolder, Name), 0, 0, 0, 0, LA_AS_IDENTIFIER|LA_UDF_LOCAL);
         laAddStringProperty(p, "path", "Path", "Bookmark path", 0, 0, 0, 0, 0, offsetof(laBookmarkedFolder, Path), 0, 0, 0, 0, LA_UDF_LOCAL);
     }
+    ep = laAddEnumProperty(pc, "show_backups", "Show Backups", "Show backup files", 0, 0, 0, 0, 0, offsetof(laFileBrowser, ShowBackups), 0, laset_FileBrowserShowBackups, 0, 0, 0, 0, 0, 0, 0,0);{
+        laAddEnumItemAs(ep, "NONE", "None", "Don't show backup files", 0, 0);
+        laAddEnumItemAs(ep, "SHOWN", "Shown", "Show backup files", 1, U'~');
+    }
     
     at = laCreateOperatorType("LA_udf_read", "Read", "Read a UDF file", 0, 0, OPEXT_UDFOperation, OPINV_UDFRead, OPMOD_UDFRead, U'📑', LA_ACTUATOR_SYSTEM);
     pc = laDefineOperatorProps(at, 0);

+ 2 - 0
resources/la_templates.c

@@ -947,6 +947,8 @@ void laui_FileBrowserFileList(laUiList *uil, laPropPack *THIS_UNUSED, laPropPack
     laUiItem* left=laMakeEmptyGroup(uil, cl, "left", 0); ul=left->Page; left->Flags|=LA_UI_FLAGS_NO_DECAL; ul->HeightCoeff=-1;
     ulc=laFirstColumn(ul);
 
+    laShowItem(ul,ulc,Operator,"show_backups")->Flags|=LA_UI_FLAGS_CYCLE|LA_UI_FLAGS_HIGHLIGHT;
+
     b=laOnConditionThat(ul,ulc,laPropExpression(Operator,"use_type"));{
         u = laMakeGroup(ul, ulc, "Use Format", 0)->Page; c = laFirstColumn(u);
         laShowItemFull(u,c,Operator,"available_extensions",0,0,laui_IdentifierOnly,0)->Flags|=LA_UI_FLAGS_NO_DECAL;