File "VLC Rotate extension.bas"

Path: /VLC Rotate extension/VLC Rotate extension.bas
File size: 6.66 KB
MIME-type:
Charset: 8 bit

#COMPILE EXE
#DIM ALL
#INCLUDE ONCE "WIN32API.INC"
#INCLUDE ONCE "REGISTRY.INC"
#INCLUDE ONCE "RESOURCE.INC"
#INCLUDE ONCE "APPDATA.INC"
#RESOURCE     "VRE.PBR"

'------------------------------------------------------------------------------
%IDC_IMAGE1  = 1001
%IDC_LABEL1  = 1002
%IDC_LABEL2  = 1003
%IDC_BUTTON1 = 1004
%IDC_IMAGE2  = 1005
'------------------------------------------------------------------------------
%READY_TO_INSTALL = 6
%MAGNIFYING_GLASS = 22
%HELP_ICO         = 23
%WARNING_ICO      = 53
%REPLACE_FILE     = 132
%RETRY            = 238
%ALL_GOOD         = 41
'------------------------------------------------------------------------------

'------------------------------------------------------------------------------
FUNCTION PBMAIN () AS LONG
    LOCAL hDlg  AS DWORD
    LOCAL lRes  AS LONG

    DIALOG NEW PIXELS,     0, "VLC Rotate", , , 360, 90, _
      %DS_MODALFRAME OR %WS_CAPTION OR %WS_POPUP OR %WS_SYSMENU, TO hDlg

    DIALOG SET ICON     hDlg, "ICO1"

    CONTROL ADD IMAGE,  hDlg, %IDC_IMAGE1, "", 8, 4, 48, 48
    CONTROL ADD LABEL,  hDlg, %IDC_LABEL1, "", 70, 8, 250, 16
    CONTROL ADD LABEL,  hDlg, %IDC_LABEL2, "", 70, 32, 250, 16
    CONTROL ADD BUTTON, hDlg, %IDC_BUTTON1, "INSTALL ROTATE EXTENSION", 8, 56, 320, 24
    CONTROL ADD IMAGE,  hDlg, %IDC_IMAGE2, "", 334, 60, 16, 16, %SS_NOTIFY

    DIALOG SHOW MODAL hDlg, CALL MainProc TO lRes
END FUNCTION
'------------------------------------------------------------------------------

'------------------------------------------------------------------------------
SUB InstallExtensions()
    LOCAL ff AS LONG

    KILL RoamingAppData() + "\vlc\lua\extensions\Rotate+90.lua"
    KILL RoamingAppData() + "\vlc\lua\extensions\Rotate-90.lua"

    ff = FREEFILE
    OPEN RoamingAppData() + "\vlc\lua\extensions\Rotate+90.lua" FOR BINARY AS #ff
    PUT$ #ff, RCDATA$("RCW")
    CLOSE #ff

    ff = FREEFILE
    OPEN RoamingAppData() + "\vlc\lua\extensions\Rotate-90.lua" FOR BINARY AS #ff
    PUT$ #ff, RCDATA$("RCCW")
    CLOSE #ff
END SUB
'------------------------------------------------------------------------------

'------------------------------------------------------------------------------
FUNCTION Exist(BYVAL fileOrFolder AS STRING) AS LONG
    LOCAL Dummy&
    Dummy& = GETATTR(fileOrFolder)
    FUNCTION = (ERRCLEAR = 0)
END FUNCTION
'------------------------------------------------------------------------------

'------------------------------------------------------------------------------
SUB SetIco (BYVAL hDlg AS DWORD, BYVAL hCtl AS LONG, BYVAL ico AS LONG, BYVAL xy AS LONG)
    LOCAL  hLib    AS DWORD
    LOCAL  hIcon   AS DWORD

    hLib = LoadLibrary("shell32.dll")
    hIcon = LoadImage(hLib, BYVAL ico+1, %IMAGE_ICON, xy, xy, 0)
    SendDlgItemMessage hDlg, hCtl, %STM_SETIMAGE, %IMAGE_ICON, hIcon
    freelibrary hLib
