From 5c01aef5fd87870b63511f17bd50405a0df08a3b Mon Sep 17 00:00:00 2001 From: Rr42 Date: Tue, 29 May 2018 10:46:19 +0530 Subject: Freeze library updated and renamed to freezeLD (working) --- ldmicro/lib/freezeLD/CMakeLists.txt | 4 + ldmicro/lib/freezeLD/freezeLD.cpp | 265 ++++++++++++++++++++++++++++++++++++ ldmicro/lib/freezeLD/freezeLD.h | 52 +++++++ ldmicro/lib/linuxUI/CMakeLists.txt | 3 + ldmicro/lib/linuxUI/linuxLD.h | 61 +++++++++ ldmicro/lib/linuxUI/linuxUI.cpp | 18 +++ ldmicro/lib/linuxUI/linuxUI.h | 19 +++ 7 files changed, 422 insertions(+) create mode 100644 ldmicro/lib/freezeLD/CMakeLists.txt create mode 100644 ldmicro/lib/freezeLD/freezeLD.cpp create mode 100644 ldmicro/lib/freezeLD/freezeLD.h create mode 100644 ldmicro/lib/linuxUI/CMakeLists.txt create mode 100644 ldmicro/lib/linuxUI/linuxLD.h create mode 100644 ldmicro/lib/linuxUI/linuxUI.cpp create mode 100644 ldmicro/lib/linuxUI/linuxUI.h (limited to 'ldmicro/lib') diff --git a/ldmicro/lib/freezeLD/CMakeLists.txt b/ldmicro/lib/freezeLD/CMakeLists.txt new file mode 100644 index 0000000..761f348 --- /dev/null +++ b/ldmicro/lib/freezeLD/CMakeLists.txt @@ -0,0 +1,4 @@ +project( FreezeLD ) + +add_library(FreezeLD freezeLD.cpp) +target_link_libraries(FreezeLD LinuxUI) diff --git a/ldmicro/lib/freezeLD/freezeLD.cpp b/ldmicro/lib/freezeLD/freezeLD.cpp new file mode 100644 index 0000000..5241af1 --- /dev/null +++ b/ldmicro/lib/freezeLD/freezeLD.cpp @@ -0,0 +1,265 @@ +/* + * A library for storing parameters in a key file + * + * This library is an analog to the windows freeze library + * developed by Jonathan Westhues. + * + * R Ramana, 2018 + */ +#include "linuxUI.h" +#include "freezeLD.h" +#include +#include +#include +#include + +/* + * store a window's position in the registry, or fail silently if the registry calls don't work + */ +void FreezeWindowPosF(HWID hwid, char *subKey, char *name) +{ + g_print("freezing"); + char* moveToKeyLocatin = (char *)malloc(strlen(subKey) + 35); + if(!moveToKeyLocatin) + return; + sprintf(moveToKeyLocatin, "mkdir -p %s/%s", LDMICRO_REGISTER, subKey); + system(moveToKeyLocatin); + sprintf(moveToKeyLocatin, "cd %s/%s", LDMICRO_REGISTER, subKey); + if (-1 == system(moveToKeyLocatin)) + return; + free(moveToKeyLocatin); + + char *keyName = (char *)malloc(strlen(name) + 30); + if(!keyName) + return; + + Key newKey; + + int val; + g_print("get width"); + sprintf(keyName, "%s_width", name); + std::ofstream Register(keyName, std::ios::binary | std::ios::trunc); + if (!Register.is_open()) + return; + gtk_window_get_size(GTK_WINDOW(hwid), &val, NULL); + newKey.type = 'i'; + newKey.val.i = val; + Register.write((char*) &newKey, sizeof(newKey)); + Register.close(); + + g_print("get height"); + sprintf(keyName, "%s_height", name); + Register.open(keyName, std::ios::binary | std::ios::trunc); + if (!Register.is_open()) + return; + gtk_window_get_size(GTK_WINDOW(hwid), NULL, &val); + newKey.type = 'i'; + newKey.val.i = val; + Register.write((char*) &newKey, sizeof(newKey)); + Register.close(); + + g_print("get posX"); + sprintf(keyName, "%s_posX", name); + Register.open(keyName, std::ios::binary | std::ios::trunc); + if (!Register.is_open()) + return; + gtk_window_get_position(GTK_WINDOW(hwid), &val, NULL); + newKey.type = 'i'; + newKey.val.i = val; + Register.write((char*) &newKey, sizeof(newKey)); + Register.close(); + + g_print("get posY"); + sprintf(keyName, "%s_posY", name); + Register.open(keyName, std::ios::binary | std::ios::trunc); + if (!Register.is_open()) + return; + gtk_window_get_position(GTK_WINDOW(hwid), NULL, &val); + newKey.type = 'i'; + newKey.val.i = val; + Register.write((char*) &newKey, sizeof(newKey)); + Register.close(); + + g_print("get max"); + sprintf(keyName, "%s_maximized", name); + Register.open(keyName, std::ios::binary | std::ios::trunc); + if (!Register.is_open()) + return; + newKey.type = 'b'; + newKey.val.b = gtk_window_is_maximized(GTK_WINDOW(hwid)); + Register.write((char*) &newKey, sizeof(newKey)); + Register.close(); + + free(keyName); + g_print("freezed"); +} + +static void Clamp(LONG *v, LONG min, LONG max) +{ + if(*v < min) *v = min; + if(*v > max) *v = max; +} + +/* + * retrieve a window's position from the registry, or do nothing if there is no info saved + */ +void ThawWindowPosF(HWID hwid, char *subKey, char *name) +{ + char* moveToKeyLocatin = (char *)malloc(strlen(name) + 30); + if(!moveToKeyLocatin) + return; + sprintf(moveToKeyLocatin, "cd %s/%s", LDMICRO_REGISTER, subKey); + if (-1 == system(moveToKeyLocatin)) + return; + free(moveToKeyLocatin); + + char *keyName = (char *)malloc(strlen(name) + 30); + if(!keyName) + return; + + Key newKey1, newKey2; + + /// set size + sprintf(keyName, "%s_width", name); + std::ifstream Register(keyName, std::ios::binary); + if (!Register.is_open()) + return; + Register.read((char*) &newKey1, sizeof(newKey1)); + Register.close(); + + sprintf(keyName, "%s_height", name); + Register.open(keyName, std::ios::binary); + if (!Register.is_open()) + return; + Register.read((char*) &newKey2, sizeof(newKey2)); + Register.close(); + if (newKey1.type == 'i' && newKey2.type == 'i') + gtk_window_resize(GTK_WINDOW(hwid), newKey1.val.i, newKey2.val.i); + + + /// set position + sprintf(keyName, "%s_posX", name); + Register.open(keyName, std::ios::binary); + if (!Register.is_open()) + return; + Register.read((char*) &newKey1, sizeof(newKey1)); + Register.close(); + + sprintf(keyName, "%s_posY", name); + Register.open(keyName, std::ios::binary); + if (!Register.is_open()) + return; + Register.read((char*) &newKey2, sizeof(newKey2)); + Register.close(); + if (newKey1.type == 'i' && newKey2.type == 'i') + gtk_window_move(GTK_WINDOW(hwid), newKey1.val.i, newKey2.val.i); + + + sprintf(keyName, "%s_maximized", name); + Register.open(keyName, std::ios::binary); + if (!Register.is_open()) + return; + Register.read((char*) &newKey1, sizeof(newKey1)); + Register.close(); + if (newKey1.type == 'b') + if (newKey1.val.b) + gtk_window_maximize(GTK_WINDOW(hwid)); + + + /// gtk_window_move handles off-screen window placement + + free(keyName); +} + +/* + * store a DWORD setting in the registry + */ +void FreezeDWORDF(DWORD val, char *subKey, char *name) +{ + char* moveToKeyLocatin = (char *)malloc(strlen(name) + 30); + if(!moveToKeyLocatin) + return; + sprintf(moveToKeyLocatin, "mkdir -p %s/%s", LDMICRO_REGISTER, subKey); + system(moveToKeyLocatin); + sprintf(moveToKeyLocatin, "cd %s/%s", LDMICRO_REGISTER, subKey); + if (-1 == system(moveToKeyLocatin)) + return; + free(moveToKeyLocatin); + + Key newKey; + newKey.type = 'D'; + newKey.val.D = val; + std::ofstream Register(name, std::ios::binary | std::ios::trunc); + Register.write((char*) &newKey, sizeof(newKey)); + Register.close(); +} + +/* + * retrieve a DWORD setting, or return the default if that setting is unavailable + */ +DWORD ThawDWORDF(DWORD val, char *subKey, char *name) +{ + char* moveToKeyLocatin = (char *)malloc(strlen(name) + 30); + if(!moveToKeyLocatin) + return val; + sprintf(moveToKeyLocatin, "cd %s/%s", LDMICRO_REGISTER, subKey); + if (-1 == system(moveToKeyLocatin)) + return val; + free(moveToKeyLocatin); + + Key newKey; + + std::ifstream Register(name, std::ios::binary); + Register.read((char*) &newKey, sizeof(newKey)); + Register.close(); + if(Register.bad()) + return val; + + if(newKey.type == 'D') + return newKey.val.D; + else + return val; +} + +/* + * store a string setting in the registry + */ +void FreezeStringF(char *val, char *subKey, char *name) +{ + char* moveToKeyLocatin = (char *)malloc(strlen(name) + 30); + if(!moveToKeyLocatin) + return; + sprintf(moveToKeyLocatin, "mkdir -p %s/%s", LDMICRO_REGISTER, subKey); + system(moveToKeyLocatin); + sprintf(moveToKeyLocatin, "cd %s/%s", LDMICRO_REGISTER, subKey); + if (-1 == system(moveToKeyLocatin)) + return; + free(moveToKeyLocatin); + + std::ofstream Register(name, std::ios::trunc); + Register << strlen(val)+1 << "\n"; + Register << val; + Register.close(); +} + +/* + * retrieve a string setting, or return the default if that setting is unavailable + */ +void ThawStringF(char *val, int max, char *subKey, char *name) +{ + char* moveToKeyLocatin = (char *)malloc(strlen(name) + 30); + if(!moveToKeyLocatin) + return; + sprintf(moveToKeyLocatin, "cd %s/%s", LDMICRO_REGISTER, subKey); + if (-1 == system(moveToKeyLocatin)) + return; + free(moveToKeyLocatin); + + std::ifstream Register(name); + int l; + Register >> l; + if (l >= max) + return; + Register >> val; +} + diff --git a/ldmicro/lib/freezeLD/freezeLD.h b/ldmicro/lib/freezeLD/freezeLD.h new file mode 100644 index 0000000..f14ef07 --- /dev/null +++ b/ldmicro/lib/freezeLD/freezeLD.h @@ -0,0 +1,52 @@ +/* + * A library for storing parameters in a key file + * + * This library is an analog to the windows freeze library + * developed by Jonathan Westhues. + * + * R Ramana, 2018 + */ + +#ifndef __FREEZE_H +#define __FREEZE_H + +#define LDMICRO_REGISTER "/usr/share/ldmicro" + +#define FREEZE_SUBKEY "LDMicro" + +// #ifndef FREEZE_SUBKEY +// #error must define FREEZE_SUBKEY to a string uniquely identifying the app +// #endif + +#define FreezeWindowPos(hwnd) FreezeWindowPosF(hwnd, FREEZE_SUBKEY, #hwnd) +void FreezeWindowPosF(HWID hWid, char *subKey, char *name); + +#define ThawWindowPos(hwnd) ThawWindowPosF(hwnd, FREEZE_SUBKEY, #hwnd) +void ThawWindowPosF(HWID hWid, char *subKey, char *name); + +#define FreezeDWORD(val) FreezeDWORDF(val, FREEZE_SUBKEY, #val) +void FreezeDWORDF(DWORD val, char *subKey, char *name); + +#define ThawDWORD(val) val = ThawDWORDF(val, FREEZE_SUBKEY, #val) +DWORD ThawDWORDF(DWORD val, char *subKey, char *name); + +#define FreezeString(val) FreezeStringF(val, FREEZE_SUBKEY, #val) +void FreezeStringF(char *val, char *subKey, char *name); + +#define ThawString(val, max) ThawStringF(val, max, FREEZE_SUBKEY, #val) +void ThawStringF(char *val, int max, char *subKey, char *name); + +typedef union regKeyVal{ + int i; + float f; + bool b; + DWORD D; +} KeyVal; + + +typedef struct regKeys{ + char type; + KeyVal val; +} Key; + +#endif diff --git a/ldmicro/lib/linuxUI/CMakeLists.txt b/ldmicro/lib/linuxUI/CMakeLists.txt new file mode 100644 index 0000000..16226dc --- /dev/null +++ b/ldmicro/lib/linuxUI/CMakeLists.txt @@ -0,0 +1,3 @@ +project(LinuxUI) + +add_library(LinuxUI linuxUI.cpp) diff --git a/ldmicro/lib/linuxUI/linuxLD.h b/ldmicro/lib/linuxUI/linuxLD.h new file mode 100644 index 0000000..9aba23d --- /dev/null +++ b/ldmicro/lib/linuxUI/linuxLD.h @@ -0,0 +1,61 @@ +#ifndef __LINUX_LD__ +#define __LINUX_LD__ + +#include "linuxUI.h" + +/// common windows referances for linux + +/// definitions +#define MAX_PATH PATH_MAX +/// CALLBACK or __stdcall os defined empty +#define CALLBACK + +/// typedefs +//typedef int64_t __int64; +typedef bool BOOL; +typedef unsigned char BYTE; +typedef unsigned int DWORD; +typedef long LONG; + +/// all handles will hold a GtkWindow* type +typedef void* PVOID; +typedef GtkWidget* HANDLE; +typedef HANDLE HINSTANCE; +typedef HANDLE HWID; +typedef HANDLE HDC; +typedef HANDLE HMENU; + +typedef GtkWindow* HWND; + +typedef GtkApplication* HAPP; + +/// Check if system is x64 or x86 +#if defined(__UNIX64) +typedef uint64_t UINT_PTR; +#else +typedef unsigned int UINT_PTR; +#endif + +typedef UINT_PTR WPARAM; +typedef unsigned int UINT; + +/// custom classes +class COLORREF : public GdkRGBA{ + public: + COLORREF() + { + this->red = 0.0; + this->green = 0.0; + this->blue = 0.0; + this->alpha = 1.0; + } + COLORREF(int r, int g, int b) + { + this->red = r/255.0; + this->green = g/255.0; + this->blue = b/255.0; + this->alpha = 1.0; + } +}; + +#endif diff --git a/ldmicro/lib/linuxUI/linuxUI.cpp b/ldmicro/lib/linuxUI/linuxUI.cpp new file mode 100644 index 0000000..8237d7d --- /dev/null +++ b/ldmicro/lib/linuxUI/linuxUI.cpp @@ -0,0 +1,18 @@ +#include "linuxUI.h" + +/// Wraper function for gtk_window_has_toplevel_focus +BOOL isFocus(HWID window) +{ + return (BOOL) gtk_window_has_toplevel_focus(GTK_WINDOW(gtk_widget_get_parent_window(GTK_WIDGET(window)))); +} + +COLORREF RGB(int red, int green, int blue) +{ + COLORREF col; + col.red = red/255.0; + col.green = green/255.0; + col.blue = blue/255.0; + col.alpha = 1.0; + + return col; +} \ No newline at end of file diff --git a/ldmicro/lib/linuxUI/linuxUI.h b/ldmicro/lib/linuxUI/linuxUI.h new file mode 100644 index 0000000..3e49de0 --- /dev/null +++ b/ldmicro/lib/linuxUI/linuxUI.h @@ -0,0 +1,19 @@ +#ifndef __LINUX_UI__ +#define __LINUX_UI__ + +/// includes +#include +#include +#include +#include +#include "linuxLD.h" + +/// version control +#define LDMicro_VERSION_MAJOR 1 +#define LDMicro_VERSION_MINOR 0 + +/// functions +BOOL isFocus(HWID); +COLORREF RGB(int, int, int); + +#endif \ No newline at end of file -- cgit From eb8f6932fe45f550bc2b77c1b3e578884ed60d91 Mon Sep 17 00:00:00 2001 From: Rr42 Date: Wed, 30 May 2018 12:11:46 +0530 Subject: Added message box functionality --- ldmicro/lib/freezeLD/freezeLD.cpp | 12 +++++------ ldmicro/lib/linuxUI/CMakeLists.txt | 2 +- ldmicro/lib/linuxUI/linuxLD.cpp | 2 ++ ldmicro/lib/linuxUI/linuxLD.h | 9 +++++---- ldmicro/lib/linuxUI/linuxUI.cpp | 41 +++++++++++++++++++++++++++++++++++++- ldmicro/lib/linuxUI/linuxUI.h | 11 ++++++++++ 6 files changed, 65 insertions(+), 12 deletions(-) create mode 100644 ldmicro/lib/linuxUI/linuxLD.cpp (limited to 'ldmicro/lib') diff --git a/ldmicro/lib/freezeLD/freezeLD.cpp b/ldmicro/lib/freezeLD/freezeLD.cpp index 5241af1..6a52575 100644 --- a/ldmicro/lib/freezeLD/freezeLD.cpp +++ b/ldmicro/lib/freezeLD/freezeLD.cpp @@ -36,7 +36,7 @@ void FreezeWindowPosF(HWID hwid, char *subKey, char *name) Key newKey; int val; - g_print("get width"); + //g_print("get width"); sprintf(keyName, "%s_width", name); std::ofstream Register(keyName, std::ios::binary | std::ios::trunc); if (!Register.is_open()) @@ -47,7 +47,7 @@ void FreezeWindowPosF(HWID hwid, char *subKey, char *name) Register.write((char*) &newKey, sizeof(newKey)); Register.close(); - g_print("get height"); + //g_print("get height"); sprintf(keyName, "%s_height", name); Register.open(keyName, std::ios::binary | std::ios::trunc); if (!Register.is_open()) @@ -58,7 +58,7 @@ void FreezeWindowPosF(HWID hwid, char *subKey, char *name) Register.write((char*) &newKey, sizeof(newKey)); Register.close(); - g_print("get posX"); + //g_print("get posX"); sprintf(keyName, "%s_posX", name); Register.open(keyName, std::ios::binary | std::ios::trunc); if (!Register.is_open()) @@ -69,7 +69,7 @@ void FreezeWindowPosF(HWID hwid, char *subKey, char *name) Register.write((char*) &newKey, sizeof(newKey)); Register.close(); - g_print("get posY"); + //g_print("get posY"); sprintf(keyName, "%s_posY", name); Register.open(keyName, std::ios::binary | std::ios::trunc); if (!Register.is_open()) @@ -80,7 +80,7 @@ void FreezeWindowPosF(HWID hwid, char *subKey, char *name) Register.write((char*) &newKey, sizeof(newKey)); Register.close(); - g_print("get max"); + //g_print("get max"); sprintf(keyName, "%s_maximized", name); Register.open(keyName, std::ios::binary | std::ios::trunc); if (!Register.is_open()) @@ -91,7 +91,7 @@ void FreezeWindowPosF(HWID hwid, char *subKey, char *name) Register.close(); free(keyName); - g_print("freezed"); + //g_print("freezed"); } static void Clamp(LONG *v, LONG min, LONG max) diff --git a/ldmicro/lib/linuxUI/CMakeLists.txt b/ldmicro/lib/linuxUI/CMakeLists.txt index 16226dc..25ba6b2 100644 --- a/ldmicro/lib/linuxUI/CMakeLists.txt +++ b/ldmicro/lib/linuxUI/CMakeLists.txt @@ -1,3 +1,3 @@ project(LinuxUI) -add_library(LinuxUI linuxUI.cpp) +add_library(LinuxUI linuxUI.cpp linuxLD.cpp) diff --git a/ldmicro/lib/linuxUI/linuxLD.cpp b/ldmicro/lib/linuxUI/linuxLD.cpp new file mode 100644 index 0000000..69c5f6e --- /dev/null +++ b/ldmicro/lib/linuxUI/linuxLD.cpp @@ -0,0 +1,2 @@ +#include "linuxUI.h" + diff --git a/ldmicro/lib/linuxUI/linuxLD.h b/ldmicro/lib/linuxUI/linuxLD.h index 9aba23d..d2ce90f 100644 --- a/ldmicro/lib/linuxUI/linuxLD.h +++ b/ldmicro/lib/linuxUI/linuxLD.h @@ -19,14 +19,13 @@ typedef long LONG; /// all handles will hold a GtkWindow* type typedef void* PVOID; -typedef GtkWidget* HANDLE; +typedef PVOID HANDLE; typedef HANDLE HINSTANCE; -typedef HANDLE HWID; typedef HANDLE HDC; -typedef HANDLE HMENU; +typedef GtkWidget* HWID; +typedef GtkWidget* HMENU; typedef GtkWindow* HWND; - typedef GtkApplication* HAPP; /// Check if system is x64 or x86 @@ -58,4 +57,6 @@ class COLORREF : public GdkRGBA{ } }; +/// functions + #endif diff --git a/ldmicro/lib/linuxUI/linuxUI.cpp b/ldmicro/lib/linuxUI/linuxUI.cpp index 8237d7d..ffaf023 100644 --- a/ldmicro/lib/linuxUI/linuxUI.cpp +++ b/ldmicro/lib/linuxUI/linuxUI.cpp @@ -15,4 +15,43 @@ COLORREF RGB(int red, int green, int blue) col.alpha = 1.0; return col; -} \ No newline at end of file +} + +void MessageBox(HWID pWindow, char* message, char* title, UINT mFlags) + { + GtkDialogFlags flags = GTK_DIALOG_DESTROY_WITH_PARENT; + GtkMessageType mType; + GtkButtonsType mButtons; + + if (mFlags & MB_OK == MB_OK) + mButtons = GTK_BUTTONS_OK; + else if (mFlags & MB_OKCANCEL == MB_OKCANCEL) + mButtons = GTK_BUTTONS_OK_CANCEL; + else if (mFlags & MB_YESNO == MB_YESNO) + mButtons = GTK_BUTTONS_YES_NO; + else + mButtons = GTK_BUTTONS_CLOSE; + + if (mFlags & MB_ICONERROR == MB_ICONERROR) + mType = GTK_MESSAGE_ERROR; + else if (mFlags & MB_ICONQUESTION == MB_ICONQUESTION) + mType = GTK_MESSAGE_QUESTION; + else if (mFlags & MB_ICONWARNING == MB_ICONWARNING) + mType = GTK_MESSAGE_WARNING; + else if (mFlags & MB_ICONINFORMATION == MB_ICONINFORMATION) + mType = GTK_MESSAGE_INFO; + else + mType = GTK_MESSAGE_OTHER; + + mType = GTK_MESSAGE_ERROR; + HWID dialog = gtk_message_dialog_new (GTK_WINDOW(pWindow), + flags, + mType, + mButtons, + message); + gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG(dialog), + title); + gtk_message_dialog_format_secondary_markup(GTK_MESSAGE_DIALOG(dialog), message); + gtk_dialog_run (GTK_DIALOG (dialog)); + gtk_widget_destroy (dialog); + } \ No newline at end of file diff --git a/ldmicro/lib/linuxUI/linuxUI.h b/ldmicro/lib/linuxUI/linuxUI.h index 3e49de0..f6105bc 100644 --- a/ldmicro/lib/linuxUI/linuxUI.h +++ b/ldmicro/lib/linuxUI/linuxUI.h @@ -12,8 +12,19 @@ #define LDMicro_VERSION_MAJOR 1 #define LDMicro_VERSION_MINOR 0 +/// Flags +#define MB_OK 0x00000000L +#define MB_OKCANCEL 0x00000001L +#define MB_YESNO 0x00000004L + +#define MB_ICONERROR 0x00000010L +#define MB_ICONQUESTION 0x00000020L +#define MB_ICONWARNING 0x00000030L +#define MB_ICONINFORMATION 0x00000040L + /// functions BOOL isFocus(HWID); COLORREF RGB(int, int, int); +void MessageBox(HWID, char*, char*, UINT); #endif \ No newline at end of file -- cgit From 8f1f63ff88e62cb47cad286481033275e8490650 Mon Sep 17 00:00:00 2001 From: Rr42 Date: Wed, 30 May 2018 16:57:42 +0530 Subject: ported GetSaveFileName function from windows.h --- ldmicro/lib/freezeLD/freezeLD.cpp | 2 +- ldmicro/lib/linuxUI/linuxLD.h | 17 ++++++++++++- ldmicro/lib/linuxUI/linuxUI.cpp | 51 ++++++++++++++++++++++++++++++++++++++- ldmicro/lib/linuxUI/linuxUI.h | 20 +++++++++++++++ 4 files changed, 87 insertions(+), 3 deletions(-) (limited to 'ldmicro/lib') diff --git a/ldmicro/lib/freezeLD/freezeLD.cpp b/ldmicro/lib/freezeLD/freezeLD.cpp index 6a52575..0bbd33f 100644 --- a/ldmicro/lib/freezeLD/freezeLD.cpp +++ b/ldmicro/lib/freezeLD/freezeLD.cpp @@ -18,7 +18,7 @@ */ void FreezeWindowPosF(HWID hwid, char *subKey, char *name) { - g_print("freezing"); + //g_print("freezing"); char* moveToKeyLocatin = (char *)malloc(strlen(subKey) + 35); if(!moveToKeyLocatin) return; diff --git a/ldmicro/lib/linuxUI/linuxLD.h b/ldmicro/lib/linuxUI/linuxLD.h index d2ce90f..c1b0829 100644 --- a/ldmicro/lib/linuxUI/linuxLD.h +++ b/ldmicro/lib/linuxUI/linuxLD.h @@ -9,13 +9,28 @@ #define MAX_PATH PATH_MAX /// CALLBACK or __stdcall os defined empty #define CALLBACK - +#define CONST const /// typedefs //typedef int64_t __int64; typedef bool BOOL; typedef unsigned char BYTE; typedef unsigned int DWORD; typedef long LONG; +typedef wchar_t WCHAR; +typedef char CHAR; +typedef CONST WCHAR *LPCWSTR; +typedef CONST CHAR *LPCSTR; /// should be __nullterminated +#ifdef UNICODE + typedef LPCWSTR LPCTSTR; +#else + typedef LPCSTR LPCTSTR; +#endif + +#ifdef UNICODE + typedef LPWSTR LPTSTR; +#else + typedef LPSTR LPTSTR; +#endif /// all handles will hold a GtkWindow* type typedef void* PVOID; diff --git a/ldmicro/lib/linuxUI/linuxUI.cpp b/ldmicro/lib/linuxUI/linuxUI.cpp index ffaf023..74269d9 100644 --- a/ldmicro/lib/linuxUI/linuxUI.cpp +++ b/ldmicro/lib/linuxUI/linuxUI.cpp @@ -54,4 +54,53 @@ void MessageBox(HWID pWindow, char* message, char* title, UINT mFlags) gtk_message_dialog_format_secondary_markup(GTK_MESSAGE_DIALOG(dialog), message); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); - } \ No newline at end of file + } + +BOOL GetSaveFileName(OPENFILENAME ofn) +{ + GtkWidget *dialog; + GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN; + + dialog = gtk_file_chooser_dialog_new ("Open File", + GTK_WINDOW(window), + action, + "_Cancel", + GTK_RESPONSE_CANCEL, + "_Open", + GTK_RESPONSE_ACCEPT, + NULL); + + GtkFileFilter *filter = gtk_file_filter_new (); + gtk_file_filter_add_pattern (filter, "*"); + gtk_file_filter_set_name (filter, "All files"); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); + + filter = gtk_file_filter_new (); + gtk_file_filter_add_pattern (filter, "*.c"); + gtk_file_filter_add_pattern (filter, "*.cpp"); + gtk_file_filter_set_name (filter, "C source files"); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); + + filter = gtk_file_filter_new (); + gtk_file_filter_add_pattern (filter, "*.h"); + gtk_file_filter_set_name (filter, "C hedder files"); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); + + filter = gtk_file_filter_new (); + gtk_file_filter_add_pattern (filter, "*.hex"); + gtk_file_filter_set_name (filter, "hex files"); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); + + filter = gtk_file_filter_new (); + gtk_file_filter_add_pattern (filter, "*.int"); + gtk_file_filter_set_name (filter, "int files"); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); + gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (dialog), filter); + + BOOL exitStatus = gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT; + if (exitStatus) + filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); + gtk_widget_destroy (dialog); + + return exitStatus; +} \ No newline at end of file diff --git a/ldmicro/lib/linuxUI/linuxUI.h b/ldmicro/lib/linuxUI/linuxUI.h index f6105bc..920dcce 100644 --- a/ldmicro/lib/linuxUI/linuxUI.h +++ b/ldmicro/lib/linuxUI/linuxUI.h @@ -13,6 +13,7 @@ #define LDMicro_VERSION_MINOR 0 /// Flags +/// message box #define MB_OK 0x00000000L #define MB_OKCANCEL 0x00000001L #define MB_YESNO 0x00000004L @@ -22,9 +23,28 @@ #define MB_ICONWARNING 0x00000030L #define MB_ICONINFORMATION 0x00000040L +/// open/save file +#define OFN_PATHMUSTEXIST 0x00000800 +#define OFN_HIDEREADONLY 0x00000004 +#define OFN_OVERWRITEPROMPT 0x00000002 + + +/// data types +typedef struct OpenFileInfoData { + DWORD lStructSize; + HWID parentWindow; + LPCTSTR lpstrFilter; + LPTSTR lpstrFile; + DWORD nMaxFile; + LPCTSTR lpstrTitle; + DWORD Flags; + LPCTSTR lpstrDefExt; +} OPENFILENAME; + /// functions BOOL isFocus(HWID); COLORREF RGB(int, int, int); void MessageBox(HWID, char*, char*, UINT); +BOOL GetSaveFileName(HWID, char*); #endif \ No newline at end of file -- cgit From 39d3eeb5fc8c969f8eed03e0c1fc818453cca6df Mon Sep 17 00:00:00 2001 From: NatsuDrag9 Date: Thu, 31 May 2018 11:43:09 +0530 Subject: Ported the function updating titlebar. --- ldmicro/lib/linuxUI/linuxLD.h | 10 ++--- ldmicro/lib/linuxUI/linuxUI.cpp | 94 ++++++++++++++++++++++------------------- ldmicro/lib/linuxUI/linuxUI.h | 20 ++++----- 3 files changed, 65 insertions(+), 59 deletions(-) (limited to 'ldmicro/lib') diff --git a/ldmicro/lib/linuxUI/linuxLD.h b/ldmicro/lib/linuxUI/linuxLD.h index c1b0829..fc60259 100644 --- a/ldmicro/lib/linuxUI/linuxLD.h +++ b/ldmicro/lib/linuxUI/linuxLD.h @@ -26,11 +26,11 @@ typedef CONST CHAR *LPCSTR; /// should be __nullterminated typedef LPCSTR LPCTSTR; #endif -#ifdef UNICODE - typedef LPWSTR LPTSTR; -#else - typedef LPSTR LPTSTR; -#endif +// #ifdef UNICODE +// typedef LPWSTR LPTSTR; +// #else +// typedef LPSTR LPTSTR; +// #endif /// all handles will hold a GtkWindow* type typedef void* PVOID; diff --git a/ldmicro/lib/linuxUI/linuxUI.cpp b/ldmicro/lib/linuxUI/linuxUI.cpp index 6dabd80..8904f77 100644 --- a/ldmicro/lib/linuxUI/linuxUI.cpp +++ b/ldmicro/lib/linuxUI/linuxUI.cpp @@ -38,6 +38,12 @@ int ScrollWidth; // Width of scrolli int ScrollHeight; // Height of scrolling HWID IoList; // Window for list view +// ldmicro.cpp +char CurrentSaveFile[MAX_PATH]; + +// Simulation Mode +BOOL InSimulationMode; + /// Wraper function for gtk_window_has_toplevel_focus BOOL isFocus(HWID window) { @@ -94,51 +100,51 @@ void MessageBox(HWID pWindow, char* message, char* title, UINT mFlags) gtk_widget_destroy (dialog); } -BOOL GetSaveFileName(OPENFILENAME ofn) -{ - GtkWidget *dialog; - GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN; - - dialog = gtk_file_chooser_dialog_new ("Open File", - GTK_WINDOW(window), - action, - "_Cancel", - GTK_RESPONSE_CANCEL, - "_Open", - GTK_RESPONSE_ACCEPT, - NULL); - - GtkFileFilter *filter = gtk_file_filter_new (); - gtk_file_filter_add_pattern (filter, "*"); - gtk_file_filter_set_name (filter, "All files"); - gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); - - filter = gtk_file_filter_new (); - gtk_file_filter_add_pattern (filter, "*.c"); - gtk_file_filter_add_pattern (filter, "*.cpp"); - gtk_file_filter_set_name (filter, "C source files"); - gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); - - filter = gtk_file_filter_new (); - gtk_file_filter_add_pattern (filter, "*.h"); - gtk_file_filter_set_name (filter, "C hedder files"); - gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); +// BOOL GetSaveFileName(OPENFILENAME ofn) +// { +// GtkWidget *dialog; +// GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN; + +// dialog = gtk_file_chooser_dialog_new ("Open File", +// GTK_WINDOW(window), +// action, +// "_Cancel", +// GTK_RESPONSE_CANCEL, +// "_Open", +// GTK_RESPONSE_ACCEPT, +// NULL); + +// GtkFileFilter *filter = gtk_file_filter_new (); +// gtk_file_filter_add_pattern (filter, "*"); +// gtk_file_filter_set_name (filter, "All files"); +// gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); + +// filter = gtk_file_filter_new (); +// gtk_file_filter_add_pattern (filter, "*.c"); +// gtk_file_filter_add_pattern (filter, "*.cpp"); +// gtk_file_filter_set_name (filter, "C source files"); +// gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); + +// filter = gtk_file_filter_new (); +// gtk_file_filter_add_pattern (filter, "*.h"); +// gtk_file_filter_set_name (filter, "C hedder files"); +// gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); - filter = gtk_file_filter_new (); - gtk_file_filter_add_pattern (filter, "*.hex"); - gtk_file_filter_set_name (filter, "hex files"); - gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); +// filter = gtk_file_filter_new (); +// gtk_file_filter_add_pattern (filter, "*.hex"); +// gtk_file_filter_set_name (filter, "hex files"); +// gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); - filter = gtk_file_filter_new (); - gtk_file_filter_add_pattern (filter, "*.int"); - gtk_file_filter_set_name (filter, "int files"); - gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); - gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (dialog), filter); +// filter = gtk_file_filter_new (); +// gtk_file_filter_add_pattern (filter, "*.int"); +// gtk_file_filter_set_name (filter, "int files"); +// gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); +// gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (dialog), filter); - BOOL exitStatus = gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT; - if (exitStatus) - filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); - gtk_widget_destroy (dialog); +// BOOL exitStatus = gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT; +// if (exitStatus) +// filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); +// gtk_widget_destroy (dialog); - return exitStatus; -} \ No newline at end of file +// return exitStatus; +// } \ No newline at end of file diff --git a/ldmicro/lib/linuxUI/linuxUI.h b/ldmicro/lib/linuxUI/linuxUI.h index 920dcce..18afd60 100644 --- a/ldmicro/lib/linuxUI/linuxUI.h +++ b/ldmicro/lib/linuxUI/linuxUI.h @@ -30,16 +30,16 @@ /// data types -typedef struct OpenFileInfoData { - DWORD lStructSize; - HWID parentWindow; - LPCTSTR lpstrFilter; - LPTSTR lpstrFile; - DWORD nMaxFile; - LPCTSTR lpstrTitle; - DWORD Flags; - LPCTSTR lpstrDefExt; -} OPENFILENAME; +// typedef struct OpenFileInfoData { +// DWORD lStructSize; +// HWID parentWindow; +// LPCTSTR lpstrFilter; +// LPTSTR lpstrFile; +// DWORD nMaxFile; +// LPCTSTR lpstrTitle; +// DWORD Flags; +// LPCTSTR lpstrDefExt; +// } OPENFILENAME; /// functions BOOL isFocus(HWID); -- cgit From 82eb7fb321374f9cf1cebfc141e2594a7141a4c0 Mon Sep 17 00:00:00 2001 From: Rr42 Date: Thu, 31 May 2018 12:33:57 +0530 Subject: Added File selection dialogue --- ldmicro/lib/linuxUI/linuxLD.h | 4 ++ ldmicro/lib/linuxUI/linuxUI.cpp | 81 +++++++++++++++++++++++++++-------------- ldmicro/lib/linuxUI/linuxUI.h | 4 +- 3 files changed, 59 insertions(+), 30 deletions(-) (limited to 'ldmicro/lib') diff --git a/ldmicro/lib/linuxUI/linuxLD.h b/ldmicro/lib/linuxUI/linuxLD.h index c1b0829..db2a42f 100644 --- a/ldmicro/lib/linuxUI/linuxLD.h +++ b/ldmicro/lib/linuxUI/linuxLD.h @@ -20,12 +20,16 @@ typedef wchar_t WCHAR; typedef char CHAR; typedef CONST WCHAR *LPCWSTR; typedef CONST CHAR *LPCSTR; /// should be __nullterminated + #ifdef UNICODE typedef LPCWSTR LPCTSTR; #else typedef LPCSTR LPCTSTR; #endif +typedef WCHAR *LPWSTR; +typedef CHAR *LPSTR; + #ifdef UNICODE typedef LPWSTR LPTSTR; #else diff --git a/ldmicro/lib/linuxUI/linuxUI.cpp b/ldmicro/lib/linuxUI/linuxUI.cpp index 6dabd80..747b52e 100644 --- a/ldmicro/lib/linuxUI/linuxUI.cpp +++ b/ldmicro/lib/linuxUI/linuxUI.cpp @@ -94,51 +94,76 @@ void MessageBox(HWID pWindow, char* message, char* title, UINT mFlags) gtk_widget_destroy (dialog); } -BOOL GetSaveFileName(OPENFILENAME ofn) +BOOL GetSaveFileName(OPENFILENAME *ofn) { GtkWidget *dialog; GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN; - dialog = gtk_file_chooser_dialog_new ("Open File", - GTK_WINDOW(window), + dialog = gtk_file_chooser_dialog_new (ofn->lpstrTitle, + GTK_WINDOW(ofn->parentWindow), action, "_Cancel", GTK_RESPONSE_CANCEL, "_Open", GTK_RESPONSE_ACCEPT, NULL); + //g_print("filter created\n"); + + if (ofn->Flags & OFN_OVERWRITEPROMPT == OFN_OVERWRITEPROMPT) + gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dialog), TRUE); GtkFileFilter *filter = gtk_file_filter_new (); - gtk_file_filter_add_pattern (filter, "*"); - gtk_file_filter_set_name (filter, "All files"); - gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); - - filter = gtk_file_filter_new (); - gtk_file_filter_add_pattern (filter, "*.c"); - gtk_file_filter_add_pattern (filter, "*.cpp"); - gtk_file_filter_set_name (filter, "C source files"); - gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); - - filter = gtk_file_filter_new (); - gtk_file_filter_add_pattern (filter, "*.h"); - gtk_file_filter_set_name (filter, "C hedder files"); - gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); + char* strFilter = new char[strlen(ofn->lpstrFilter)]; + DWORD strFilterLen = 0; + BOOL filterResetFlag = FALSE; - filter = gtk_file_filter_new (); - gtk_file_filter_add_pattern (filter, "*.hex"); - gtk_file_filter_set_name (filter, "hex files"); - gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); + for (int i = 0; !(ofn->lpstrFilter[i] == '\0' && ofn->lpstrFilter[i-1] == '\0'); ++i) + { + memcpy (strFilter + strFilterLen, &ofn->lpstrFilter[i], 1 ); + ++strFilterLen; + if (ofn->lpstrFilter[i] == '\0') + if (filterResetFlag) + { + gtk_file_filter_add_pattern (GTK_FILE_FILTER(filter), strFilter); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER(dialog), filter); + filter = gtk_file_filter_new (); + strFilterLen = 0; + //g_print("filter pat: %s\n", strFilter); + //g_print("filter reset\n"); + filterResetFlag = FALSE; + } + else + { + gtk_file_filter_set_name (GTK_FILE_FILTER(filter), strFilter); + //g_print("filter name: %s\n", strFilter); + strFilterLen = 0; + filterResetFlag = TRUE; + } + } + //g_print("filter rules added\n"); - filter = gtk_file_filter_new (); - gtk_file_filter_add_pattern (filter, "*.int"); - gtk_file_filter_set_name (filter, "int files"); - gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); - gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (dialog), filter); + sprintf(strFilter, "*.%s", ofn->lpstrDefExt); + gtk_file_filter_add_pattern (GTK_FILE_FILTER(filter), strFilter); + //gtk_file_filter_set_name (filter, "int files"); + gtk_file_chooser_set_filter (GTK_FILE_CHOOSER(dialog), filter); - BOOL exitStatus = gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT; + delete strFilter; + + //g_print("default filter set\n"); + + BOOL exitStatus = gtk_dialog_run (GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT; if (exitStatus) - filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); + { + char* str; + str = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER(dialog)); + strcpy(ofn->lpstrFile, str); + g_free(str); + } + //g_print("file path saved: %s\n", ofn->lpstrFile); + gtk_widget_destroy (dialog); + //g_print("exit\n"); + return exitStatus; } \ No newline at end of file diff --git a/ldmicro/lib/linuxUI/linuxUI.h b/ldmicro/lib/linuxUI/linuxUI.h index 920dcce..904599e 100644 --- a/ldmicro/lib/linuxUI/linuxUI.h +++ b/ldmicro/lib/linuxUI/linuxUI.h @@ -33,8 +33,8 @@ typedef struct OpenFileInfoData { DWORD lStructSize; HWID parentWindow; - LPCTSTR lpstrFilter; LPTSTR lpstrFile; + LPCTSTR lpstrFilter; DWORD nMaxFile; LPCTSTR lpstrTitle; DWORD Flags; @@ -45,6 +45,6 @@ typedef struct OpenFileInfoData { BOOL isFocus(HWID); COLORREF RGB(int, int, int); void MessageBox(HWID, char*, char*, UINT); -BOOL GetSaveFileName(HWID, char*); +BOOL GetSaveFileName(OPENFILENAME* ); #endif \ No newline at end of file -- cgit From 0e41f9a700e928970f79b20d8d6a0f9993b16df6 Mon Sep 17 00:00:00 2001 From: NatsuDrag9 Date: Thu, 31 May 2018 12:35:36 +0530 Subject: Rearranged variables --- ldmicro/lib/linuxUI/linuxUI.cpp | 45 ++--------------------------------------- 1 file changed, 2 insertions(+), 43 deletions(-) (limited to 'ldmicro/lib') diff --git a/ldmicro/lib/linuxUI/linuxUI.cpp b/ldmicro/lib/linuxUI/linuxUI.cpp index 8904f77..3dbe1bb 100644 --- a/ldmicro/lib/linuxUI/linuxUI.cpp +++ b/ldmicro/lib/linuxUI/linuxUI.cpp @@ -1,49 +1,8 @@ #include "linuxUI.h" /// Menu Variables -HWID window; -HWID menu_box; // Box for alignment -HWID packed_menu_box; // Stores the packed box -HWID FileMenu; // File Menu -HWID EditMenu; // Edit Menu -HWID settings; // Settings Menu -HWID ProcessorMenu; // Processor Menu -HWID InstructionMenu; // Instruction Menu -HWID compile; // Compile Menu -HWID help; // Help Menu -HWID SimulateMenu; // Simulate Menu -HWID menu_bar; // Menu Bar -HWID file_label; // File menu label -HWID edit_label; // Edit menu label -HWID instruction_label; // Instruction menu label -HWID settings_label; // Settings menu label -HWID compile_label; // Compile menu label -HWID help_label; // Help menu label -HWID simulate_label; // Simulate menu label -HWID file_menu_items; // File menu item -HWID edit_menu_items; // Edit menu item -HWID instruction_menu_items; // Instruction menu item -HWID settings_menu_items; // Settings menu item -HWID processor_menu_items; // Processor menu items -HWID compile_menu_items; // Compile menu item -HWID help_menu_items; // Help menu item -HWID simulate_menu_items; // Simulate menu item -HWID file_menu_separator; // File menu separator -HWID edit_menu_separator; // Edit menu separator -HWID instruction_menu_separator; // Instruction menu separator -HWID simulate_menu_separator; // Simulate menu separator - -//Scrollbars for the ladder logic area -int ScrollWidth; // Width of scrolling -int ScrollHeight; // Height of scrolling -HWID IoList; // Window for list view - -// ldmicro.cpp -char CurrentSaveFile[MAX_PATH]; - -// Simulation Mode -BOOL InSimulationMode; - + HWID window; + /// Wraper function for gtk_window_has_toplevel_focus BOOL isFocus(HWID window) { -- cgit From 3cf43f746d445fdce77af21718881f45fe78d06b Mon Sep 17 00:00:00 2001 From: NatsuDrag9 Date: Thu, 31 May 2018 13:19:50 +0530 Subject: Updated the completed functions. --- ldmicro/lib/linuxUI/linuxLD.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ldmicro/lib') diff --git a/ldmicro/lib/linuxUI/linuxLD.h b/ldmicro/lib/linuxUI/linuxLD.h index db2a42f..0e4f682 100644 --- a/ldmicro/lib/linuxUI/linuxLD.h +++ b/ldmicro/lib/linuxUI/linuxLD.h @@ -78,4 +78,4 @@ class COLORREF : public GdkRGBA{ /// functions -#endif +#endif \ No newline at end of file -- cgit From 3168849d576631d4316065c18c741ce18f59e48b Mon Sep 17 00:00:00 2001 From: Rr42 Date: Thu, 31 May 2018 14:04:33 +0530 Subject: Fixed bugs in MessageBox --- ldmicro/lib/linuxUI/linuxUI.cpp | 46 ++++++++++++++++++++++++++--------------- ldmicro/lib/linuxUI/linuxUI.h | 22 +++++++++++++------- 2 files changed, 43 insertions(+), 25 deletions(-) (limited to 'ldmicro/lib') diff --git a/ldmicro/lib/linuxUI/linuxUI.cpp b/ldmicro/lib/linuxUI/linuxUI.cpp index 747b52e..353b31f 100644 --- a/ldmicro/lib/linuxUI/linuxUI.cpp +++ b/ldmicro/lib/linuxUI/linuxUI.cpp @@ -55,28 +55,18 @@ COLORREF RGB(int red, int green, int blue) return col; } -void MessageBox(HWID pWindow, char* message, char* title, UINT mFlags) +int MessageBox(HWID pWindow, char* message, char* title, UINT mFlags) { GtkDialogFlags flags = GTK_DIALOG_DESTROY_WITH_PARENT; GtkMessageType mType; - GtkButtonsType mButtons; - - if (mFlags & MB_OK == MB_OK) - mButtons = GTK_BUTTONS_OK; - else if (mFlags & MB_OKCANCEL == MB_OKCANCEL) - mButtons = GTK_BUTTONS_OK_CANCEL; - else if (mFlags & MB_YESNO == MB_YESNO) - mButtons = GTK_BUTTONS_YES_NO; - else - mButtons = GTK_BUTTONS_CLOSE; - if (mFlags & MB_ICONERROR == MB_ICONERROR) + if ((mFlags & MB_ICONERROR) == MB_ICONERROR) mType = GTK_MESSAGE_ERROR; - else if (mFlags & MB_ICONQUESTION == MB_ICONQUESTION) + else if ((mFlags & MB_ICONQUESTION) == MB_ICONQUESTION) mType = GTK_MESSAGE_QUESTION; - else if (mFlags & MB_ICONWARNING == MB_ICONWARNING) + else if ((mFlags & MB_ICONWARNING) == MB_ICONWARNING) mType = GTK_MESSAGE_WARNING; - else if (mFlags & MB_ICONINFORMATION == MB_ICONINFORMATION) + else if ((mFlags & MB_ICONINFORMATION) == MB_ICONINFORMATION) mType = GTK_MESSAGE_INFO; else mType = GTK_MESSAGE_OTHER; @@ -85,13 +75,35 @@ void MessageBox(HWID pWindow, char* message, char* title, UINT mFlags) HWID dialog = gtk_message_dialog_new (GTK_WINDOW(pWindow), flags, mType, - mButtons, + GTK_BUTTONS_NONE, message); + + if ((mFlags & MB_OKCANCEL) == MB_OKCANCEL) + { + gtk_dialog_add_button(GTK_DIALOG(dialog), "_OK", IDOK); + gtk_dialog_add_button(GTK_DIALOG(dialog), "_CANCEL", IDCANCEL); + } + else if ((mFlags & MB_YESNO) == MB_YESNO) + { + gtk_dialog_add_button(GTK_DIALOG(dialog), "_YES", IDYES); + gtk_dialog_add_button(GTK_DIALOG(dialog), "_NO", IDNO); + } + else if ((mFlags & MB_YESNOCANCEL) == MB_YESNOCANCEL) + { + gtk_dialog_add_button(GTK_DIALOG(dialog), "_YES", IDYES); + gtk_dialog_add_button(GTK_DIALOG(dialog), "_NO", IDNO); + gtk_dialog_add_button(GTK_DIALOG(dialog), "_CANCEL", IDCANCEL); + } + else + gtk_dialog_add_button(GTK_DIALOG(dialog), "OK", IDOK); + gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG(dialog), title); gtk_message_dialog_format_secondary_markup(GTK_MESSAGE_DIALOG(dialog), message); - gtk_dialog_run (GTK_DIALOG (dialog)); + int result = gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); + + return result; } BOOL GetSaveFileName(OPENFILENAME *ofn) diff --git a/ldmicro/lib/linuxUI/linuxUI.h b/ldmicro/lib/linuxUI/linuxUI.h index 904599e..0efffca 100644 --- a/ldmicro/lib/linuxUI/linuxUI.h +++ b/ldmicro/lib/linuxUI/linuxUI.h @@ -14,19 +14,25 @@ /// Flags /// message box -#define MB_OK 0x00000000L -#define MB_OKCANCEL 0x00000001L +#define MB_OK 0x00000001L +#define MB_OKCANCEL 0x00000002L #define MB_YESNO 0x00000004L +#define MB_YESNOCANCEL 0x00000008L + +#define IDOK 1 +#define IDCANCEL 2 +#define IDYES 3 +#define IDNO 4 #define MB_ICONERROR 0x00000010L #define MB_ICONQUESTION 0x00000020L -#define MB_ICONWARNING 0x00000030L -#define MB_ICONINFORMATION 0x00000040L +#define MB_ICONWARNING 0x00000040L +#define MB_ICONINFORMATION 0x00000080L /// open/save file -#define OFN_PATHMUSTEXIST 0x00000800 -#define OFN_HIDEREADONLY 0x00000004 -#define OFN_OVERWRITEPROMPT 0x00000002 +#define OFN_PATHMUSTEXIST 0x00000100L +#define OFN_HIDEREADONLY 0x00000200L +#define OFN_OVERWRITEPROMPT 0x00000400L /// data types @@ -44,7 +50,7 @@ typedef struct OpenFileInfoData { /// functions BOOL isFocus(HWID); COLORREF RGB(int, int, int); -void MessageBox(HWID, char*, char*, UINT); +int MessageBox(HWID, char*, char*, UINT); BOOL GetSaveFileName(OPENFILENAME* ); #endif \ No newline at end of file -- cgit From 1f483baf37359032ca3224a5d07853aaf725def4 Mon Sep 17 00:00:00 2001 From: Rr42 Date: Mon, 4 Jun 2018 15:25:44 +0530 Subject: Commented all GUI code for core test --- ldmicro/lib/linuxUI/linuxLD.h | 2 +- ldmicro/lib/linuxUI/linuxUI.cpp | 4 ++-- ldmicro/lib/linuxUI/linuxUI.h | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) (limited to 'ldmicro/lib') diff --git a/ldmicro/lib/linuxUI/linuxLD.h b/ldmicro/lib/linuxUI/linuxLD.h index db2a42f..7878733 100644 --- a/ldmicro/lib/linuxUI/linuxLD.h +++ b/ldmicro/lib/linuxUI/linuxLD.h @@ -14,6 +14,7 @@ //typedef int64_t __int64; typedef bool BOOL; typedef unsigned char BYTE; +typedef unsigned short WORD; typedef unsigned int DWORD; typedef long LONG; typedef wchar_t WCHAR; @@ -77,5 +78,4 @@ class COLORREF : public GdkRGBA{ }; /// functions - #endif diff --git a/ldmicro/lib/linuxUI/linuxUI.cpp b/ldmicro/lib/linuxUI/linuxUI.cpp index 353b31f..54b42e2 100644 --- a/ldmicro/lib/linuxUI/linuxUI.cpp +++ b/ldmicro/lib/linuxUI/linuxUI.cpp @@ -34,8 +34,8 @@ HWID instruction_menu_separator; // Instruction menu HWID simulate_menu_separator; // Simulate menu separator //Scrollbars for the ladder logic area -int ScrollWidth; // Width of scrolling -int ScrollHeight; // Height of scrolling +// int ScrollWidth; // Width of scrolling +// int ScrollHeight; // Height of scrolling HWID IoList; // Window for list view /// Wraper function for gtk_window_has_toplevel_focus diff --git a/ldmicro/lib/linuxUI/linuxUI.h b/ldmicro/lib/linuxUI/linuxUI.h index 0efffca..199dfc3 100644 --- a/ldmicro/lib/linuxUI/linuxUI.h +++ b/ldmicro/lib/linuxUI/linuxUI.h @@ -7,6 +7,7 @@ #include #include #include "linuxLD.h" +//#include "windows.h" /// version control #define LDMicro_VERSION_MAJOR 1 -- cgit From 7dbf07b87362bb883ce7d950371a6e5c1f355dd7 Mon Sep 17 00:00:00 2001 From: Rr42 Date: Tue, 5 Jun 2018 17:26:16 +0530 Subject: Added heap meamory handling (HeapCreate, HeapAlloc and HeepFree) --- ldmicro/lib/linuxUI/linuxLD.cpp | 81 +++++++++++++++++++++++++++++++++++++++++ ldmicro/lib/linuxUI/linuxLD.h | 48 +++++++++++++++++++++--- 2 files changed, 124 insertions(+), 5 deletions(-) (limited to 'ldmicro/lib') diff --git a/ldmicro/lib/linuxUI/linuxLD.cpp b/ldmicro/lib/linuxUI/linuxLD.cpp index 69c5f6e..487905c 100644 --- a/ldmicro/lib/linuxUI/linuxLD.cpp +++ b/ldmicro/lib/linuxUI/linuxLD.cpp @@ -1,2 +1,83 @@ #include "linuxUI.h" +std::vector HeapRecords; + +HANDLE HeapCreate(DWORD flOptions, SIZE_T dwInitialSize, SIZE_T dwMaximumSize) +{ + HANDLE hHeap = NULL; + HEAPRECORD hHeapRecord; + hHeapRecord.dwMaximumSize = dwMaximumSize; + hHeap = malloc(dwInitialSize); + + if (hHeap == NULL) + return NULL; + + hHeapRecord.dwSize = dwInitialSize; + hHeapRecord.hHeap = hHeap; + hHeapRecord.dwAllocatedSizeOffset = 0; + hHeapRecord.HeapID = hHeapRecords.size()+1; + HeapRecords.push_back(hHeapRecord); + + return hHeap; +} + +LPVOID HeapAlloc(HANDLE hHeap, DWORD dwFlags, SIZE_T dwBytes) +{ + auto it = std::find_if(HeapRecords.begin(), HeapRecords.end(), [&hHeap](HEAPRECORD &Record) { return Record.hHeap == hHeap; }); + + if (it == HeapRecords.end()) + return NULL; + + if ((*it).dwAllocatedSizeOffset + dwBytes > (*it).dwSize) + { + if ((*it).dwMaximumSize != 0) + if((*it).dwAllocatedSizeOffset + dwBytes > (*it).dwMaximumSize) + return NULL; + + (*it).hHeap = realloc((*it).hHeap, (*it).dwAllocatedSizeOffset + dwBytes); + hHeap = (*it).hHeap; + } + + /// HEAP_ZERO_MEMORY is set by default + DWORD flags = MAP_ANONYMOUS; + if ( (dwFlags & HEAP_ZERO_MEMORY) == HEAP_ZERO_MEMORY) + flags = MAP_ANONYMOUS | MAP_UNINITIALIZED; + //void * memset ( void * ptr, int value, size_t num ); + LPVOID p = mmap(hHeap + (*it).dwAllocatedSizeOffset, dwBytes, PROT_EXEC, flags, -1, 0); + + if (p == NULL) + return NULL; + + (*it).dwAllocatedSizeOffset += dwBytes; + HEAPCHUNCK chunck; + chunck.Chunck = p; + chunck.dwSize = dwBytes; + (*it).Element.push_back(chunck); + + return p; +} + +BOOL HeapFree(HANDLE hHeap, DWORD dwFlags, LPVOID lpMem) +{ + auto heap_it = std::find_if(HeapRecords.begin(), HeapRecords.end(), [&hHeap](HEAPRECORD &Record) { return Record.hHeap == hHeap; }); + + if (heap_it == HeapRecords.end()) + return NULL; + + auto chunck_it = std::find_if((*heap_it).Element.begin(), (*heap_it).Element.end(), [&lpMem](HEAPCHUNCK &Chunck) { return Chunck.Chunck == lpMem; }); + + if (chunck_it == (*heap_it).Element.end()) + return NULL; + + int result = munmap((*chunck_it).Chunck, (*chunck_it).dwSize); + + if (result == 0) + { + (*heap_it).Element.erase(chunck_it); + return TRUE; + } + else + return FALSE; + +} + diff --git a/ldmicro/lib/linuxUI/linuxLD.h b/ldmicro/lib/linuxUI/linuxLD.h index 7878733..525f6a8 100644 --- a/ldmicro/lib/linuxUI/linuxLD.h +++ b/ldmicro/lib/linuxUI/linuxLD.h @@ -2,6 +2,8 @@ #define __LINUX_LD__ #include "linuxUI.h" +#include +#include /// common windows referances for linux @@ -10,12 +12,16 @@ /// CALLBACK or __stdcall os defined empty #define CALLBACK #define CONST const + +#define HEAP_ZERO_MEMORY 0x00000008 + /// typedefs //typedef int64_t __int64; typedef bool BOOL; typedef unsigned char BYTE; typedef unsigned short WORD; typedef unsigned int DWORD; +typedef size_t SIZE_T; typedef long LONG; typedef wchar_t WCHAR; typedef char CHAR; @@ -38,15 +44,16 @@ typedef CHAR *LPSTR; #endif /// all handles will hold a GtkWindow* type -typedef void* PVOID; +typedef void *PVOID; +typedef void *LPVOID; typedef PVOID HANDLE; typedef HANDLE HINSTANCE; typedef HANDLE HDC; -typedef GtkWidget* HWID; -typedef GtkWidget* HMENU; -typedef GtkWindow* HWND; -typedef GtkApplication* HAPP; +typedef GtkWidget *HWID; +typedef GtkWidget *HMENU; +typedef GtkWindow *HWND; +typedef GtkApplication *HAPP; /// Check if system is x64 or x86 #if defined(__UNIX64) @@ -77,5 +84,36 @@ class COLORREF : public GdkRGBA{ } }; +/// Custom structures +typedef struct HeapRecordChunckTag{ + PVOID Chunck; + SIZE_T dwSize; +} HEAPCHUNCK; +typedef struct HeapRecordTag{ + PVOID hHeap; + DWORD HeapID; + std::vector Element; + SIZE_T dwMaximumSize; + SIZE_T dwSize; + SIZE_T dwAllocatedSizeOffset; +} HEAPRECORD; +/// Variables +extern std::vector HeapRecord; + /// functions +HANDLE HeapCreate( + DWORD flOptions, + SIZE_T dwInitialSize, + SIZE_T dwMaximumSize); + +LPVOID HeapAlloc( + HANDLE hHeap, + DWORD dwFlags, + SIZE_T dwBytes); + +BOOL HeapFree( + HANDLE hHeap, + DWORD dwFlags, + LPVOID lpMem); + #endif -- cgit From 67b618853b13595749ef89c620de4bc8e967cd02 Mon Sep 17 00:00:00 2001 From: NatsuDrag9 Date: Wed, 6 Jun 2018 10:03:16 +0530 Subject: Ported functions --- ldmicro/lib/linuxUI/linuxUI.cpp | 32 ++++++++++++++++++++++++++++++++ ldmicro/lib/linuxUI/linuxUI.h | 11 +++++++++++ 2 files changed, 43 insertions(+) (limited to 'ldmicro/lib') diff --git a/ldmicro/lib/linuxUI/linuxUI.cpp b/ldmicro/lib/linuxUI/linuxUI.cpp index 9d912ea..fea10b5 100644 --- a/ldmicro/lib/linuxUI/linuxUI.cpp +++ b/ldmicro/lib/linuxUI/linuxUI.cpp @@ -2,6 +2,16 @@ /// Menu Variables HWID window; + +/// EnableMenuItem Variables +const UINT MF_ENABLED = 0; +const UINT MF_GRAYED = 1; +const UINT MF_CHECKED = 2; +const UINT MF_UNCHECKED = 3; + +/// ListStore +GtkWidget* view; +GtkTreeViewColumn* column; /// Wraper function for gtk_window_has_toplevel_focus BOOL isFocus(HWID window) @@ -132,3 +142,25 @@ BOOL GetSaveFileName(OPENFILENAME *ofn) return exitStatus; } + +void EnableMenuItem(HMENU MenuName, HMENU MenuItem, UINT CheckEnabledItem) { + switch (CheckEnabledItem){ + case MF_ENABLED : + gtk_widget_set_sensitive (MenuItem, true); + break; + case MF_GRAYED : + gtk_widget_set_sensitive (MenuItem, false); + break; + } +} + +void CheckMenuItem(HMENU MenuName, HMENU MenuItem, UINT Check){ + switch (Check){ + case MF_CHECKED : + gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(MenuItem), true); + break; + case MF_UNCHECKED : + gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(MenuItem), false); + break; + } +} \ No newline at end of file diff --git a/ldmicro/lib/linuxUI/linuxUI.h b/ldmicro/lib/linuxUI/linuxUI.h index 904599e..a7c8ce5 100644 --- a/ldmicro/lib/linuxUI/linuxUI.h +++ b/ldmicro/lib/linuxUI/linuxUI.h @@ -28,6 +28,15 @@ #define OFN_HIDEREADONLY 0x00000004 #define OFN_OVERWRITEPROMPT 0x00000002 +/// EnableMenuItem variables +extern const UINT MF_ENABLED; +extern const UINT MF_GRAYED; +extern const UINT MF_CHECKED; +extern const UINT MF_UNCHECKED; + +/// ListStore +extern GtkWidget* view; +extern GtkTreeViewColumn* column; /// data types typedef struct OpenFileInfoData { @@ -46,5 +55,7 @@ BOOL isFocus(HWID); COLORREF RGB(int, int, int); void MessageBox(HWID, char*, char*, UINT); BOOL GetSaveFileName(OPENFILENAME* ); +void EnableMenuItem(HMENU, HMENU, UINT); +void CheckMenuItem(HMENU, HMENU, UINT); #endif \ No newline at end of file -- cgit From 27b5bf49732e586021d6f0edf4d95a8554e599ef Mon Sep 17 00:00:00 2001 From: Rr42 Date: Wed, 6 Jun 2018 11:48:05 +0530 Subject: Updated LDMicro core (Tested, functional) --- ldmicro/lib/linuxUI/linuxLD.cpp | 32 +++++++++++++++++++++++++------- ldmicro/lib/linuxUI/linuxLD.h | 1 + 2 files changed, 26 insertions(+), 7 deletions(-) (limited to 'ldmicro/lib') diff --git a/ldmicro/lib/linuxUI/linuxLD.cpp b/ldmicro/lib/linuxUI/linuxLD.cpp index 487905c..0b9ed9a 100644 --- a/ldmicro/lib/linuxUI/linuxLD.cpp +++ b/ldmicro/lib/linuxUI/linuxLD.cpp @@ -15,7 +15,7 @@ HANDLE HeapCreate(DWORD flOptions, SIZE_T dwInitialSize, SIZE_T dwMaximumSize) hHeapRecord.dwSize = dwInitialSize; hHeapRecord.hHeap = hHeap; hHeapRecord.dwAllocatedSizeOffset = 0; - hHeapRecord.HeapID = hHeapRecords.size()+1; + hHeapRecord.HeapID = HeapRecords.size()+1; HeapRecords.push_back(hHeapRecord); return hHeap; @@ -23,6 +23,13 @@ HANDLE HeapCreate(DWORD flOptions, SIZE_T dwInitialSize, SIZE_T dwMaximumSize) LPVOID HeapAlloc(HANDLE hHeap, DWORD dwFlags, SIZE_T dwBytes) { + if (hHeap == NULL) + { + printf("Alloc**********NULL HEAP***************\n"); + LPVOID p = malloc(dwBytes); + return p; + } + auto it = std::find_if(HeapRecords.begin(), HeapRecords.end(), [&hHeap](HEAPRECORD &Record) { return Record.hHeap == hHeap; }); if (it == HeapRecords.end()) @@ -40,9 +47,13 @@ LPVOID HeapAlloc(HANDLE hHeap, DWORD dwFlags, SIZE_T dwBytes) /// HEAP_ZERO_MEMORY is set by default DWORD flags = MAP_ANONYMOUS; - if ( (dwFlags & HEAP_ZERO_MEMORY) == HEAP_ZERO_MEMORY) - flags = MAP_ANONYMOUS | MAP_UNINITIALIZED; - //void * memset ( void * ptr, int value, size_t num ); + + // if ( !((dwFlags & HEAP_ZERO_MEMORY) == HEAP_ZERO_MEMORY) ) + // flags = MAP_ANONYMOUS | MAP_UNINITIALIZED; + + /* Use for setting a meamory chunck with some value + * void * memset ( void * ptr, int value, size_t num ); + */ LPVOID p = mmap(hHeap + (*it).dwAllocatedSizeOffset, dwBytes, PROT_EXEC, flags, -1, 0); if (p == NULL) @@ -59,15 +70,22 @@ LPVOID HeapAlloc(HANDLE hHeap, DWORD dwFlags, SIZE_T dwBytes) BOOL HeapFree(HANDLE hHeap, DWORD dwFlags, LPVOID lpMem) { + /// if NULL free() + if (hHeap == NULL) + { + printf("free*********NULL HEAP***************\n"); + free(lpMem); + return TRUE; + } auto heap_it = std::find_if(HeapRecords.begin(), HeapRecords.end(), [&hHeap](HEAPRECORD &Record) { return Record.hHeap == hHeap; }); - + if (heap_it == HeapRecords.end()) - return NULL; + return FALSE; auto chunck_it = std::find_if((*heap_it).Element.begin(), (*heap_it).Element.end(), [&lpMem](HEAPCHUNCK &Chunck) { return Chunck.Chunck == lpMem; }); if (chunck_it == (*heap_it).Element.end()) - return NULL; + return FALSE; int result = munmap((*chunck_it).Chunck, (*chunck_it).dwSize); diff --git a/ldmicro/lib/linuxUI/linuxLD.h b/ldmicro/lib/linuxUI/linuxLD.h index 525f6a8..4955361 100644 --- a/ldmicro/lib/linuxUI/linuxLD.h +++ b/ldmicro/lib/linuxUI/linuxLD.h @@ -4,6 +4,7 @@ #include "linuxUI.h" #include #include +#include /// common windows referances for linux -- cgit From 2ef55474f6c1622b19bbd9dfa0d132bb433e08b9 Mon Sep 17 00:00:00 2001 From: Rr42 Date: Wed, 6 Jun 2018 12:12:49 +0530 Subject: Removed unnecessary files and headers. --- ldmicro/lib/linuxUI/linuxLD.cpp | 13 ++++++++++++ ldmicro/lib/linuxUI/linuxLD.h | 47 ++++++++++++++++++++++++++++++++++++----- 2 files changed, 55 insertions(+), 5 deletions(-) (limited to 'ldmicro/lib') diff --git a/ldmicro/lib/linuxUI/linuxLD.cpp b/ldmicro/lib/linuxUI/linuxLD.cpp index 0b9ed9a..e4fd018 100644 --- a/ldmicro/lib/linuxUI/linuxLD.cpp +++ b/ldmicro/lib/linuxUI/linuxLD.cpp @@ -99,3 +99,16 @@ BOOL HeapFree(HANDLE hHeap, DWORD dwFlags, LPVOID lpMem) } +void OutputDebugString(char* str) +{ + +} + +double GetTickCount(void) +{ +// timespec now; +// clock_gettime() +// if (clock_gettime(CLOCK_MONOTONIC, &now)) +// return 0; + return 10.2;//now.tv_sec * 1000.0 + now.tv_nsec / 1000000.0; +} \ No newline at end of file diff --git a/ldmicro/lib/linuxUI/linuxLD.h b/ldmicro/lib/linuxUI/linuxLD.h index 4955361..c7ce92e 100644 --- a/ldmicro/lib/linuxUI/linuxLD.h +++ b/ldmicro/lib/linuxUI/linuxLD.h @@ -2,6 +2,7 @@ #define __LINUX_LD__ #include "linuxUI.h" +#include #include #include #include @@ -16,16 +17,18 @@ #define HEAP_ZERO_MEMORY 0x00000008 -/// typedefs +/// Typedefs //typedef int64_t __int64; typedef bool BOOL; typedef unsigned char BYTE; typedef unsigned short WORD; typedef unsigned int DWORD; +typedef unsigned int UINT; typedef size_t SIZE_T; typedef long LONG; typedef wchar_t WCHAR; typedef char CHAR; + typedef CONST WCHAR *LPCWSTR; typedef CONST CHAR *LPCSTR; /// should be __nullterminated @@ -44,9 +47,13 @@ typedef CHAR *LPSTR; typedef LPSTR LPTSTR; #endif -/// all handles will hold a GtkWindow* type typedef void *PVOID; typedef void *LPVOID; +typedef PVOID HFONT; +typedef PVOID HMODULE; +typedef PVOID HHOOK; +typedef PVOID HBRUSH; +typedef PVOID HFONT; typedef PVOID HANDLE; typedef HANDLE HINSTANCE; typedef HANDLE HDC; @@ -64,9 +71,17 @@ typedef unsigned int UINT_PTR; #endif typedef UINT_PTR WPARAM; -typedef unsigned int UINT; -/// custom classes +#if defined(__UNIX64) + typedef __int64_t LONG_PTR; +#else + typedef long LONG_PTR; +#endif + +typedef LONG_PTR LPARAM; +typedef LONG_PTR LRESULT; + +/// Custom classes class COLORREF : public GdkRGBA{ public: COLORREF() @@ -90,6 +105,7 @@ typedef struct HeapRecordChunckTag{ PVOID Chunck; SIZE_T dwSize; } HEAPCHUNCK; + typedef struct HeapRecordTag{ PVOID hHeap; DWORD HeapID; @@ -98,10 +114,27 @@ typedef struct HeapRecordTag{ SIZE_T dwSize; SIZE_T dwAllocatedSizeOffset; } HEAPRECORD; + +typedef struct tagSCROLLINFO { + UINT cbSize; + UINT fMask; + int nMin; + int nMax; + UINT nPage; + int nPos; + int nTrackPos; +} SCROLLINFO, *LPCSCROLLINFO; + +typedef struct tagNMHDR { + HWND hwndFrom; + UINT_PTR idFrom; + UINT code; +} NMHDR; + /// Variables extern std::vector HeapRecord; -/// functions +/// Functions HANDLE HeapCreate( DWORD flOptions, SIZE_T dwInitialSize, @@ -117,4 +150,8 @@ BOOL HeapFree( DWORD dwFlags, LPVOID lpMem); +/// functions to be ported +void OutputDebugString(char*); +double GetTickCount(void); + #endif -- cgit