esgici wrote:Hi all
Project name changed
Now
- - we have a "Main Menu" ( tons of options not ready for now )
- we can working with directories, drives and all type of files
- In addition to "look", we can "open" any type file ( those Windows can automatically open of course )
- printing is OK
- GetFolder() problem is continuing
- and we still have too many incompleteness
MFMscreenShoot20150405.PNG
MFMsrc20150405.zip
MFMexe20150405.zip
Our friend Jayadev is very busy these days; I hope he will join us soon.
I couldn't succeed showing "file" image in the Grid
Any idea ?
As always, I'm waiting your critics and suggestions; please don't forgive my mistakes
Viva HMG
This is MFM_Main.prg file, see ADD comment in the file, I hope it's useful.
I not changed the content of the others files and maybe these functions are not compatible.
PS: delete MFM_FOpen() function of the original MFM_Opers.prg file.
Code: Select all
#include <hmg.ch>
PROC Main()
SET DATE GERM
SET CENT ON
PUBLIC aFiles := {} // ADD
PUBLIC cPath := GetCurrentFolder() // ADD
l1stCycle := .T.
cFileName := ''
n1stNVENo := 1 // First non-volume entry no
DEFINE WINDOW frmMiniFMan ;
ROW 0 ;
COL 0 ;
WIDTH 550 ;
HEIGHT 470 ;
TITLE 'Mini File Manager' ;
ON INIT MFM_FillGrid() ;
ON RELEASE frmMiniFMan.grdDIRList.ImageList := 0; // avoid release System Icon ImageList // ADD
ICON "MFMIcon" ;
MAIN
ON KEY ESCAPE ACTION ThisWindow.Release
DEFINE MAIN MENU
DEFINE POPUP '&File'
ITEM 'Select Folder' NAME mitSFold ACTION MFM_SelFold()
ITEM 'Select File' NAME mitSFile ACTION MFM_SelFile()
ITEM 'Open File' NAME mitFopen ACTION MFM_FOpen()
ITEM 'Read File' NAME mitFRead ACTION MFM_FRead()
ITEM 'Copy File' NAME mitFCopy ACTION MFM_FCopy()
ITEM 'Rename File' NAME mitFRena ACTION MFM_FRena()
ITEM 'Delete File' NAME mitFDele ACTION MFM_FDele()
ITEM 'Print File' NAME mitFDele ACTION MFM_Print()
SEPARATOR
ITEM "E&xit" ACTION ThisWindow.Release
END POPUP // File
DEFINE POPUP '&Tools'
ITEM '&Preferences' NAME mitPrefs ACTION MFM_Prefs()
END POPUP // Tools
DEFINE POPUP '&Help'
ITEM '&Help ' NAME mitPrefs ACTION MFM_Help()
ITEM '&About' NAME mitPrefs ACTION MFM_About()
END POPUP // Help
END MENU // frmMiniFMan.Main.Menu
DEFINE TOOLBAR tbrTFMain BUTTONSIZE 24, 24 IMAGESIZE 22,22 FONT 'Tahoma' SIZE 9 FLAT
BUTTON btnLook ;
CAPTION 'Look' ;
PICTURE 'MFMlook' ;
ACTION MFM_FRead()
BUTTON btnOpen ;
CAPTION 'Open' ;
PICTURE 'MFMOpen' ;
ACTION MFM_FOpen()
BUTTON btnCopy ;
CAPTION 'Copy' ;
PICTURE 'MFMcopy' ;
ACTION MFM_FCopy()
BUTTON btnRename ;
CAPTION 'Rename' ;
PICTURE 'MFMRena' ;
ACTION MFM_FRena()
BUTTON btnDelete ;
CAPTION 'Delete' ;
PICTURE 'MFMdele' ;
ACTION MFM_FDele()
BUTTON btnPrint ;
CAPTION 'Print' ;
PICTURE 'MFMprnt' ;
ACTION MFM_Print()
BUTTON btnChngFold ;
CAPTION 'Folder' ;
PICTURE 'MFMCFol' ;
ACTION MFM_SelFold()
BUTTON btnExit ;
CAPTION 'Exit' ;
PICTURE 'MFMexit' ;
ACTION ThisWindow.Release
END TOOLBAR // MFM_Main()
DEFINE GRID grdDIRList
ROW 50
COL 15
WIDTH 900
HEIGHT 330
ITEMS { { 0, '', '', '', '', '', ''} }
VALUE 1
WIDTHS { 20, 170, 100, 100, 90, 70 , 250}
HEADERS { '', 'File Name', 'Size', 'Date-Time', 'Type', 'Attrib', 'Full Name' }
FONTNAME "Lucida Concole"
FONTSIZE 9
TOOLTIP NIL
ONCHANGE ChangeFNam()
ONGOTFOCUS NIL
ONLOSTFOCUS NIL
FONTBOLD .F.
FONTITALIC .F.
FONTUNDERLINE .F.
FONTSTRIKEOUT .F.
ONDBLCLICK MFM_FOpen()
ONHEADCLICK NIL
ONQUERYDATA NIL
MULTISELECT .F.
ALLOWEDIT .F.
VIRTUAL .F.
DYNAMICBACKCOLOR NIL
DYNAMICFORECOLOR NIL
COLUMNWHEN NIL
COLUMNVALID NIL
COLUMNCONTROLS NIL
SHOWHEADERS .T.
CELLNAVIGATION .F.
NOLINES .F.
HELPID NIL
IMAGE { 'MFMFold', 'MFMFile' }
JUSTIFY { 0,0,1,0,0,0 }
ITEMCOUNT NIL
BACKCOLOR NIL
FONTCOLOR NIL
HEADERIMAGES NIL
ROWSOURCE NIL
COLUMNFIELDS NIL
ALLOWAPPEND .F.
ALLOWDELETE .F.
BUFFERED .F.
DYNAMICDISPLAY .F.
ONSAVE NIL
LOCKCOLUMNS 0
END GRID // grdDIRList
frmMiniFMan.grdDIRList.ImageList := BT_ImageListGetSystemIcon() // ADD
DEFINE STATUSBAR PARENT frmMiniFMan FONT "Tahoma"
STATUSITEM "File of Folder Name" WIDTH 50
STATUSITEM "Page Count" WIDTH 40
END STATUSBAR
END WINDOW // frmMiniFMan
// CENTER Window frmMiniFMan
MAXIMIZE Window frmMiniFMan
ACTIVATE Window frmMiniFMan
RETU // TextFMan.Main()
*-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._
PROC MFM_FillGrid() // ADD
frmMiniFMan.grdDIRList.DeleteAllItems()
aFiles := BT_DirectoryInfo ( CSIDL_DRIVES, BT_DIRECTORYINFO_LISTALL )
FOR i := 1 TO HMG_LEN (aFiles)
a1GRow := { ;
aFiles [i] [BT_DIRECTORYINFO_INTERNALDATA_IMAGEINDEX],;
aFiles [i] [BT_DIRECTORYINFO_NAME],;
aFiles [i] [BT_DIRECTORYINFO_SIZE],;
aFiles [i] [BT_DIRECTORYINFO_DATE],;
aFiles [i] [BT_DIRECTORYINFO_TYPE],;
aFiles [i] [BT_DIRECTORYINFO_INTERNALDATA_TYPE],;
aFiles [i] [BT_DIRECTORYINFO_FULLNAME];
}
frmMiniFMan.grdDIRList.AddItem( a1GRow )
NEXT
aFiles := BT_DirectoryInfo ( cPath, BT_DIRECTORYINFO_LISTALL )
IF ValType (aFiles) == "A"
nIndexSort := BT_DIRECTORYINFO_TYPE
ASORT (aFiles, NIL, NIL, { |x, y| IF (HMG_StrCmp ( ;
(HB_USUBSTR(ALLTRIM(x[BT_DIRECTORYINFO_INTERNALDATA_TYPE]),1,1) + x[nIndexSort] + x[BT_DIRECTORYINFO_NAME]) ,;
(HB_USUBSTR(ALLTRIM(y[BT_DIRECTORYINFO_INTERNALDATA_TYPE]),1,1) + y[nIndexSort] + y[BT_DIRECTORYINFO_NAME]) ,;
.F. ) < 0, .T., .F.) })
FOR i := 1 TO HMG_LEN (aFiles)
a1GRow := { ;
aFiles [i] [BT_DIRECTORYINFO_INTERNALDATA_IMAGEINDEX],;
aFiles [i] [BT_DIRECTORYINFO_NAME],;
aFiles [i] [BT_DIRECTORYINFO_SIZE],;
aFiles [i] [BT_DIRECTORYINFO_DATE],;
aFiles [i] [BT_DIRECTORYINFO_TYPE],;
aFiles [i] [BT_DIRECTORYINFO_INTERNALDATA_TYPE],;
aFiles [i] [BT_DIRECTORYINFO_FULLNAME];
}
frmMiniFMan.grdDIRList.AddItem( a1GRow )
NEXT
ENDIF
RETU // MFM_FillGrid()
*-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._
PROC MFM_FOpen() // ADD
cFileName := frmMiniFMan.grdDIRList.Cell( frmMiniFMan.grdDIRList.Value, 7 )
IF "D" $ frmMiniFMan.grdDIRList.Cell( frmMiniFMan.grdDIRList.Value, 6 )
// DirChange( cFileName )
cPath := cFileName
MFM_FillGrid()
ELSE
SHELLEXECUTE( 0, "open", cFileName,"", "",1)
ENDIF
RETU // MFM_FOpen()
*-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._
PROC ChangeFNam()
cFileName := TRIM( This.Cell( This.Value, 7 ) ) // ADD
IF l1stCycle
l1stCycle := .F.
ELSE
frmMiniFMan.StatusBar.Item( 1 ) := cFileName
ENDIF
RETU // ChangeFNam()
*-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._