summaryrefslogtreecommitdiff
path: root/ldmicro/lib/linuxUI
diff options
context:
space:
mode:
authorRr422018-06-25 17:43:13 +0530
committerRr422018-06-25 17:43:13 +0530
commit81498daf0fa6f0004a322030acca6001f27a20e1 (patch)
treeb689544dcd140a7100d10fe5ced1bc50905a4e23 /ldmicro/lib/linuxUI
parent8bad98abfaf76db07f77bc89366ab5572e724654 (diff)
downloadLDMicroGtk-81498daf0fa6f0004a322030acca6001f27a20e1.tar.gz
LDMicroGtk-81498daf0fa6f0004a322030acca6001f27a20e1.tar.bz2
LDMicroGtk-81498daf0fa6f0004a322030acca6001f27a20e1.zip
Added full timer functionality and partial simulation functionality.
Diffstat (limited to 'ldmicro/lib/linuxUI')
-rw-r--r--ldmicro/lib/linuxUI/linuxUI.cpp33
-rw-r--r--ldmicro/lib/linuxUI/linuxUI.h17
2 files changed, 50 insertions, 0 deletions
diff --git a/ldmicro/lib/linuxUI/linuxUI.cpp b/ldmicro/lib/linuxUI/linuxUI.cpp
index c3c7c0d..5a7b799 100644
--- a/ldmicro/lib/linuxUI/linuxUI.cpp
+++ b/ldmicro/lib/linuxUI/linuxUI.cpp
@@ -10,6 +10,9 @@ const COLORREF DKGRAY_BR(169, 169, 169);
/// Variable to current text color
COLORREF HdcCurrentTextColor;
+/// Variable to hold timers
+std::vector<TimerRecord> timerRecords;
+
/// EnableMenuItem Variables
const UINT MF_ENABLED = 0;
const UINT MF_GRAYED = 1;
@@ -470,4 +473,34 @@ BOOL GetWindowRect(HWID hWid, PRECT pRect)
pRect->bottom = allocation.height;
return TRUE;
+}
+
+UINT SetTimer(HWID hWid, UINT nIDEvent, UINT uElapse, BOOL (*lpTimerFunc)(BOOL) )
+{
+ auto record_it = std::find_if(timerRecords.begin(), timerRecords.end(), [&nIDEvent](TimerRecord &Record) { return Record.ufID == nIDEvent; });
+
+ if (record_it != timerRecords.end())
+ return 0;
+
+ TimerRecord tr;
+ tr.pfun = lpTimerFunc;
+ tr.ufID = nIDEvent;
+ tr.utID = g_timeout_add(uElapse, (GSourceFunc)lpTimerFunc, FALSE);
+
+ timerRecords.push_back(tr);
+ return tr.utID;
+}
+
+BOOL KillTimer(HWID hWid, UINT uIDEvent)
+{
+ auto record_it = std::find_if(timerRecords.begin(), timerRecords.end(), [&uIDEvent](TimerRecord &Record) { return Record.ufID == uIDEvent; });
+
+ if (record_it == timerRecords.end())
+ return FALSE;
+
+ record_it->pfun(TRUE);
+ g_source_remove (record_it->utID);
+ timerRecords.erase(record_it);
+
+ return TRUE;
} \ No newline at end of file
diff --git a/ldmicro/lib/linuxUI/linuxUI.h b/ldmicro/lib/linuxUI/linuxUI.h
index e970e42..09fb488 100644
--- a/ldmicro/lib/linuxUI/linuxUI.h
+++ b/ldmicro/lib/linuxUI/linuxUI.h
@@ -100,8 +100,15 @@ typedef struct OpenFileInfoData {
LPCTSTR lpstrDefExt;
} OPENFILENAME;
+typedef struct TimerRecordTag {
+ BOOL (*pfun)(BOOL);
+ UINT ufID;
+ UINT utID;
+} TimerRecord;
+
/// Variables
extern COLORREF HdcCurrentTextColor;
+extern std::vector<TimerRecord> timerRecords;
/// functions
BOOL GetFocus(HWID window);
@@ -201,4 +208,14 @@ BOOL GetWindowRect(
HWID hWid,
PRECT pRect);
+UINT SetTimer(
+ HWID hWid,
+ UINT nIDEvent,
+ UINT uElapse,
+ BOOL (*lpTimerFunc)(BOOL));
+
+BOOL KillTimer(
+ HWID hWid,
+ UINT uIDEvent);
+
#endif \ No newline at end of file