END SUB
'------------------------------------------------------------------------------

'------------------------------------------------------------------------------
CALLBACK FUNCTION MainProc()
    STATIC VLCPath AS STRING
    STATIC ovw     AS LONG

    SELECT CASE AS LONG CB.MSG
        CASE %WM_INITDIALOG

            ' Initialization handler
            SetIco CB.HNDL, %IDC_IMAGE2, %HELP_ICO, 16
            ovw = 0

            ' Get VLC path from registry
            LET VlcPath = GETREGVALUE(%HKEY_LOCAL_MACHINE, "SOFTWARE\VideoLAN\VLC", "")
            IF VlcPath = "" THEN
                SetIco CB.HNDL, %IDC_IMAGE1, %MAGNIFYING_GLASS, 48
                CONTROL SET TEXT CB.HNDL, %IDC_LABEL1, "VLC was not detected on your system."
                CONTROL SET TEXT CB.HNDL, %IDC_LABEL2, "Install VLC then try again."
                CONTROL DISABLE  CB.HNDL, %IDC_BUTTON1

            ELSE
                SetIco CB.HNDL, %IDC_IMAGE1, %READY_TO_INSTALL, 48
                CONTROL SET TEXT CB.HNDL, %IDC_LABEL1, "VLC was detected on your system."
                CONTROL SET TEXT CB.HNDL, %IDC_LABEL2, "Ready to install the extension."
                CONTROL ENABLE   CB.HNDL, %IDC_BUTTON1

            END IF

        CASE %WM_COMMAND

            SELECT CASE AS LONG CB.CTL

                CASE %IDC_BUTTON1
                    IF CB.CTLMSG = %BN_CLICKED OR CB.CTLMSG = 1 THEN

                        IF ISFALSE ovw THEN
                            ' Extension detected > already installed
                            IF Exist(RoamingAppData() + "\vlc\lua\extensions\Rotate+90.lua") _
                            OR Exist(RoamingAppData() + "\vlc\lua\extensions\Rotate-90.lua") THEN
                                ovw = -1
                                SetIco CB.HNDL, %IDC_IMAGE1, %REPLACE_FILE, 48
                                CONTROL SET TEXT CB.HNDL, %IDC_LABEL1, "Extension was already installed previously."
                                CONTROL SET TEXT CB.HNDL, %IDC_LABEL2, "Replace it ?"
                                CONTROL SET TEXT CB.HNDL, %IDC_BUTTON1, "FORCE-INSTALL EXTENSION (OVERWRITE)"
                                EXIT FUNCTION
                            END IF
                        END IF

                        ' Extension not detected -or- user asks to overwrite > install it
                        InstallExtensions()

                        ' Extension correctly installed
                        IF Exist(RoamingAppData() + "\vlc\lua\extensions\Rotate+90.lua") _
                        OR Exist(RoamingAppData() + "\vlc\lua\extensions\Rotate-90.lua") THEN
                            SetIco CB.HNDL, %IDC_IMAGE1, %ALL_GOOD, 48
                            CONTROL SET TEXT CB.HNDL, %IDC_LABEL1, "Extension correctly installed. Please restart VLC."
                            CONTROL SET TEXT CB.HNDL, %IDC_LABEL2, "You can now rotate videos via View > Rotate..."
                            CONTROL DISABLE  CB.HNDL, %IDC_BUTTON1

                        ' Problem during installation
                        ELSE
                            SetIco CB.HNDL, %IDC_IMAGE1, %WARNING_ICO, 48
                            CONTROL SET TEXT CB.HNDL, %IDC_LABEL1, "There was a problem installing the extension !"
                            CONTROL SET TEXT CB.HNDL, %IDC_LABEL2, "You can try again or contact the author."

                        END IF

                    END IF

                CASE %IDC_IMAGE2
                    IF CB.CTLMSG = %BN_CLICKED OR CB.CTLMSG = 1 THEN
                        ShellExecute %NULL, "open", "http://mougino.free.fr/", "", "", %SW_SHOW
                    END IF

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