diff --git a/data/common/settings/assoc.ini b/data/common/settings/assoc.ini index c7deecd361..5070abcce6 100644 --- a/data/common/settings/assoc.ini +++ b/data/common/settings/assoc.ini @@ -1,18 +1,27 @@ [TinyPad] exec=/sys/tinypad icon=9 +next=$TextEditor [WebView] exec=/sys/network/webview icon=31 +next=$TinyPad [TextEditor] exec=/sys/develop/t_edit icon=58 +next=$Text Reader + +[Text Reader] +exec=/sys/textreader +icon=55 +next=$HexEditor [KIV] exec=/sys/media/kiv icon=70 +next=$Animage [FontViewer] exec=/sys/FONT_VIEWER @@ -24,6 +33,7 @@ icon=15 [Pixie] exec=/sys/media/pixie/pixie icon=65 +next=$AC97snd [AC97snd] exec=/sys/media/ac97snd @@ -51,6 +61,7 @@ icon=22 [Shell] exec=/sys/shell icon=2 +next=$TinyPad [FASM] exec=/sys/develop/fasm @@ -66,6 +77,7 @@ icon=75 [cObj] exec=/sys/develop/cObj +next=$HexEditor [Eolite] exec=/sys/file managers/eolite @@ -125,14 +137,7 @@ obj=$cObj raw=$HeEd -sh=$Shell shell=$Shell +sh=$Shell bat=$Shell -cmd=$Shell - -3ds=$View3DS -asc=$View3DS - -skn=/sys/desktop -lif=/sys/demos/life2 -kla=/sys/games/klavisha +cmd=$Shell \ No newline at end of file diff --git a/programs/system/open/open.asm b/programs/system/open/open.asm index cef3581946..2a215b2f91 100644 --- a/programs/system/open/open.asm +++ b/programs/system/open/open.asm @@ -58,6 +58,7 @@ end if assoc_ini db "/sys/settings/assoc.ini", 0 .sec db "Assoc", 0 .exec db "exec", 0 + .next db "next", 0 .icon db "icon", 0 sb_apps scrollbar \ @@ -142,7 +143,7 @@ end if last_y dd -1 if DEBUG eq 1 - std_param db "~/sys/example.asm", 0 + std_param db "/sys/example.asm", 0 end if imports: @@ -219,14 +220,24 @@ end if cmpe [esi], dword "kex", execute open_as: - invoke libini.get_str, assoc_ini, assoc_ini.sec, esi, buffer, 2048, undefined - cmpe [buffer], byte 0, start_dialog_pre - cmpne [buffer], byte "$", @f - invoke libini.get_str, assoc_ini, buffer + 1, assoc_ini.exec, buffer, 2048, undefined - cmpe [buffer], byte 0, ini_error + invoke libini.get_str, assoc_ini, assoc_ini.sec, esi, buffer8, 2048, undefined + cmpe byte [buffer8], 0, start_dialog_pre + .run: + mov edi, 0 + cmpne byte [buffer8], "$", .pre_open + mov edi, 1 + invoke libini.get_str, assoc_ini, buffer8 + 1, assoc_ini.exec, buffer, 2048, undefined + cmpe byte [buffer], 0, ini_error + jmp @f + .pre_open: + stdcall string.copy, buffer8, buffer @@: mcall 70, is_openas - jmp exit + cmpge eax, 0, exit + cmpe edi, 0, start_dialog + invoke libini.get_str, assoc_ini, buffer8 + 1, assoc_ini.next, buffer8, 2048, undefined + cmpne byte [buffer], 0, .run + jmp start_dialog execute: mov eax, [param_s] @@ -988,6 +999,7 @@ end if buffer5 rb 2048 ;OD buffer6 rb 2048 ;check existance buffer7 rb 32 ;for sorting + buffer8 rd 2048 params rb 2048 _stack rb 2048 memory: