File "exeiconinunix.bas"

Path: /exe2unix/exeiconinunix.bas
File size: 1.89 KB
MIME-type:
Charset: utf-8


#COMPILE EXE "exeiconinunix.exe"
#DIM ALL
#REGISTER NONE

#RESOURCE "exeiconinunix.pbr"

MACRO MyMsgBox(hd,m,t,st) = MessageBox(hd,m,t,st)

#INCLUDE ONCE "Win32Api.inc"
#INCLUDE ONCE "inc/exe2unix.inc"

'--------------------------------------------------------------------------------
FUNCTION PBMAIN
  LOCAL src AS STRING
  LOCAL png AS STRING
  LOCAL lRes AS LONG

  ' Create exe icon in Unix dock and Unix file explorer
  Me2Unix 0, 1 ' askConfirmation=%FALSE, showInAppMenu=%TRUE

  ' Are we under Linux?
  IF NOT IsOnUnix() THEN
    ?"This program must be run under Unix.", _
    %MB_ICONWARNING, EXE.NAME$
    EXIT FUNCTION
  END IF

  ' Select executable (if not provided as argument)
  IF RIGHT$(LCASE$(TRIM$(COMMAND$,$DQ)), 4) = ".exe" THEN
    src = COMMAND$
  ELSE
    DISPLAY OPENFILE 0, , , "Select file...", "", _
        CHR$("Executable (*.exe)", 0, "*.exe", 0), _
        "", "", %OFN_FILEMUSTEXIST OR %OFN_SHOWHELP OR _
        %OFN_NONETWORKBUTTON OR %OFN_ENABLESIZING TO src
    IF src = "" THEN EXIT FUNCTION ' canceled by user
  END IF

  ' Extract exe icon and convert to png in ~/.local/share/icons
  png = IcoStrip2Unix(src)

  ' Error extracting icon
  IF RIGHT$(png,4) <> ".png" THEN
    ?"Error extracting icon from executable.", %MB_ICONWARNING, EXE.NAME$
    EXIT FUNCTION
  END IF

  ' Ask user confirmation
  lRes = ?("Would you like to display " _
       + $DQ + PATHNAME$(NAMEX,src) + $DQ _
       + " icon in the Linux File Explorer ?" _
       , %MB_ICONQUESTION + %MB_YESNO _
       , EXE.NAME$)
  IF lRes = %IDNO THEN EXIT FUNCTION

  ' Display exe icon in Nautilus
  FileIco2Unix src, png

  ' Done!
  ?PATHNAME$(NAME, src) + " icon successfully set! "+$CR _
  +"Hit F5 in Linux explorer to refresh." _
  ,%MB_ICONINFORMATION, EXE.NAME$

END FUNCTION
'--------------------------------------------------------------------------------