forked from KolibriOS/kolibrios
add example open dialog
git-svn-id: svn://kolibrios.org@8245 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
4ee28966f8
commit
a75d4696ea
19
programs/bcc32/examples/open_dlg/Makefile
Normal file
19
programs/bcc32/examples/open_dlg/Makefile
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# Path to /programs
|
||||||
|
SVN_PROGR:=../../..
|
||||||
|
|
||||||
|
# Path to /programs/bcc32
|
||||||
|
SVN_BCC32:=$(SVN_PROGR)/bcc32
|
||||||
|
|
||||||
|
# Path to t2fasm
|
||||||
|
T2FASM:=$(SVN_BCC32)/t2fasm
|
||||||
|
|
||||||
|
# Path to include
|
||||||
|
INCLUDE:=$(SVN_BCC32)/include
|
||||||
|
|
||||||
|
# Path to Bin folder
|
||||||
|
KOS32_BCC:=/home/autobuild/borlandcpp/bin
|
||||||
|
|
||||||
|
# Filename without .cpp
|
||||||
|
FILENAME:=open_dlg
|
||||||
|
|
||||||
|
include $(SVN_BCC32)/Makefile_app
|
110
programs/bcc32/examples/open_dlg/open_dlg.cpp
Normal file
110
programs/bcc32/examples/open_dlg/open_dlg.cpp
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
#include <kolibri.h>
|
||||||
|
#include <kos_heap.h>
|
||||||
|
#include <kos_file.h>
|
||||||
|
#include <load_lib.h>
|
||||||
|
#include <l_proc_lib.h>
|
||||||
|
|
||||||
|
using namespace Kolibri;
|
||||||
|
|
||||||
|
const char header[] = "Open Dialog";
|
||||||
|
char library_path[2048];
|
||||||
|
|
||||||
|
OpenDialog_data ofd;
|
||||||
|
unsigned char procinfo[1024];
|
||||||
|
char plugin_path[4096], openfile_path[4096], filename_area[256];
|
||||||
|
od_filter filter1 = { 8, "TXT\0\0" };
|
||||||
|
|
||||||
|
namespace Kolibri{
|
||||||
|
char CurrentDirectoryPath[2048];
|
||||||
|
}
|
||||||
|
|
||||||
|
void KolibriOnPaint(void);
|
||||||
|
|
||||||
|
void __stdcall DrawWindow()
|
||||||
|
{
|
||||||
|
asm{
|
||||||
|
push ebx
|
||||||
|
mcall SF_REDRAW,SSF_BEGIN_DRAW
|
||||||
|
}
|
||||||
|
KolibriOnPaint();
|
||||||
|
asm{
|
||||||
|
mcall SF_REDRAW,SSF_END_DRAW
|
||||||
|
pop ebx
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool KolibriOnStart(TStartData &kos_start, TThreadData /*th*/)
|
||||||
|
{
|
||||||
|
kos_start.Left = 10;
|
||||||
|
kos_start.Top = 40;
|
||||||
|
kos_start.Width = 420;
|
||||||
|
kos_start.Height = 320;
|
||||||
|
kos_start.WinData.WindowColor = 0xFFFFFF;
|
||||||
|
kos_start.WinData.WindowType = 0x33; // 0x34 - fixed, 0x33 - not fixed
|
||||||
|
kos_start.WinData.Title = header;
|
||||||
|
if(LoadLibrary("proc_lib.obj", library_path, "/sys/lib/proc_lib.obj", &import_proc_lib))
|
||||||
|
{
|
||||||
|
ofd.procinfo = procinfo;
|
||||||
|
ofd.com_area_name = "FFFFFFFF_open_dialog";
|
||||||
|
ofd.com_area = 0;
|
||||||
|
ofd.opendir_path = plugin_path;
|
||||||
|
ofd.dir_default_path = "/rd/1";
|
||||||
|
ofd.start_path = "/rd/1/File managers/opendial";
|
||||||
|
ofd.draw_window = DrawWindow;
|
||||||
|
ofd.status = 0;
|
||||||
|
ofd.openfile_path = openfile_path;
|
||||||
|
ofd.filename_area = filename_area;
|
||||||
|
ofd.filter_area = &filter1;
|
||||||
|
ofd.x_size = 420;
|
||||||
|
ofd.x_start = 10;
|
||||||
|
ofd.y_size = 320;
|
||||||
|
ofd.y_start = 10;
|
||||||
|
OpenDialog_Init(&ofd);
|
||||||
|
} else return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void KolibriOnPaint(void)
|
||||||
|
{
|
||||||
|
// If button have ID 1, this is close button
|
||||||
|
DrawButton(2,0xf0f0f0, 10,10,50,20);
|
||||||
|
DrawText(20,16,0,"Open");
|
||||||
|
DrawButton(3,0xf0f0f0, 70,10,50,20);
|
||||||
|
DrawText(80,16,0,"Save");
|
||||||
|
DrawButton(4,0xf0f0f0, 130,10,95,20);
|
||||||
|
DrawText(140,16,0,"Select folder");
|
||||||
|
|
||||||
|
if(ofd.openfile_path[0]) DrawText(10,40,0,ofd.openfile_path);
|
||||||
|
if(ofd.opendir_path[0]) DrawText(10,55,0,ofd.opendir_path);
|
||||||
|
if(ofd.filename_area[0]) DrawText(10,70,0,ofd.filename_area);
|
||||||
|
}
|
||||||
|
|
||||||
|
void KolibriOnButton(long id, TThreadData /*th*/)
|
||||||
|
{
|
||||||
|
FileInfoBlock* file;
|
||||||
|
long int k;
|
||||||
|
|
||||||
|
switch(id){
|
||||||
|
case 2:
|
||||||
|
ofd.type = 0; // 0 - open
|
||||||
|
OpenDialog_Start(&ofd);
|
||||||
|
if(ofd.status==1){
|
||||||
|
//... open ...
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
ofd.type = 1; // 1 - save
|
||||||
|
OpenDialog_Start(&ofd);
|
||||||
|
if(ofd.status==1){
|
||||||
|
//... save ...
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
ofd.type = 2; // 2 - select folder
|
||||||
|
OpenDialog_Start(&ofd);
|
||||||
|
if(ofd.status==1){
|
||||||
|
//...
|
||||||
|
}
|
||||||
|
//break;
|
||||||
|
};
|
||||||
|
}
|
15
programs/bcc32/examples/open_dlg/open_dlg_cpp.bat
Normal file
15
programs/bcc32/examples/open_dlg/open_dlg_cpp.bat
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
Set NAME=open_dlg
|
||||||
|
Set BCC_DIR=..\..\..\bcc32
|
||||||
|
kos32-bcc -S -v- -R- -6 -a4 -O2 -Og -Oi -Ov -OS -k- -D__KOLIBRI__ -I..\..\..\bcc32\include %NAME%.cpp
|
||||||
|
|
||||||
|
echo STACKSIZE equ 8192> kos_make.inc
|
||||||
|
echo include "%BCC_DIR%\include\kos_start.inc">> kos_make.inc
|
||||||
|
echo include "%BCC_DIR%\include\kos_func.inc">> kos_make.inc
|
||||||
|
echo include "%BCC_DIR%\include\kos_heap.inc">> kos_make.inc
|
||||||
|
|
||||||
|
echo include "kos_make.inc" > f_%NAME%.asm
|
||||||
|
t2fasm < %NAME%.asm >> f_%NAME%.asm
|
||||||
|
fasm f_%NAME%.asm %NAME%.kex
|
||||||
|
if exist %NAME%.kex kpack %NAME%.kex
|
||||||
|
if exist %NAME%.kex del kos_make.inc
|
||||||
|
pause
|
@ -4,7 +4,7 @@ org 0
|
|||||||
dd 1
|
dd 1
|
||||||
dd @Kolibri@Main$qv
|
dd @Kolibri@Main$qv
|
||||||
dd I_END
|
dd I_END
|
||||||
dd U_END+STACKSIZE+HEAPSIZE
|
dd U_END+STACKSIZE ;+HEAPSIZE
|
||||||
dd U_END+STACKSIZE
|
dd U_END+STACKSIZE
|
||||||
if defined @Kolibri@CommandLine
|
if defined @Kolibri@CommandLine
|
||||||
dd @Kolibri@CommandLine
|
dd @Kolibri@CommandLine
|
||||||
|
62
programs/bcc32/include/l_proc_lib.h
Normal file
62
programs/bcc32/include/l_proc_lib.h
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
#ifndef __L_PROC_LIB_H_INCLUDED_
|
||||||
|
#define __L_PROC_LIB_H_INCLUDED_
|
||||||
|
//
|
||||||
|
// proc_lib.obj
|
||||||
|
//
|
||||||
|
|
||||||
|
struct od_filter
|
||||||
|
{
|
||||||
|
long size; //size = len(#ext) + sizeof(long)
|
||||||
|
char ext[25];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct OpenDialog_data{
|
||||||
|
long type;
|
||||||
|
void* procinfo; //
|
||||||
|
char* com_area_name;
|
||||||
|
void* com_area; //
|
||||||
|
char* opendir_path;
|
||||||
|
char* dir_default_path;
|
||||||
|
char* start_path;
|
||||||
|
void (__stdcall* draw_window)();
|
||||||
|
long status;
|
||||||
|
char* openfile_path;
|
||||||
|
char* filename_area;
|
||||||
|
od_filter* filter_area;
|
||||||
|
short int x_size; // Window X size
|
||||||
|
short int x_start; // Window X position
|
||||||
|
short int y_size; // Window y size
|
||||||
|
short int y_start; // Window Y position
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ColorDialog_data{
|
||||||
|
long type;
|
||||||
|
void* procinfo; //
|
||||||
|
char* com_area_name;
|
||||||
|
void* com_area; //
|
||||||
|
char* start_path;
|
||||||
|
void (__stdcall* draw_window)();
|
||||||
|
long status;
|
||||||
|
short int x_size; // Window X size
|
||||||
|
short int x_start; // Window X position
|
||||||
|
short int y_size; // Window y size
|
||||||
|
short int y_start; // Window Y position
|
||||||
|
long color_type; // 0- RGB, 1 or other - reserved
|
||||||
|
long color; // Selected color
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
// proc_lib - import table
|
||||||
|
//
|
||||||
|
void (__stdcall* import_proc_lib)() = (void (__stdcall*)())&"lib_init";
|
||||||
|
void (__stdcall* OpenDialog_Init)(OpenDialog_data* odd) = (void (__stdcall*)(OpenDialog_data*))&"OpenDialog_init";
|
||||||
|
void (__stdcall* OpenDialog_Start)(OpenDialog_data* odd) = (void (__stdcall*)(OpenDialog_data*))&"OpenDialog_start";
|
||||||
|
void (__stdcall* OpenDialog_SetFileName)(OpenDialog_data* odd, char* name) = (void (__stdcall*)(OpenDialog_data*, char*))&"OpenDialog_set_file_name";
|
||||||
|
void (__stdcall* OpenDialog_SetFileExt)(OpenDialog_data* odd, char* ext) = (void (__stdcall*)(OpenDialog_data*, char*))&"OpenDialog_set_file_ext";
|
||||||
|
void (__stdcall* ColorDialog_Init)(ColorDialog_data* cdd) = (void (__stdcall*)(ColorDialog_data*))&"ColorDialog_init";
|
||||||
|
void (__stdcall* ColorDialog_Start)(ColorDialog_data* cdd) = (void (__stdcall*)(ColorDialog_data*))&"ColorDialog_start";
|
||||||
|
asm{
|
||||||
|
dd 0,0
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in New Issue
Block a user