summaryrefslogtreecommitdiff
path: root/inputmethods/dasher
Unidiff
Diffstat (limited to 'inputmethods/dasher') (more/less context) (ignore whitespace changes)
-rw-r--r--inputmethods/dasher/AlphIO.cpp8
-rw-r--r--inputmethods/dasher/Alphabet.cpp4
-rw-r--r--inputmethods/dasher/AlphabetMap.cpp2
-rw-r--r--inputmethods/dasher/AlphabetMap.h2
-rw-r--r--inputmethods/dasher/DashEdit.h14
-rw-r--r--inputmethods/dasher/DasherInterface.cpp27
-rw-r--r--inputmethods/dasher/DasherInterface.h2
-rw-r--r--inputmethods/dasher/DasherModel.cpp8
-rw-r--r--inputmethods/dasher/DasherNode.cpp2
-rw-r--r--inputmethods/dasher/DasherNode.h20
-rw-r--r--inputmethods/dasher/DasherSettingsInterface.h48
-rw-r--r--inputmethods/dasher/DasherView.cpp4
-rw-r--r--inputmethods/dasher/DasherView.h2
-rw-r--r--inputmethods/dasher/PPMLanguageModel.cpp8
-rw-r--r--inputmethods/dasher/PPMLanguageModel.h7
-rw-r--r--inputmethods/dasher/QtDasherImpl.cc2
-rw-r--r--inputmethods/dasher/QtDasherPlugin.cc2
-rw-r--r--inputmethods/dasher/QtDasherPlugin.h2
-rw-r--r--inputmethods/dasher/QtDasherScreen.cc17
-rw-r--r--inputmethods/dasher/QtDasherScreen.h4
-rw-r--r--inputmethods/dasher/SettingsStore.cpp12
21 files changed, 118 insertions, 79 deletions
diff --git a/inputmethods/dasher/AlphIO.cpp b/inputmethods/dasher/AlphIO.cpp
index 41b1b23..96ca14a 100644
--- a/inputmethods/dasher/AlphIO.cpp
+++ b/inputmethods/dasher/AlphIO.cpp
@@ -1,65 +1,67 @@
1// AlphIO.cpp 1// AlphIO.cpp
2// 2//
3///////////////////////////////////////////////////////////////////////////// 3/////////////////////////////////////////////////////////////////////////////
4// 4//
5// Copyright (c) 2002 Iain Murray 5// Copyright (c) 2002 Iain Murray
6// 6//
7///////////////////////////////////////////////////////////////////////////// 7/////////////////////////////////////////////////////////////////////////////
8 8
9 9
10 10
11#include "AlphIO.h" 11#include "AlphIO.h"
12 12
13using namespace Dasher; 13using namespace Dasher;
14using namespace std; 14using namespace std;
15 15
16CAlphIO::CAlphIO(string SystemLocation, string UserLocation) 16CAlphIO::CAlphIO(string SystemLocation, string UserLocation)
17 : SystemLocation(SystemLocation), UserLocation(UserLocation), 17 : BlankInfo(),
18 BlankInfo(), CData("") 18 SystemLocation(SystemLocation),
19 UserLocation(UserLocation),
20 CData("")
19{ 21{
20 CreateDefault(); 22 CreateDefault();
21} 23}
22 24
23 25
24void CAlphIO::GetAlphabets(std::vector< std::string > * AlphabetList) const 26void CAlphIO::GetAlphabets(std::vector< std::string > * AlphabetList) const
25{ 27{
26 AlphabetList->clear(); 28 AlphabetList->clear();
27 29
28 typedef std::map<std::string, AlphInfo>::const_iterator CI; 30 typedef std::map<std::string, AlphInfo>::const_iterator CI;
29 CI End = Alphabets.end(); 31 CI End = Alphabets.end();
30 32
31 for (CI Cur=Alphabets.begin(); Cur!=End; Cur++) 33 for (CI Cur=Alphabets.begin(); Cur!=End; Cur++)
32 AlphabetList->push_back( (*Cur).second.AlphID); 34 AlphabetList->push_back( (*Cur).second.AlphID);
33} 35}
34 36
35 37
36const CAlphIO::AlphInfo& CAlphIO::GetInfo(const std::string& AlphID) 38const CAlphIO::AlphInfo& CAlphIO::GetInfo(const std::string& AlphID)
37{ 39{
38 if (AlphID=="") 40 if (AlphID=="")
39 return Alphabets["Default"]; 41 return Alphabets["Default"];
40 else { 42 else {
41 AlphInfo& CurInfo = Alphabets[AlphID]; 43 // AlphInfo& CurInfo = Alphabets[AlphID];
42 Alphabets[AlphID].AlphID = AlphID; // Ensure consistency 44 Alphabets[AlphID].AlphID = AlphID; // Ensure consistency
43 return Alphabets[AlphID]; 45 return Alphabets[AlphID];
44 } 46 }
45} 47}
46 48
47 49
48void CAlphIO::SetInfo(const AlphInfo& NewInfo) 50void CAlphIO::SetInfo(const AlphInfo& NewInfo)
49{ 51{
50 Alphabets[NewInfo.AlphID] = NewInfo; 52 Alphabets[NewInfo.AlphID] = NewInfo;
51} 53}
52 54
53 55
54void CAlphIO::Delete(const std::string& AlphID) 56void CAlphIO::Delete(const std::string& AlphID)
55{ 57{
56 if (Alphabets.find(AlphID)!=Alphabets.end()) { 58 if (Alphabets.find(AlphID)!=Alphabets.end()) {
57 Alphabets.erase(AlphID); 59 Alphabets.erase(AlphID);
58 } 60 }
59} 61}
60 62
61 63
62void CAlphIO::CreateDefault() 64void CAlphIO::CreateDefault()
63{ 65{
64 // TODO I appreciate these strings should probably be in a resource file. 66 // TODO I appreciate these strings should probably be in a resource file.
65 // Not urgent though as this is not intended to be used. It's just a 67 // Not urgent though as this is not intended to be used. It's just a
diff --git a/inputmethods/dasher/Alphabet.cpp b/inputmethods/dasher/Alphabet.cpp
index dc58b35..6327d8a 100644
--- a/inputmethods/dasher/Alphabet.cpp
+++ b/inputmethods/dasher/Alphabet.cpp
@@ -1,58 +1,58 @@
1// Alphabet.cpp 1// Alphabet.cpp
2// 2//
3///////////////////////////////////////////////////////////////////////////// 3/////////////////////////////////////////////////////////////////////////////
4// 4//
5// Copyright (c) 2001-2002 David Ward 5// Copyright (c) 2001-2002 David Ward
6// 6//
7///////////////////////////////////////////////////////////////////////////// 7/////////////////////////////////////////////////////////////////////////////
8 8
9#include "Alphabet.h" 9#include "Alphabet.h"
10#include "AlphabetMap.h" 10#include "AlphabetMap.h"
11 11
12//#include <iostream> 12//#include <iostream>
13//WinCE doesn't have iostream! 13//WinCE doesn't have iostream!
14 14
15using namespace Dasher; 15using namespace Dasher;
16using namespace std; 16using namespace std;
17 17
18 18
19CAlphabet::CAlphabet() : m_Groups(0), m_DefaultEncoding(Opts::Western), m_Orientation(Opts::LeftToRight) 19CAlphabet::CAlphabet() : m_DefaultEncoding(Opts::Western), m_Orientation(Opts::LeftToRight), m_Groups(0)
20{ 20{
21 m_Characters.push_back(""); 21 m_Characters.push_back("");
22 m_Display.push_back(""); 22 m_Display.push_back("");
23 m_Colours.push_back(""); 23 m_Colours.push_back("");
24 m_Foreground.push_back(""); 24 m_Foreground.push_back("");
25 m_Group.push_back(0); 25 m_Group.push_back(0);
26} 26}
27 27
28 28
29void CAlphabet::GetSymbols(vector<symbol>* Symbols, string* Input, bool IsMore) 29void CAlphabet::GetSymbols(vector<symbol>* Symbols, string* Input, bool IsMore)
30{ 30{
31 string Tmp; 31 string Tmp;
32 symbol CurSymbol=0, TmpSymbol=0; 32 symbol CurSymbol=0, TmpSymbol=0;
33 bool KeyIsPrefix; 33 bool KeyIsPrefix;
34 int z= Input->size(); 34 // int z= Input->size();
35 int extras; 35 int extras;
36 unsigned int bit; 36 unsigned int bit;
37 37
38 for (unsigned int i=0; i<Input->size(); i++) { 38 for (unsigned int i=0; i<Input->size(); i++) {
39 39
40 Tmp = (*Input)[i]; 40 Tmp = (*Input)[i];
41 41
42 /* The string we've been given is in UTF-8. The symbols are 42 /* The string we've been given is in UTF-8. The symbols are
43 also in UTF-8, so we need to pass the entire UTF-8 character 43 also in UTF-8, so we need to pass the entire UTF-8 character
44 which may be several bytes long. RFC 2279 describes this 44 which may be several bytes long. RFC 2279 describes this
45 encoding */ 45 encoding */
46 46
47 if ((*Input)[i] & 0x80) { // Character is more than 1 byte long 47 if ((*Input)[i] & 0x80) { // Character is more than 1 byte long
48 extras = 1; 48 extras = 1;
49 for (bit = 0x20; ((*Input)[i] & bit) != 0; bit >>= 1) 49 for (bit = 0x20; ((*Input)[i] & bit) != 0; bit >>= 1)
50 extras++; 50 extras++;
51 if (extras > 5) { 51 if (extras > 5) {
52 } // Malformed character 52 } // Malformed character
53 while (extras-->0) { 53 while (extras-->0) {
54 Tmp += (*Input)[++i]; 54 Tmp += (*Input)[++i];
55 } 55 }
56 } 56 }
57 57
58 CurSymbol = TextMap.Get(Tmp, &KeyIsPrefix); 58 CurSymbol = TextMap.Get(Tmp, &KeyIsPrefix);
diff --git a/inputmethods/dasher/AlphabetMap.cpp b/inputmethods/dasher/AlphabetMap.cpp
index 09e2c72..c687e45 100644
--- a/inputmethods/dasher/AlphabetMap.cpp
+++ b/inputmethods/dasher/AlphabetMap.cpp
@@ -1,39 +1,39 @@
1// AlphabetMap.cpp 1// AlphabetMap.cpp
2// 2//
3///////////////////////////////////////////////////////////////////////////// 3/////////////////////////////////////////////////////////////////////////////
4// 4//
5// Copyright (c) 2002 Iain Murray 5// Copyright (c) 2002 Iain Murray
6// 6//
7///////////////////////////////////////////////////////////////////////////// 7/////////////////////////////////////////////////////////////////////////////
8 8
9#include "AlphabetMap.h" 9#include "AlphabetMap.h"
10 10
11using namespace Dasher; 11using namespace Dasher;
12using namespace std; 12using namespace std;
13 13
14alphabet_map::alphabet_map(unsigned int InitialTableSize) 14alphabet_map::alphabet_map(unsigned int InitialTableSize)
15 : Undefined(0), HashTable(InitialTableSize<<1) 15 : HashTable(InitialTableSize<<1), Undefined(0)
16{ 16{
17 Entries.reserve(InitialTableSize); 17 Entries.reserve(InitialTableSize);
18} 18}
19 19
20 20
21void alphabet_map::Add(const string& Key, symbol Value) 21void alphabet_map::Add(const string& Key, symbol Value)
22{ 22{
23 RecursiveAdd(Key, Value, false); 23 RecursiveAdd(Key, Value, false);
24} 24}
25 25
26 26
27void alphabet_map::RecursiveAdd(const string& Key, symbol Value, bool PrefixFlag) 27void alphabet_map::RecursiveAdd(const string& Key, symbol Value, bool PrefixFlag)
28{ 28{
29 Entry*& HashEntry = HashTable[Hash(Key)]; 29 Entry*& HashEntry = HashTable[Hash(Key)];
30 30
31 // Loop through Entries with the correct Hash value. 31 // Loop through Entries with the correct Hash value.
32 for (Entry* i = HashEntry; i; i=i->Next) { 32 for (Entry* i = HashEntry; i; i=i->Next) {
33 if (i->Key==Key) { 33 if (i->Key==Key) {
34 if (PrefixFlag) { 34 if (PrefixFlag) {
35 // Just tagging - don't change symbol. Recurse if necessary 35 // Just tagging - don't change symbol. Recurse if necessary
36 i->KeyIsPrefix = true; 36 i->KeyIsPrefix = true;
37 if (Key.size()>1) 37 if (Key.size()>1)
38 RecursiveAdd(Key.substr(Key.size()-1), Undefined, true); 38 RecursiveAdd(Key.substr(Key.size()-1), Undefined, true);
39 } else { 39 } else {
diff --git a/inputmethods/dasher/AlphabetMap.h b/inputmethods/dasher/AlphabetMap.h
index 3aac1f5..62f20d9 100644
--- a/inputmethods/dasher/AlphabetMap.h
+++ b/inputmethods/dasher/AlphabetMap.h
@@ -47,49 +47,49 @@ IAM 08/2002
47*/ 47*/
48 48
49#ifndef __AlphabetMap_h__ 49#ifndef __AlphabetMap_h__
50#define __AlphabetMap_h__ 50#define __AlphabetMap_h__
51 51
52#include "MSVC_Unannoy.h" 52#include "MSVC_Unannoy.h"
53#include <vector> 53#include <vector>
54#include <string> 54#include <string>
55 55
56#include "DasherTypes.h" 56#include "DasherTypes.h"
57 57
58namespace Dasher {class alphabet_map;} 58namespace Dasher {class alphabet_map;}
59class Dasher::alphabet_map 59class Dasher::alphabet_map
60{ 60{
61public: 61public:
62 alphabet_map(uint InitialTableSize=255); 62 alphabet_map(uint InitialTableSize=255);
63 void Add(const std::string& Key, symbol Value); 63 void Add(const std::string& Key, symbol Value);
64 symbol Get(const std::string& Key, bool* KeyIsPrefix=0) const; 64 symbol Get(const std::string& Key, bool* KeyIsPrefix=0) const;
65 65
66private: 66private:
67 class Entry 67 class Entry
68 { 68 {
69 public: 69 public:
70 Entry(std::string Key, symbol Symbol, Entry* Next) 70 Entry(std::string Key, symbol Symbol, Entry* Next)
71 : Key(Key), Symbol(Symbol), Next(Next), KeyIsPrefix(false) {} 71 : Key(Key), KeyIsPrefix(false), Symbol(Symbol), Next(Next) {}
72 72
73 std::string Key; 73 std::string Key;
74 bool KeyIsPrefix; 74 bool KeyIsPrefix;
75 symbol Symbol; 75 symbol Symbol;
76 Entry* Next; 76 Entry* Next;
77 }; 77 };
78 78
79 void RecursiveAdd(const std::string& Key, symbol Value, bool PrefixFlag); 79 void RecursiveAdd(const std::string& Key, symbol Value, bool PrefixFlag);
80 80
81 // A standard hash -- could try and research something specific. 81 // A standard hash -- could try and research something specific.
82 inline uint Hash(const std::string& Input) const { 82 inline uint Hash(const std::string& Input) const {
83 uint Result = 0; 83 uint Result = 0;
84 84
85 typedef std::string::const_iterator CI; 85 typedef std::string::const_iterator CI;
86 CI Cur = Input.begin(); 86 CI Cur = Input.begin();
87 CI end = Input.end(); 87 CI end = Input.end();
88 88
89 while (Cur!=end) Result = (Result<<1)^*Cur++; 89 while (Cur!=end) Result = (Result<<1)^*Cur++;
90 Result %= HashTable.size(); 90 Result %= HashTable.size();
91 91
92 return Result; 92 return Result;
93 /* 93 /*
94 if (Input.size()==1) // Speedup for ASCII text 94 if (Input.size()==1) // Speedup for ASCII text
95 return Input[0]; 95 return Input[0];
diff --git a/inputmethods/dasher/DashEdit.h b/inputmethods/dasher/DashEdit.h
index dc14d15..0baeec9 100644
--- a/inputmethods/dasher/DashEdit.h
+++ b/inputmethods/dasher/DashEdit.h
@@ -2,122 +2,122 @@
2// DashEdit.h 2// DashEdit.h
3// 3//
4///////////////////////////////////////////////////////////////////////////// 4/////////////////////////////////////////////////////////////////////////////
5// 5//
6// Copyright (c) 2002 Iain Murray 6// Copyright (c) 2002 Iain Murray
7// 7//
8///////////////////////////////////////////////////////////////////////////// 8/////////////////////////////////////////////////////////////////////////////
9 9
10/* 10/*
11An abstract DashEditbox class is described here. 11An abstract DashEditbox class is described here.
12An implementation will handle interaction between Dasher and an actual Edit control. 12An implementation will handle interaction between Dasher and an actual Edit control.
13e.g. - output characters to the edit control 13e.g. - output characters to the edit control
14 - tapping on the edit box updates the Dasher display 14 - tapping on the edit box updates the Dasher display
15*/ 15*/
16 16
17#ifndef __DashEdit_h__ 17#ifndef __DashEdit_h__
18#define __DashEdit_h__ 18#define __DashEdit_h__
19 19
20#include "DasherWidgetInterface.h" 20#include "DasherWidgetInterface.h"
21 21
22namespace Dasher {class CDashEditbox;} 22namespace Dasher {class CDashEditbox;}
23class Dasher::CDashEditbox 23class Dasher::CDashEditbox
24{ 24{
25public: 25public:
26 CDashEditbox() : m_iFlushed(0), m_DasherInterface(0), m_dirty(false) {} 26 CDashEditbox() : m_dirty(false),m_iFlushed(0), m_DasherInterface(0) {}
27 27
28 //! Provide the Editbox with a widget interface 28 //! Provide the Editbox with a widget interface
29 virtual void SetInterface(CDasherWidgetInterface* DasherInterface) {m_DasherInterface = DasherInterface;} 29 virtual void SetInterface(CDasherWidgetInterface* DasherInterface) {m_DasherInterface = DasherInterface;}
30 30
31 //! Write some buffered output to a file 31 //! Write some buffered output to a file
32 virtual void write_to_file()=0; 32 virtual void write_to_file()=0;
33 33
34 //! Set the number of flushed characters 34 //! Set the number of flushed characters
35 // 35 //
36 //! Set the number of flushed characters to an arbitrary number. 36 //! Set the number of flushed characters to an arbitrary number.
37 //! Usually used to reset it to 0 after unflushing 37 //! Usually used to reset it to 0 after unflushing
38 void set_flushed(int i) {m_iFlushed=i;} 38 void set_flushed(int i) {m_iFlushed=i;}
39 39
40 //! Provide context from the editbox for the core 40 //! Provide context from the editbox for the core
41 // 41 //
42 //! Provide the context at the current position within the editbox to 42 //! Provide the context at the current position within the editbox to
43 //! the core. Set str to up to max characters before 43 //! the core. Set str to up to max characters before
44 //! the cursor position within the editbox. 44 //! the cursor position within the editbox.
45 virtual void get_new_context(std::string& str, int max)=0; 45 virtual void get_new_context(std::string& str, int max)=0;
46 46
47 //! Delete flushed text from the editbox 47 //! Delete flushed text from the editbox
48 virtual inline void unflush()=0; 48 virtual void unflush()=0;
49 49
50 //! Enter a the character Symbol into the text box 50 //! Enter a the character Symbol into the text box
51 virtual void output(symbol Symbol)=0; 51 virtual void output(symbol Symbol)=0;
52 52
53 //! Delete the previous symbol from the text box 53 //! Delete the previous symbol from the text box
54 virtual void deletetext()=0; 54 virtual void deletetext()=0;
55 55
56 //! Enter a character into the text box and remember that it is flushed 56 //! Enter a character into the text box and remember that it is flushed
57 // 57 //
58 //! Output the character and increment m_iFlushed. When unflush is 58 //! Output the character and increment m_iFlushed. When unflush is
59 //! called, remove the previous m_iFlushed characters 59 //! called, remove the previous m_iFlushed characters
60 virtual void flush(symbol Symbol)=0; 60 virtual void flush(symbol Symbol)=0;
61 61
62 // File I/O (optional) 62 // File I/O (optional)
63 63
64 //! If Value is true, timestamp all new files (optional) 64 //! If Value is true, timestamp all new files (optional)
65 // 65 //
66 //! If switched on, all new files should be timestamped, either in the 66 //! If switched on, all new files should be timestamped, either in the
67 //! filename or in file metadata 67 //! filename or in file metadata
68 virtual void TimeStampNewFiles(bool Value) {} 68 virtual void TimeStampNewFiles(bool ) {}
69 69
70 //! Return true if any text has been modified since the last save (optional) 70 //! Return true if any text has been modified since the last save (optional)
71 bool IsDirty() {return m_dirty;} 71 bool IsDirty() {return m_dirty;}
72 72
73 //! Generate a new file (optional) 73 //! Generate a new file (optional)
74 // 74 //
75 //! New file - provide a file save dialogue and return the filename in 75 //! New file - provide a file save dialogue and return the filename in
76 //! filename, or provide a blank filename and present a file 76 //! filename, or provide a blank filename and present a file
77 //! save dialogue when Save() is called 77 //! save dialogue when Save() is called
78 virtual void New(const std::string& filename) {}; // filename can be "", but you cannot call Save() without having set a filename. 78 virtual void New(const std::string& ) {}; // filename can be "", but you cannot call Save() without having set a filename.
79 79
80 //! Open a file (optional) 80 //! Open a file (optional)
81 // 81 //
82 //! Provide a file open dialogue and set filename to the 82 //! Provide a file open dialogue and set filename to the
83 //! filename. Return true if a file is chosen and opened successfully, 83 //! filename. Return true if a file is chosen and opened successfully,
84 //! false otherwise 84 //! false otherwise
85 virtual bool Open(const std::string& filename) {return false;}; 85 virtual bool Open(const std::string& ) {return false;};
86 86
87 //! Open a file and append to it (optional) 87 //! Open a file and append to it (optional)
88 // 88 //
89 //! Provide a file open dialogue and set filename to the 89 //! Provide a file open dialogue and set filename to the
90 //! filename. The file will then have any new text appended to it. 90 //! filename. The file will then have any new text appended to it.
91 //! Return true if a file is chosen and opened successfully, false 91 //! Return true if a file is chosen and opened successfully, false
92 //! otherwise 92 //! otherwise
93 virtual bool OpenAppendMode(const std::string& filename) {return false;}; 93 virtual bool OpenAppendMode(const std::string& ) {return false;};
94 //! Save a file as a provided filename (optional) 94 //! Save a file as a provided filename (optional)
95 // 95 //
96 //! Provide a file save dialogue and set filename to the 96 //! Provide a file save dialogue and set filename to the
97 //! filename. Return true if a file is chosen and saved successfully, 97 //! filename. Return true if a file is chosen and saved successfully,
98 //! false otherwise 98 //! false otherwise
99 virtual bool SaveAs(const std::string& filename) {return false;}; 99 virtual bool SaveAs(const std::string& ) {return false;};
100 100
101 //! Save the current file (optional) 101 //! Save the current file (optional)
102 // 102 //
103 //! Save file to the current filename. If there is no current filename, 103 //! Save file to the current filename. If there is no current filename,
104 //! or if saving fails, return false 104 //! or if saving fails, return false
105 virtual bool Save() {return false;}; // returns false if there is no filename set, or if saving fails 105 virtual bool Save() {return false;}; // returns false if there is no filename set, or if saving fails
106 106
107 // Clipboard (optional) 107 // Clipboard (optional)
108 //! Cut selected text (optional) 108 //! Cut selected text (optional)
109 // 109 //
110 //! Copy the selected text to the clipboard and remove it from the 110 //! Copy the selected text to the clipboard and remove it from the
111 //! editbox 111 //! editbox
112 virtual void Cut() {}; 112 virtual void Cut() {};
113 113
114 //! Copy selected text (optional) 114 //! Copy selected text (optional)
115 // 115 //
116 //! Copy the selected text to the clipboard 116 //! Copy the selected text to the clipboard
117 virtual void Copy() {}; 117 virtual void Copy() {};
118 118
119 //! Copy all text (optional) 119 //! Copy all text (optional)
120 // 120 //
121 //! Copy all text in the editbox to the clipboard 121 //! Copy all text in the editbox to the clipboard
122 virtual void CopyAll() {}; 122 virtual void CopyAll() {};
123 123
diff --git a/inputmethods/dasher/DasherInterface.cpp b/inputmethods/dasher/DasherInterface.cpp
index bb5b85e..4699687 100644
--- a/inputmethods/dasher/DasherInterface.cpp
+++ b/inputmethods/dasher/DasherInterface.cpp
@@ -4,53 +4,70 @@
4// 4//
5// Copyright (c) 2002 Iain Murray 5// Copyright (c) 2002 Iain Murray
6// 6//
7///////////////////////////////////////////////////////////////////////////// 7/////////////////////////////////////////////////////////////////////////////
8 8
9 9
10 10
11#include "DasherInterface.h" 11#include "DasherInterface.h"
12//#include "EnglishAlphabet.h" 12//#include "EnglishAlphabet.h"
13#include "CustomAlphabet.h" 13#include "CustomAlphabet.h"
14#include "DasherViewSquare.h" 14#include "DasherViewSquare.h"
15#include "PPMLanguageModel.h" 15#include "PPMLanguageModel.h"
16#include <iostream> 16#include <iostream>
17namespace { 17namespace {
18 #include "stdio.h" 18 #include "stdio.h"
19} 19}
20using namespace Dasher; 20using namespace Dasher;
21using namespace std; 21using namespace std;
22 22
23 23
24const string CDasherInterface::EmptyString = ""; 24const string CDasherInterface::EmptyString = "";
25 25
26 26
27CDasherInterface::CDasherInterface() 27CDasherInterface::CDasherInterface()
28 : m_DashEditbox(0), m_DasherScreen(0), m_LanguageModel(0), TrainContext(0), m_Alphabet(0), 28 : m_Alphabet(0),
29 m_DasherModel(0), m_DasherView(0), AlphabetID(""), LanguageModelID(-1), ViewID(-1), 29 m_LanguageModel(0),
30 m_MaxBitRate(-1), m_Orientation(Opts::LeftToRight), m_SettingsStore(0), m_SettingsUI(0), 30 m_DasherModel(0),
31 m_UserLocation("usr_"), m_SystemLocation("sys_"), m_AlphIO(0), m_TrainFile(""), 31 m_DashEditbox(0),
32 m_DasherFont(""), m_EditFont(""), m_EditFontSize(0), m_DrawKeyboard(false) 32 m_DasherScreen(0),
33 m_DasherView(0),
34 m_SettingsStore(0),
35 m_SettingsUI(0),
36 m_AlphIO(0),
37 TrainContext(0),
38 AlphabetID(""),
39 LanguageModelID(-1),
40 ViewID(-1),
41 m_MaxBitRate(-1),
42 m_DrawKeyboard(false),
43 m_Orientation(Opts::LeftToRight),
44 m_UserLocation("usr_"),
45 m_SystemLocation("sys_"),
46 m_TrainFile(""),
47 m_DasherFont(""),
48 m_EditFont(""),
49 m_EditFontSize(0)
33{ 50{
34} 51}
35 52
36 53
37CDasherInterface::~CDasherInterface() 54CDasherInterface::~CDasherInterface()
38{ 55{
39 if (m_LanguageModel) 56 if (m_LanguageModel)
40 m_LanguageModel->ReleaseNodeContext(TrainContext); 57 m_LanguageModel->ReleaseNodeContext(TrainContext);
41 delete m_DasherModel; // The order of some of these deletions matters 58 delete m_DasherModel; // The order of some of these deletions matters
42 delete m_LanguageModel; // eg DasherModel has a pointer to LanguageModel. 59 delete m_LanguageModel; // eg DasherModel has a pointer to LanguageModel.
43 delete m_Alphabet; // DM baulks if LM is deleted before it is. 60 delete m_Alphabet; // DM baulks if LM is deleted before it is.
44 delete m_DasherView; 61 delete m_DasherView;
45 // Do NOT delete Edit box or Screen. This class did not create them. 62 // Do NOT delete Edit box or Screen. This class did not create them.
46} 63}
47 64
48 65
49void CDasherInterface::SetSettingsStore(CSettingsStore* SettingsStore) 66void CDasherInterface::SetSettingsStore(CSettingsStore* SettingsStore)
50{ 67{
51 delete m_SettingsStore; 68 delete m_SettingsStore;
52 m_SettingsStore = SettingsStore; 69 m_SettingsStore = SettingsStore;
53 this->SettingsDefaults(m_SettingsStore); 70 this->SettingsDefaults(m_SettingsStore);
54} 71}
55 72
56 73
diff --git a/inputmethods/dasher/DasherInterface.h b/inputmethods/dasher/DasherInterface.h
index 6338801..7c4496f 100644
--- a/inputmethods/dasher/DasherInterface.h
+++ b/inputmethods/dasher/DasherInterface.h
@@ -17,49 +17,49 @@
17#include "MSVC_Unannoy.h" 17#include "MSVC_Unannoy.h"
18#include "NoClones.h" 18#include "NoClones.h"
19 19
20#include "DasherWidgetInterface.h" 20#include "DasherWidgetInterface.h"
21#include "DasherAppInterface.h" 21#include "DasherAppInterface.h"
22#include "DasherSettingsInterface.h" 22#include "DasherSettingsInterface.h"
23 23
24#include "DasherScreen.h" 24#include "DasherScreen.h"
25#include "Alphabet.h" 25#include "Alphabet.h"
26#include "AlphIO.h" 26#include "AlphIO.h"
27#include "LanguageModel.h" 27#include "LanguageModel.h"
28#include "DasherModel.h" 28#include "DasherModel.h"
29#include "DashEdit.h" 29#include "DashEdit.h"
30#include "DasherView.h" 30#include "DasherView.h"
31 31
32#include "MSVC_Unannoy.h" 32#include "MSVC_Unannoy.h"
33#include <map> 33#include <map>
34 34
35namespace Dasher {class CDasherInterface;} 35namespace Dasher {class CDasherInterface;}
36class Dasher::CDasherInterface : private NoClones, 36class Dasher::CDasherInterface : private NoClones,
37 public CDasherWidgetInterface, public CDasherAppInterface, public CDasherSettingsInterface 37 public CDasherWidgetInterface, public CDasherAppInterface, public CDasherSettingsInterface
38{ 38{
39public: 39public:
40 CDasherInterface(); 40 CDasherInterface();
41 ~CDasherInterface(); 41 virtual ~CDasherInterface();
42 42
43 //! Tell the core which CSettingsStore should be used 43 //! Tell the core which CSettingsStore should be used
44 void SetSettingsStore(CSettingsStore* SettingsStore); 44 void SetSettingsStore(CSettingsStore* SettingsStore);
45 45
46 //! Tell the core which CDasherSettingsInterface should be used 46 //! Tell the core which CDasherSettingsInterface should be used
47 // 47 //
48 //! Provide a pointer to an instance of CDasherSettingsInterface in 48 //! Provide a pointer to an instance of CDasherSettingsInterface in
49 //! order to allow for platform dependent configuration of certain 49 //! order to allow for platform dependent configuration of certain
50 //! options 50 //! options
51 void SetSettingsUI(CDasherSettingsInterface* SettingsUI); 51 void SetSettingsUI(CDasherSettingsInterface* SettingsUI);
52 52
53 //! Set the path for user specific configuration and files 53 //! Set the path for user specific configuration and files
54 void SetUserLocation(std::string UserLocation); 54 void SetUserLocation(std::string UserLocation);
55 55
56 //! Set the path for system-wide configuration and files 56 //! Set the path for system-wide configuration and files
57 void SetSystemLocation(std::string SystemLocation); 57 void SetSystemLocation(std::string SystemLocation);
58 58
59 // Widget Interface 59 // Widget Interface
60 // ----------------------------------------------------- 60 // -----------------------------------------------------
61 void Start(); 61 void Start();
62 62
63 void TapOn(int MouseX, int MouseY, unsigned long Time); // Times in milliseconds 63 void TapOn(int MouseX, int MouseY, unsigned long Time); // Times in milliseconds
64 void PauseAt(int MouseX, int MouseY); // are required to make 64 void PauseAt(int MouseX, int MouseY); // are required to make
65 void Unpause(unsigned long Time); // Dasher run at the 65 void Unpause(unsigned long Time); // Dasher run at the
diff --git a/inputmethods/dasher/DasherModel.cpp b/inputmethods/dasher/DasherModel.cpp
index 0450d66..f15fa49 100644
--- a/inputmethods/dasher/DasherModel.cpp
+++ b/inputmethods/dasher/DasherModel.cpp
@@ -1,44 +1,44 @@
1// DasherModel.h 1// DasherModel.h
2// 2//
3///////////////////////////////////////////////////////////////////////////// 3/////////////////////////////////////////////////////////////////////////////
4// 4//
5// Copyright (c) 2001-2002 David Ward 5// Copyright (c) 2001-2002 David Ward
6// 6//
7///////////////////////////////////////////////////////////////////////////// 7/////////////////////////////////////////////////////////////////////////////
8 8
9#include <iostream> 9#include <iostream>
10#include "DasherModel.h" 10#include "DasherModel.h"
11 11
12using namespace Dasher; 12using namespace Dasher;
13using namespace std; 13using namespace std;
14 14
15////////////////////////////////////////////////////////////////////// 15//////////////////////////////////////////////////////////////////////
16// CDasherModel 16// CDasherModel
17////////////////////////////////////////////////////////////////////// 17//////////////////////////////////////////////////////////////////////
18 18
19CDasherModel::CDasherModel(CDashEditbox* Editbox, CLanguageModel* LanguageModel, bool Dimensions) 19CDasherModel::CDasherModel(CDashEditbox* Editbox, CLanguageModel* LanguageModel, bool Dimensions)
20 : m_editbox(Editbox), m_languagemodel(LanguageModel), m_Root(0), m_Dimensions(Dimensions) 20 : m_Dimensions(Dimensions), m_editbox(Editbox), m_languagemodel(LanguageModel), m_Root(0)
21{ 21{
22 LearnContext = m_languagemodel->GetRootNodeContext(); 22 LearnContext = m_languagemodel->GetRootNodeContext();
23 23
24 // various settings 24 // various settings
25 int iShift = 12; 25 int iShift = 12;
26 m_DasherY = 1<<iShift; 26 m_DasherY = 1<<iShift;
27 m_DasherOY = m_DasherY/2; 27 m_DasherOY = m_DasherY/2;
28 m_DasherOX = m_DasherY/2; 28 m_DasherOX = m_DasherY/2;
29 m_dAddProb = 0.003; 29 m_dAddProb = 0.003;
30} 30}
31 31
32 32
33CDasherModel::~CDasherModel() 33CDasherModel::~CDasherModel()
34{ 34{
35 m_languagemodel->ReleaseNodeContext(LearnContext); 35 m_languagemodel->ReleaseNodeContext(LearnContext);
36 delete m_Root; // which will also delete all the whole structure 36 delete m_Root; // which will also delete all the whole structure
37} 37}
38 38
39 39
40void CDasherModel::Make_root(int whichchild) 40void CDasherModel::Make_root(int whichchild)
41 // find a new root node 41 // find a new root node
42{ 42{
43 symbol t=m_Root->Symbol(); 43 symbol t=m_Root->Symbol();
44 if (t) { 44 if (t) {
@@ -84,49 +84,49 @@ CDasherNode * CDasherModel::Get_node_under_crosshair()
84{ 84{
85 return m_Root->Get_node_under(Normalization(),m_Rootmin,m_Rootmax,m_DasherOX,m_DasherOY); 85 return m_Root->Get_node_under(Normalization(),m_Rootmin,m_Rootmax,m_DasherOX,m_DasherOY);
86} 86}
87 87
88///////////////////////////////////////////////////////////////////////////// 88/////////////////////////////////////////////////////////////////////////////
89 89
90 90
91CDasherNode * CDasherModel::Get_node_under_mouse(myint Mousex,myint Mousey) 91CDasherNode * CDasherModel::Get_node_under_mouse(myint Mousex,myint Mousey)
92{ 92{
93 return m_Root->Get_node_under(Normalization(),m_Rootmin,m_Rootmax,Mousex,Mousey); 93 return m_Root->Get_node_under(Normalization(),m_Rootmin,m_Rootmax,Mousex,Mousey);
94} 94}
95 95
96///////////////////////////////////////////////////////////////////////////// 96/////////////////////////////////////////////////////////////////////////////
97 97
98 98
99void CDasherModel::Get_string_under_mouse(const myint Mousex,const myint Mousey, vector<symbol> &str) 99void CDasherModel::Get_string_under_mouse(const myint Mousex,const myint Mousey, vector<symbol> &str)
100{ 100{
101 m_Root->Get_string_under(Normalization(),m_Rootmin,m_Rootmax,Mousex,Mousey,str); 101 m_Root->Get_string_under(Normalization(),m_Rootmin,m_Rootmax,Mousex,Mousey,str);
102 return; 102 return;
103} 103}
104 104
105///////////////////////////////////////////////////////////////////////////// 105/////////////////////////////////////////////////////////////////////////////
106 106
107 107
108void CDasherModel::Flush(const myint Mousex,const myint Mousey) 108void CDasherModel::Flush(const myint ,const myint )
109{ 109{
110 vector<symbol> vtUnder; 110 vector<symbol> vtUnder;
111 Get_string_under_mouse(m_DasherOX,m_DasherOY,vtUnder); 111 Get_string_under_mouse(m_DasherOX,m_DasherOY,vtUnder);
112 unsigned int i; 112 unsigned int i;
113 for (i=0;i<vtUnder.size();i++) { 113 for (i=0;i<vtUnder.size();i++) {
114 if (vtUnder[i]==0) 114 if (vtUnder[i]==0)
115 continue; 115 continue;
116 m_editbox->flush(vtUnder[i]); 116 m_editbox->flush(vtUnder[i]);
117 } 117 }
118} 118}
119 119
120///////////////////////////////////////////////////////////////////////////// 120/////////////////////////////////////////////////////////////////////////////
121 121
122void CDasherModel::Update(CDasherNode *node,CDasherNode *under_mouse,int iSafe) 122void CDasherModel::Update(CDasherNode *node,CDasherNode *under_mouse,int iSafe)
123// go through the Dasher nodes, delete ones who have expired 123// go through the Dasher nodes, delete ones who have expired
124// decrease the time left for nodes which arent safe 124// decrease the time left for nodes which arent safe
125// safe nodes are those which are under the mouse or offspring of this node 125// safe nodes are those which are under the mouse or offspring of this node
126{ 126{
127 //if (node->pushme ) 127 //if (node->pushme )
128 // node->push_node(); 128 // node->push_node();
129 if (node==under_mouse) 129 if (node==under_mouse)
130 iSafe=1; 130 iSafe=1;
131 if (!iSafe) 131 if (!iSafe)
132 node->Age(); 132 node->Age();
@@ -163,49 +163,49 @@ void CDasherModel::Start()
163 //Rootparent=new DasherNode(0,0,0,therootcontext,0,0,0,Normalization(),languagemodel); 163 //Rootparent=new DasherNode(0,0,0,therootcontext,0,0,0,Normalization(),languagemodel);
164 if (m_editbox) { 164 if (m_editbox) {
165 m_editbox->set_flushed(0); 165 m_editbox->set_flushed(0);
166 string ContextString; 166 string ContextString;
167 m_editbox->get_new_context(ContextString,5); 167 m_editbox->get_new_context(ContextString,5);
168 if (ContextString.size() != 0) { 168 if (ContextString.size() != 0) {
169 m_languagemodel->EnterText(therootcontext, ContextString); 169 m_languagemodel->EnterText(therootcontext, ContextString);
170 } 170 }
171 m_languagemodel->ReleaseNodeContext(LearnContext); 171 m_languagemodel->ReleaseNodeContext(LearnContext);
172 LearnContext = m_languagemodel->CloneNodeContext(therootcontext); 172 LearnContext = m_languagemodel->CloneNodeContext(therootcontext);
173 } 173 }
174 m_Root=new CDasherNode(0,0,0,0,Opts::Nodes1,0,Normalization(),m_languagemodel); 174 m_Root=new CDasherNode(0,0,0,0,Opts::Nodes1,0,Normalization(),m_languagemodel);
175 m_Root->Push_Node(therootcontext); 175 m_Root->Push_Node(therootcontext);
176 176
177 m_languagemodel->ReleaseNodeContext(therootcontext); 177 m_languagemodel->ReleaseNodeContext(therootcontext);
178 //ppmmodel->dump(); 178 //ppmmodel->dump();
179 //dump(); 179 //dump();
180 180
181} 181}
182 182
183///////////////////////////////////////////////////////////////////////////// 183/////////////////////////////////////////////////////////////////////////////
184 184
185void CDasherModel::Get_new_root_coords(myint Mousex,myint Mousey) 185void CDasherModel::Get_new_root_coords(myint Mousex,myint Mousey)
186{ 186{
187 int cappedrate=0; 187 // int cappedrate=0;
188 double dRx=1.0,dRxnew=1.0; 188 double dRx=1.0,dRxnew=1.0;
189 double dRxnew2; 189 double dRxnew2;
190 190
191 int iSteps=m_fr.Steps(); 191 int iSteps=m_fr.Steps();
192 192
193 if (Mousex<m_DasherOX) { 193 if (Mousex<m_DasherOX) {
194 //rx=1.0001*Ixmap[mx]/Ixmap[cx]; 194 //rx=1.0001*Ixmap[mx]/Ixmap[cx];
195 if (Mousex<=0) 195 if (Mousex<=0)
196 Mousex=1; 196 Mousex=1;
197 dRx=1.0*m_DasherOX/Mousex; 197 dRx=1.0*m_DasherOX/Mousex;
198 dRxnew=pow(dRx,1.0/iSteps); // or exp(log(rx)/steps) - i think the replacement is faster 198 dRxnew=pow(dRx,1.0/iSteps); // or exp(log(rx)/steps) - i think the replacement is faster
199 199
200 dRxnew2=1+(dRx-1)/iSteps; 200 dRxnew2=1+(dRx-1)/iSteps;
201 //+(rx-1)*(rx-1)*(1.0/fr.steps()-1.0)/2/fr.steps(); 201 //+(rx-1)*(rx-1)*(1.0/fr.steps()-1.0)/2/fr.steps();
202 202
203 203
204 const double dRxmax=m_fr.Rxmax(); 204 const double dRxmax=m_fr.Rxmax();
205 if (dRxnew>dRxmax) 205 if (dRxnew>dRxmax)
206 dRxnew=dRxmax; 206 dRxnew=dRxmax;
207 // cappedrate=1; 207 // cappedrate=1;
208 } else { 208 } else {
209 if (Mousex==m_DasherOX) 209 if (Mousex==m_DasherOX)
210 Mousex++; 210 Mousex++;
211 // OutputDebugString(TEXT("zoom out\n")); 211 // OutputDebugString(TEXT("zoom out\n"));
@@ -222,49 +222,49 @@ void CDasherModel::Get_new_root_coords(myint Mousex,myint Mousey)
222 //OutputDebugString(debug); 222 //OutputDebugString(debug);
223 //wsprintf(debug,TEXT("rx %f rxnew %f\n"),rx,rxnew); 223 //wsprintf(debug,TEXT("rx %f rxnew %f\n"),rx,rxnew);
224 //OutputDebugString(debug); 224 //OutputDebugString(debug);
225 myint above=(Mousey-m_Rootmin);//*(1-rxnew)/(1-rx); 225 myint above=(Mousey-m_Rootmin);//*(1-rxnew)/(1-rx);
226 myint below=(m_Rootmax-Mousey);//*(1-rxnew)/(1-rx); 226 myint below=(m_Rootmax-Mousey);//*(1-rxnew)/(1-rx);
227 227
228 //wsprintf(debug,TEXT("above %I64d below %I64d \n"),above,below); 228 //wsprintf(debug,TEXT("above %I64d below %I64d \n"),above,below);
229 //OutputDebugString(debug); 229 //OutputDebugString(debug);
230 230
231 myint miDistance=m_DasherY/2-Mousey; 231 myint miDistance=m_DasherY/2-Mousey;
232 miDistance=myint(miDistance*(dRxnew-1)/(dRx-1)); 232 miDistance=myint(miDistance*(dRxnew-1)/(dRx-1));
233 myint miNewrootzoom=Mousey+miDistance; 233 myint miNewrootzoom=Mousey+miDistance;
234 234
235 myint newRootmax=miNewrootzoom+myint(below*dRxnew); 235 myint newRootmax=miNewrootzoom+myint(below*dRxnew);
236 myint newRootmin=miNewrootzoom-myint(above*dRxnew); 236 myint newRootmin=miNewrootzoom-myint(above*dRxnew);
237 if (newRootmin<m_DasherY/2 && newRootmax>m_DasherY/2 && newRootmax<LLONG_MAX && newRootmin>LLONG_MIN) { 237 if (newRootmin<m_DasherY/2 && newRootmax>m_DasherY/2 && newRootmax<LLONG_MAX && newRootmin>LLONG_MIN) {
238 m_Rootmax=newRootmax; 238 m_Rootmax=newRootmax;
239 m_Rootmin=newRootmin; 239 m_Rootmin=newRootmin;
240 } 240 }
241 241
242} 242}
243 243
244///////////////////////////////////////////////////////////////////////////// 244/////////////////////////////////////////////////////////////////////////////
245 245
246void CDasherModel::Tap_on_display(myint miMousex,myint miMousey, unsigned long Time) 246void CDasherModel::Tap_on_display(myint miMousex,myint miMousey, unsigned long )
247 // work out the next viewpoint, opens some new nodes 247 // work out the next viewpoint, opens some new nodes
248{ 248{
249 // works out next viewpoint 249 // works out next viewpoint
250 Get_new_root_coords(miMousex,miMousey); 250 Get_new_root_coords(miMousex,miMousey);
251 251
252 // opens up new nodes 252 // opens up new nodes
253 253
254 // push node under mouse 254 // push node under mouse
255 CDasherNode *under_mouse=Get_node_under_mouse(miMousex,miMousey); 255 CDasherNode *under_mouse=Get_node_under_mouse(miMousex,miMousey);
256 under_mouse->Push_Node(); 256 under_mouse->Push_Node();
257 257
258 258
259 if (Framerate() > 4) { 259 if (Framerate() > 4) {
260 // push node under mouse but with x coord on RHS 260 // push node under mouse but with x coord on RHS
261 CDasherNode *right=Get_node_under_mouse(50,miMousey); 261 CDasherNode *right=Get_node_under_mouse(50,miMousey);
262 right->Push_Node(); 262 right->Push_Node();
263 } 263 }
264 264
265 if (Framerate() > 8) { 265 if (Framerate() > 8) {
266 // push node under the crosshair 266 // push node under the crosshair
267 CDasherNode *under_cross=Get_node_under_crosshair(); 267 CDasherNode *under_cross=Get_node_under_crosshair();
268 under_cross->Push_Node(); 268 under_cross->Push_Node();
269 } 269 }
270 270
diff --git a/inputmethods/dasher/DasherNode.cpp b/inputmethods/dasher/DasherNode.cpp
index 26af10f..3a984ef 100644
--- a/inputmethods/dasher/DasherNode.cpp
+++ b/inputmethods/dasher/DasherNode.cpp
@@ -11,49 +11,49 @@ using namespace Dasher;
11using namespace Opts; 11using namespace Opts;
12using namespace std; 12using namespace std;
13 13
14///////////////////////////////////////////////////////////////////////////// 14/////////////////////////////////////////////////////////////////////////////
15 15
16void CDasherNode::Dump_node () const 16void CDasherNode::Dump_node () const
17 { 17 {
18 /* TODO sort out 18 /* TODO sort out
19 dchar out[256]; 19 dchar out[256];
20 if (m_Symbol) 20 if (m_Symbol)
21 wsprintf(out,TEXT("%7x %3c %7x %5d %7x %5d %8x %8x \n"),this,m_Symbol,m_iGroup,m_context,m_Children,m_Cscheme,m_iLbnd,m_iHbnd); 21 wsprintf(out,TEXT("%7x %3c %7x %5d %7x %5d %8x %8x \n"),this,m_Symbol,m_iGroup,m_context,m_Children,m_Cscheme,m_iLbnd,m_iHbnd);
22 else 22 else
23 wsprintf(out,TEXT("%7x %7x %5d %7x %5d %8x %8x \n"),this,m_iGroup,m_context,m_Children,m_Cscheme,m_iLbnd,m_iHbnd); 23 wsprintf(out,TEXT("%7x %7x %5d %7x %5d %8x %8x \n"),this,m_iGroup,m_context,m_Children,m_Cscheme,m_iLbnd,m_iHbnd);
24 24
25 OutputDebugString(out); 25 OutputDebugString(out);
26 26
27 if (m_Children) { 27 if (m_Children) {
28 unsigned int i; 28 unsigned int i;
29 for (i=1;i<m_iChars;i++) 29 for (i=1;i<m_iChars;i++)
30 m_Children[i]->Dump_node(); 30 m_Children[i]->Dump_node();
31 } 31 }
32 */ 32 */
33} 33}
34 34
35void CDasherNode::Generic_Push_Node(CLanguageModel::CNodeContext *context) { 35void CDasherNode::Generic_Push_Node(CLanguageModel::CNodeContext *) {
36 36
37 m_iAge=0; 37 m_iAge=0;
38 m_bAlive=true; 38 m_bAlive=true;
39 if (m_Symbol && !m_iChars) // make sure it's a valid symbol and don't enter if already done 39 if (m_Symbol && !m_iChars) // make sure it's a valid symbol and don't enter if already done
40 m_languagemodel->EnterNodeSymbol(m_context,m_Symbol); 40 m_languagemodel->EnterNodeSymbol(m_context,m_Symbol);
41 41
42 42
43 vector<symbol> newchars; // place to put this list of characters 43 vector<symbol> newchars; // place to put this list of characters
44 vector<unsigned int> cum,groups; // for the probability list 44 vector<unsigned int> cum,groups; // for the probability list
45 m_languagemodel->GetNodeProbs(m_context,newchars,groups,cum,0.003); 45 m_languagemodel->GetNodeProbs(m_context,newchars,groups,cum,0.003);
46 m_iChars=newchars.size(); 46 m_iChars=newchars.size();
47 // work out cumulative probs 47 // work out cumulative probs
48 unsigned int i; 48 unsigned int i;
49 for (i=1;i<m_iChars;i++) 49 for (i=1;i<m_iChars;i++)
50 cum[i]+=cum[i-1]; 50 cum[i]+=cum[i-1];
51 51
52 m_Children =new CDasherNode *[m_iChars]; 52 m_Children =new CDasherNode *[m_iChars];
53 53
54 // create the children 54 // create the children
55 ColorSchemes NormalScheme, SpecialScheme; 55 ColorSchemes NormalScheme, SpecialScheme;
56 if ((m_ColorScheme==Nodes1) || (m_ColorScheme==Special1)) { 56 if ((m_ColorScheme==Nodes1) || (m_ColorScheme==Special1)) {
57 NormalScheme = Nodes2; 57 NormalScheme = Nodes2;
58 SpecialScheme = Special2; 58 SpecialScheme = Special2;
59 } else { 59 } else {
diff --git a/inputmethods/dasher/DasherNode.h b/inputmethods/dasher/DasherNode.h
index 705a9d4..fb00d47 100644
--- a/inputmethods/dasher/DasherNode.h
+++ b/inputmethods/dasher/DasherNode.h
@@ -53,51 +53,65 @@ public:
53 symbol Symbol() const {return m_Symbol;} 53 symbol Symbol() const {return m_Symbol;}
54 unsigned int Chars() const {return m_iChars;} 54 unsigned int Chars() const {return m_iChars;}
55 int Phase() const {return m_iPhase;} 55 int Phase() const {return m_iPhase;}
56 Opts::ColorSchemes Cscheme() const {return m_ColorScheme;} 56 Opts::ColorSchemes Cscheme() const {return m_ColorScheme;}
57 int Colour() const {return m_iColour;} 57 int Colour() const {return m_iColour;}
58 58
59 CDasherNode* const Get_node_under(int,myint y1,myint y2,myint smousex,myint smousey); // find node under given co-ords 59 CDasherNode* const Get_node_under(int,myint y1,myint y2,myint smousex,myint smousey); // find node under given co-ords
60 void Get_string_under(const int,const myint y1,const myint y2,const myint smousex,const myint smousey,std::vector<symbol>&) const; // get string under given co-ords 60 void Get_string_under(const int,const myint y1,const myint y2,const myint smousex,const myint smousey,std::vector<symbol>&) const; // get string under given co-ords
61 void Generic_Push_Node(CLanguageModel::CNodeContext *context); 61 void Generic_Push_Node(CLanguageModel::CNodeContext *context);
62 void Push_Node(); // give birth to children 62 void Push_Node(); // give birth to children
63 void Push_Node(CLanguageModel::CNodeContext *context); // give birth to children with this context 63 void Push_Node(CLanguageModel::CNodeContext *context); // give birth to children with this context
64 void Delete_children(); 64 void Delete_children();
65 void Dump_node() const; // diagnostic 65 void Dump_node() const; // diagnostic
66}; 66};
67 67
68///////////////////////////////////////////////////////////////////////////// 68/////////////////////////////////////////////////////////////////////////////
69// Inline functions 69// Inline functions
70///////////////////////////////////////////////////////////////////////////// 70/////////////////////////////////////////////////////////////////////////////
71 71
72using namespace Dasher; 72using namespace Dasher;
73using namespace Opts; 73using namespace Opts;
74 74
75///////////////////////////////////////////////////////////////////////////// 75/////////////////////////////////////////////////////////////////////////////
76 76
77inline CDasherNode::CDasherNode(CDasherNode *parent,symbol Symbol, unsigned int igroup, int iphase, ColorSchemes ColorScheme,int ilbnd,int ihbnd,CLanguageModel *lm, int Colour=0) 77inline CDasherNode::CDasherNode(CDasherNode *parent,symbol Symbol, unsigned int igroup, int iphase, ColorSchemes ColorScheme,int ilbnd,int ihbnd,CLanguageModel *lm, int Colour=0) :
78 : m_parent(parent),m_Symbol(Symbol),m_iGroup(igroup),m_iLbnd(ilbnd),m_iHbnd(ihbnd),m_languagemodel(lm),m_iPhase(iphase), 78 m_iLbnd(ilbnd),
79 m_context(0), m_iAge(0), m_bAlive(1), m_Children(0), m_bForce(false), m_iChars(0), m_ColorScheme(ColorScheme), m_bControlChild(false), m_iColour(Colour) 79 m_iHbnd(ihbnd),
80 m_iGroup(igroup),
81 m_iChars(0),
82 m_iAge(0),
83 m_bAlive(1),
84 m_bControlChild(false),
85 m_ColorScheme(ColorScheme),
86 m_iPhase(iphase),
87 m_iColour(Colour),
88 m_Symbol(Symbol),
89 m_languagemodel(lm),
90 m_Children(0),
91 m_parent(parent),
92 m_context(0),
93 m_bForce(false)
80{ 94{
81 /* 95 /*
82 switch (ColorScheme) { 96 switch (ColorScheme) {
83 case Nodes1: 97 case Nodes1:
84 m_ColorScheme = Nodes2; 98 m_ColorScheme = Nodes2;
85 break; 99 break;
86 case Nodes2: 100 case Nodes2:
87 m_ColorScheme = Nodes1; 101 m_ColorScheme = Nodes1;
88 break; 102 break;
89 case Special1: 103 case Special1:
90 m_ColorScheme = Special2; 104 m_ColorScheme = Special2;
91 break; 105 break;
92 case Special2: 106 case Special2:
93 m_ColorScheme = Special1; 107 m_ColorScheme = Special1;
94 break; 108 break;
95 case default: 109 case default:
96 m_ColorScheme = ColorScheme; 110 m_ColorScheme = ColorScheme;
97 break; 111 break;
98 } 112 }
99 */ 113 */
100} 114}
101 115
102///////////////////////////////////////////////////////////////////////////// 116/////////////////////////////////////////////////////////////////////////////
103 117
diff --git a/inputmethods/dasher/DasherSettingsInterface.h b/inputmethods/dasher/DasherSettingsInterface.h
index 9d03eba..34b55d4 100644
--- a/inputmethods/dasher/DasherSettingsInterface.h
+++ b/inputmethods/dasher/DasherSettingsInterface.h
@@ -1,122 +1,122 @@
1// DasherSettingsInterface.h 1// DasherSettingsInterface.h
2// 2//
3///////////////////////////////////////////////////////////////////////////// 3/////////////////////////////////////////////////////////////////////////////
4// 4//
5// Copyright (c) 2002 Iain Murray 5// Copyright (c) 2002 Iain Murray
6// 6//
7///////////////////////////////////////////////////////////////////////////// 7/////////////////////////////////////////////////////////////////////////////
8 8
9 9
10#ifndef __DasherSettingsInterface_h__ 10#ifndef __DasherSettingsInterface_h__
11#define __DasherSettingsInterface_h__ 11#define __DasherSettingsInterface_h__
12 12
13#include "DasherTypes.h" 13#include "DasherTypes.h"
14#include "SettingsStore.h" 14#include "SettingsStore.h"
15 15
16namespace Dasher {class CDasherSettingsInterface;} 16namespace Dasher {class CDasherSettingsInterface;}
17class Dasher::CDasherSettingsInterface 17class Dasher::CDasherSettingsInterface
18{ 18{
19public: 19public:
20 void SettingsDefaults(CSettingsStore* Store); 20 void SettingsDefaults(CSettingsStore* Store);
21 21
22 // These actually affect the way Dasher works 22 // These actually affect the way Dasher works
23 //! Change the alphabet in use to NewAlphabetID 23 //! Change the alphabet in use to NewAlphabetID
24 virtual void ChangeAlphabet(const std::string& NewAlphabetID) {}; 24 virtual void ChangeAlphabet(const std::string& ) {};
25 25
26 //! Change the maximum bitrate (effectively the speed) of Dasher 26 //! Change the maximum bitrate (effectively the speed) of Dasher
27 virtual void ChangeMaxBitRate(double NewMaxBitRate) {}; 27 virtual void ChangeMaxBitRate(double ) {};
28 28
29 //! Generate a new langage model. Not usually needed 29 //! Generate a new langage model. Not usually needed
30 virtual void ChangeLanguageModel(unsigned int NewLanguageModelID) {}; 30 virtual void ChangeLanguageModel(unsigned int ) {};
31 31
32 //! Generate a new view of the model. Call it with 0 when starting up 32 //! Generate a new view of the model. Call it with 0 when starting up
33 virtual void ChangeView(unsigned int NewViewID) {}; 33 virtual void ChangeView(unsigned int ) {};
34 34
35 //! Change the orientation (l->r, r->l, so on) of the model 35 //! Change the orientation (l->r, r->l, so on) of the model
36 virtual void ChangeOrientation(Opts::ScreenOrientations Orientation) {}; 36 virtual void ChangeOrientation(Opts::ScreenOrientations ) {};
37 37
38 //! Set the file encoding of output files to Encoding 38 //! Set the file encoding of output files to Encoding
39 virtual void SetFileEncoding(Opts::FileEncodingFormats Encoding) {}; 39 virtual void SetFileEncoding(Opts::FileEncodingFormats ) {};
40 40
41 //! Inform the core that the screen has this size 41 //! Inform the core that the screen has this size
42 virtual void SetScreenSize(long Width, long Height) {}; 42 virtual void SetScreenSize(long , long ) {};
43 43
44 //! Set the size of the font used in the Dasher canvas 44 //! Set the size of the font used in the Dasher canvas
45 virtual void SetDasherFontSize(Dasher::Opts::FontSize fontsize) {}; 45 virtual void SetDasherFontSize(Dasher::Opts::FontSize ) {};
46 46
47 //! Set the number of dimensions of input (either 1 or 2) 47 //! Set the number of dimensions of input (either 1 or 2)
48 virtual void SetDasherDimensions(bool Value) {}; 48 virtual void SetDasherDimensions(bool ) {};
49 49
50 // These are recommended options for the Dasher GUI. {{{ They don't actually 50 // These are recommended options for the Dasher GUI. {{{ They don't actually
51 // change the way Dasher works. They are part of the Dasher interface 51 // change the way Dasher works. They are part of the Dasher interface
52 // anyway so that it can handle option saving for you, and to make it 52 // anyway so that it can handle option saving for you, and to make it
53 // easy for the Dasher engine to control the GUI later on. }}} 53 // easy for the Dasher engine to control the GUI later on. }}}
54 54
55 //! True if toolbar should be shown, false otherwise 55 //! True if toolbar should be shown, false otherwise
56 virtual void ShowToolbar(bool Value) {}; 56 virtual void ShowToolbar(bool ) {};
57 57
58 //! True if toolbar should show text, false otherwse 58 //! True if toolbar should show text, false otherwse
59 virtual void ShowToolbarText(bool Value) {}; 59 virtual void ShowToolbarText(bool ) {};
60 60
61 //! True if toolbar should have large icons, false otherwise 61 //! True if toolbar should have large icons, false otherwise
62 virtual void ShowToolbarLargeIcons(bool Value) {}; 62 virtual void ShowToolbarLargeIcons(bool ) {};
63 63
64 //! True if the speed slider should be shown, false otherwise 64 //! True if the speed slider should be shown, false otherwise
65 virtual void ShowSpeedSlider(bool Value) {}; 65 virtual void ShowSpeedSlider(bool ) {};
66 66
67 //! True if the window layout should be fixed, false otherwise 67 //! True if the window layout should be fixed, false otherwise
68 virtual void FixLayout(bool Value) {}; 68 virtual void FixLayout(bool ) {};
69 69
70 //! True if new files should be timestamped, false otherwise 70 //! True if new files should be timestamped, false otherwise
71 virtual void TimeStampNewFiles(bool Value) {}; 71 virtual void TimeStampNewFiles(bool ) {};
72 72
73 //! True if all text should be copied to clipboard when Dasher is stopped, false otherwise 73 //! True if all text should be copied to clipboard when Dasher is stopped, false otherwise
74 virtual void CopyAllOnStop(bool Value) {}; 74 virtual void CopyAllOnStop(bool ) {};
75 75
76 //! True if a box should be drawn to represent the logical position of the mouse 76 //! True if a box should be drawn to represent the logical position of the mouse
77 virtual void DrawMouse(bool Value) {}; 77 virtual void DrawMouse(bool ) {};
78 78
79 //! Set the editbox font 79 //! Set the editbox font
80 virtual void SetEditFont(std::string Name, long Size) {}; 80 virtual void SetEditFont(std::string , long ) {};
81 81
82 //! Set the canvas font 82 //! Set the canvas font
83 virtual void SetDasherFont(std::string Name) {}; 83 virtual void SetDasherFont(std::string ) {};
84 84
85 //! Set the height of the edit box 85 //! Set the height of the edit box
86 virtual void SetEditHeight(long Value) {}; 86 virtual void SetEditHeight(long ) {};
87 87
88 //! Should Dasher start and stop on space bar? 88 //! Should Dasher start and stop on space bar?
89 virtual void StartOnSpace(bool Value) {}; 89 virtual void StartOnSpace(bool ) {};
90 90
91 //! Should Dasher start and stop on left mouse button? 91 //! Should Dasher start and stop on left mouse button?
92 virtual void StartOnLeft(bool Value) {}; 92 virtual void StartOnLeft(bool ) {};
93 93
94 //! Should Dasher be keyboard controlled? 94 //! Should Dasher be keyboard controlled?
95 virtual void KeyControl(bool Value) {}; 95 virtual void KeyControl(bool ) {};
96 96
97 //! Should Dasher pause when the pointer leaves the window? 97 //! Should Dasher pause when the pointer leaves the window?
98 virtual void WindowPause(bool Value) {}; 98 virtual void WindowPause(bool ) {};
99}; 99};
100 100
101 101
102#include <string> 102#include <string>
103 103
104namespace Dasher 104namespace Dasher
105{ 105{
106namespace Keys 106namespace Keys
107{ 107{
108 // Standard Option strings. You are encouraged to use these constants. 108 // Standard Option strings. You are encouraged to use these constants.
109 // ------------------------------------------------------------------- 109 // -------------------------------------------------------------------
110 110
111 // bool options 111 // bool options
112 extern const std::string TIME_STAMP; 112 extern const std::string TIME_STAMP;
113 extern const std::string SHOW_TOOLBAR; 113 extern const std::string SHOW_TOOLBAR;
114 extern const std::string SHOW_TOOLBAR_TEXT; 114 extern const std::string SHOW_TOOLBAR_TEXT;
115 extern const std::string SHOW_LARGE_ICONS; 115 extern const std::string SHOW_LARGE_ICONS;
116 extern const std::string FIX_LAYOUT; 116 extern const std::string FIX_LAYOUT;
117 extern const std::string SHOW_SLIDER; 117 extern const std::string SHOW_SLIDER;
118 extern const std::string COPY_ALL_ON_STOP; 118 extern const std::string COPY_ALL_ON_STOP;
119 extern const std::string DRAW_MOUSE; 119 extern const std::string DRAW_MOUSE;
120 extern const std::string START_SPACE; 120 extern const std::string START_SPACE;
121 extern const std::string START_MOUSE; 121 extern const std::string START_MOUSE;
122 extern const std::string KEY_CONTROL; 122 extern const std::string KEY_CONTROL;
diff --git a/inputmethods/dasher/DasherView.cpp b/inputmethods/dasher/DasherView.cpp
index 3b8cb64..8e32cf1 100644
--- a/inputmethods/dasher/DasherView.cpp
+++ b/inputmethods/dasher/DasherView.cpp
@@ -3,56 +3,56 @@
3///////////////////////////////////////////////////////////////////////////// 3/////////////////////////////////////////////////////////////////////////////
4// 4//
5// Copyright (c) 2001-2002 David Ward 5// Copyright (c) 2001-2002 David Ward
6// 6//
7///////////////////////////////////////////////////////////////////////////// 7/////////////////////////////////////////////////////////////////////////////
8 8
9#include "DasherView.h" 9#include "DasherView.h"
10using namespace Dasher; 10using namespace Dasher;
11 11
12 12
13CDasherView::CDasherView(CDasherScreen* DasherScreen, CDasherModel& DasherModel, Opts::ScreenOrientations Orientation) 13CDasherView::CDasherView(CDasherScreen* DasherScreen, CDasherModel& DasherModel, Opts::ScreenOrientations Orientation)
14 : m_Screen(DasherScreen), m_DasherModel(DasherModel), ScreenOrientation(Orientation), ColourMode(false) 14 : m_Screen(DasherScreen), m_DasherModel(DasherModel), ScreenOrientation(Orientation), ColourMode(false)
15{ 15{
16 //XYScale = (double)m_Screen->GetHeight() / m_Screen->GetWidth(); 16 //XYScale = (double)m_Screen->GetHeight() / m_Screen->GetWidth();
17} 17}
18 18
19 19
20void CDasherView::ChangeOrientation(Dasher::Opts::ScreenOrientations Orientation) 20void CDasherView::ChangeOrientation(Dasher::Opts::ScreenOrientations Orientation)
21{ 21{
22 ScreenOrientation = Orientation; 22 ScreenOrientation = Orientation;
23 Render(); 23 Render();
24} 24}
25 25
26 26
27void CDasherView::FlushAt(int mousex,int mousey) 27void CDasherView::FlushAt(int ,int )
28{ 28{
29 m_DasherModel.Flush(0,0); 29 m_DasherModel.Flush(0,0);
30} 30}
31 31
32int CDasherView::RecursiveRender(CDasherNode* Render, myint y1,myint y2,int mostleft, bool text) 32int CDasherView::RecursiveRender(CDasherNode* Render, myint y1,myint y2,int mostleft, bool text)
33{ 33{
34 symbol CurChar = Render->Symbol(); 34 // symbol CurChar = Render->Symbol();
35 int Color; 35 int Color;
36 36
37 if (ColourMode==true) { 37 if (ColourMode==true) {
38 Color = Render->Colour(); 38 Color = Render->Colour();
39 } else { 39 } else {
40 Color = Render->Phase()%3; 40 Color = Render->Phase()%3;
41 } 41 }
42 42
43 if (RenderNode(Render->Symbol(), Color, Render->Cscheme(), y1, y2, mostleft, Render->m_bForce, text)) 43 if (RenderNode(Render->Symbol(), Color, Render->Cscheme(), y1, y2, mostleft, Render->m_bForce, text))
44 RenderGroups(Render, y1, y2, text); 44 RenderGroups(Render, y1, y2, text);
45 else 45 else
46 Render->Kill(); 46 Render->Kill();
47 47
48 CDasherNode** const Children=Render->Children(); 48 CDasherNode** const Children=Render->Children();
49 if (!Children) 49 if (!Children)
50 return 0; 50 return 0;
51 int norm=DasherModel().Normalization(); 51 int norm=DasherModel().Normalization();
52 for (unsigned int i=1; i<Render->Chars(); i++) { 52 for (unsigned int i=1; i<Render->Chars(); i++) {
53 if (Children[i]->Alive()) { 53 if (Children[i]->Alive()) {
54 myint Range=y2-y1; 54 myint Range=y2-y1;
55 myint newy1=y1+(Range*Children[i]->Lbnd())/norm; 55 myint newy1=y1+(Range*Children[i]->Lbnd())/norm;
56 myint newy2=y1+(Range*Children[i]->Hbnd())/norm; 56 myint newy2=y1+(Range*Children[i]->Hbnd())/norm;
57 RecursiveRender(Children[i], newy1, newy2, mostleft, text); 57 RecursiveRender(Children[i], newy1, newy2, mostleft, text);
58 } 58 }
diff --git a/inputmethods/dasher/DasherView.h b/inputmethods/dasher/DasherView.h
index 81cc24e..6257c03 100644
--- a/inputmethods/dasher/DasherView.h
+++ b/inputmethods/dasher/DasherView.h
@@ -7,49 +7,49 @@
7///////////////////////////////////////////////////////////////////////////// 7/////////////////////////////////////////////////////////////////////////////
8 8
9 9
10////////////////////////////////////////////////////////////////////// 10//////////////////////////////////////////////////////////////////////
11// DasherView.h: interface for the DasherView class. 11// DasherView.h: interface for the DasherView class.
12// Copyright 2002 David Ward 12// Copyright 2002 David Ward
13////////////////////////////////////////////////////////////////////// 13//////////////////////////////////////////////////////////////////////
14 14
15#ifndef __DasherView_h_ 15#ifndef __DasherView_h_
16#define __DasherView_h_ 16#define __DasherView_h_
17 17
18#include "MSVC_Unannoy.h" 18#include "MSVC_Unannoy.h"
19#include "DasherScreen.h" 19#include "DasherScreen.h"
20#include "DasherModel.h" 20#include "DasherModel.h"
21 21
22// CDasherView is an abstract view class 22// CDasherView is an abstract view class
23// The implentation must provide several functions - defined here as pure virtual functions 23// The implentation must provide several functions - defined here as pure virtual functions
24// See the CDasherViewSquare class for an example 24// See the CDasherViewSquare class for an example
25 25
26namespace Dasher {class CDasherView;} 26namespace Dasher {class CDasherView;}
27class Dasher::CDasherView 27class Dasher::CDasherView
28{ 28{
29public: 29public:
30 CDasherView(CDasherScreen* DasherScreen, CDasherModel& DasherModel, Dasher::Opts::ScreenOrientations Orientation=Dasher::Opts::LeftToRight); 30 CDasherView(CDasherScreen* DasherScreen, CDasherModel& DasherModel, Dasher::Opts::ScreenOrientations Orientation=Dasher::Opts::LeftToRight);
31 ~CDasherView() {} 31 virtual ~CDasherView() {}
32 32
33 void ChangeOrientation(Dasher::Opts::ScreenOrientations Orientation); 33 void ChangeOrientation(Dasher::Opts::ScreenOrientations Orientation);
34 34
35 // TODO Sort this out 35 // TODO Sort this out
36 void FlushAt(int mousex,int mousey); 36 void FlushAt(int mousex,int mousey);
37 37
38 // renders Dasher 38 // renders Dasher
39 inline void Render(); 39 inline void Render();
40 40
41 // translates the screen coordinates to Dasher coordinates and calls 41 // translates the screen coordinates to Dasher coordinates and calls
42 // dashermodel.TapOnDisplay 42 // dashermodel.TapOnDisplay
43 virtual void TapOnDisplay(int mousex, int mousey, unsigned long Time)=0; 43 virtual void TapOnDisplay(int mousex, int mousey, unsigned long Time)=0;
44 44
45 virtual void ChangeScreen(CDasherScreen* NewScreen) 45 virtual void ChangeScreen(CDasherScreen* NewScreen)
46 { 46 {
47 m_Screen=NewScreen; 47 m_Screen=NewScreen;
48 48
49 // DJW - removed floating point stuff 49 // DJW - removed floating point stuff
50 //XYScale = (double)m_Screen->GetHeight() / m_Screen->GetWidth(); 50 //XYScale = (double)m_Screen->GetHeight() / m_Screen->GetWidth();
51 } 51 }
52 52
53 virtual void DrawMouse(int mousex, int mousey)=0; 53 virtual void DrawMouse(int mousex, int mousey)=0;
54 virtual void DrawKeyboard()=0; 54 virtual void DrawKeyboard()=0;
55 55
diff --git a/inputmethods/dasher/PPMLanguageModel.cpp b/inputmethods/dasher/PPMLanguageModel.cpp
index b725a2b..137b07f 100644
--- a/inputmethods/dasher/PPMLanguageModel.cpp
+++ b/inputmethods/dasher/PPMLanguageModel.cpp
@@ -51,62 +51,62 @@ CPPMLanguageModel::CPPMnode * CPPMLanguageModel::CPPMnode::add_symbol_to_node(in
51 return search; 51 return search;
52 } 52 }
53 53
54} 54}
55 55
56 56
57///////////////////////////////////////////////////////////////////// 57/////////////////////////////////////////////////////////////////////
58// CPPMLanguageModel defs 58// CPPMLanguageModel defs
59///////////////////////////////////////////////////////////////////// 59/////////////////////////////////////////////////////////////////////
60 60
61CPPMLanguageModel::CPPMLanguageModel(CAlphabet *_alphabet,int _normalization) 61CPPMLanguageModel::CPPMLanguageModel(CAlphabet *_alphabet,int _normalization)
62 : CLanguageModel(_alphabet,_normalization) 62 : CLanguageModel(_alphabet,_normalization)
63{ 63{
64 root=new CPPMnode(-1); 64 root=new CPPMnode(-1);
65 m_rootcontext=new CPPMContext(root,0); 65 m_rootcontext=new CPPMContext(root,0);
66} 66}
67 67
68 68
69CPPMLanguageModel::~CPPMLanguageModel() 69CPPMLanguageModel::~CPPMLanguageModel()
70{ 70{
71 delete root; 71 delete root;
72} 72}
73 73
74 74
75bool CPPMLanguageModel::GetProbs(CContext *context,vector<unsigned int> &probs,double addprob) 75bool CPPMLanguageModel::GetProbs(CContext *context,vector<unsigned int> &probs,double )
76 // get the probability distribution at the context 76 // get the probability distribution at the context
77{ 77{
78 // seems like we have to have this hack for VC++ 78 // seems like we have to have this hack for VC++
79 CPPMContext *ppmcontext=static_cast<CPPMContext *> (context); 79 CPPMContext *ppmcontext=static_cast<CPPMContext *> (context);
80 80
81 81
82 int modelchars=GetNumberModelChars(); 82 int modelchars=GetNumberModelChars();
83 int norm=CLanguageModel::normalization(); 83 int norm=CLanguageModel::normalization();
84 probs.resize(modelchars); 84 probs.resize(modelchars);
85 CPPMnode *temp,*s; 85 CPPMnode *temp,*s;
86 int loop,total; 86 int loop,total;
87 int sym; 87 int sym;
88 ulong spent=0; 88 // ulong spent=0;
89 ulong size_of_slice; 89 ulong size_of_slice;
90 bool *exclusions=new bool [modelchars]; 90 bool *exclusions=new bool [modelchars];
91 ulong uniform=modelchars; 91 ulong uniform=modelchars;
92 ulong tospend=norm-uniform; 92 ulong tospend=norm-uniform;
93 temp=ppmcontext->head; 93 temp=ppmcontext->head;
94 for (loop=0; loop <modelchars; loop++) { /* set up the exclusions array */ 94 for (loop=0; loop <modelchars; loop++) { /* set up the exclusions array */
95 probs[loop]=0; 95 probs[loop]=0;
96 exclusions[loop]=0; 96 exclusions[loop]=0;
97 } 97 }
98 while (temp!=0) { 98 while (temp!=0) {
99 //Usprintf(debug,TEXT("tospend %u\n"),tospend); 99 //Usprintf(debug,TEXT("tospend %u\n"),tospend);
100 //DebugOutput(TEXT("round\n")); 100 //DebugOutput(TEXT("round\n"));
101 total=0; 101 total=0;
102 s=temp->child; 102 s=temp->child;
103 while (s) { 103 while (s) {
104 sym=s->symbol; 104 sym=s->symbol;
105 if (!exclusions[s->symbol]) 105 if (!exclusions[s->symbol])
106 total=total+s->count; 106 total=total+s->count;
107 s=s->next; 107 s=s->next;
108 } 108 }
109 if (total) { 109 if (total) {
110 //Usprintf(debug,TEXT"escape %u\n"),tospend* 110 //Usprintf(debug,TEXT"escape %u\n"),tospend*
111 size_of_slice=tospend; 111 size_of_slice=tospend;
112 s=temp->child; 112 s=temp->child;
@@ -171,49 +171,49 @@ void CPPMLanguageModel::AddSymbol(CPPMLanguageModel::CPPMContext &context,int sy
171 temp=context.head->vine; 171 temp=context.head->vine;
172 context.head=context.head->add_symbol_to_node(symbol,&updatecnt); 172 context.head=context.head->add_symbol_to_node(symbol,&updatecnt);
173 vineptr=context.head; 173 vineptr=context.head;
174 context.order++; 174 context.order++;
175 175
176 while (temp!=0) { 176 while (temp!=0) {
177 vineptr->vine=temp->add_symbol_to_node(symbol,&updatecnt); 177 vineptr->vine=temp->add_symbol_to_node(symbol,&updatecnt);
178 vineptr=vineptr->vine; 178 vineptr=vineptr->vine;
179 temp=temp->vine; 179 temp=temp->vine;
180 } 180 }
181 vineptr->vine=root; 181 vineptr->vine=root;
182 if (context.order>MAX_ORDER){ 182 if (context.order>MAX_ORDER){
183 context.head=context.head->vine; 183 context.head=context.head->vine;
184 context.order--; 184 context.order--;
185 } 185 }
186} 186}
187 187
188 188
189// update context with symbol 'Symbol' 189// update context with symbol 'Symbol'
190void CPPMLanguageModel::EnterSymbol(CContext* Context, modelchar Symbol) 190void CPPMLanguageModel::EnterSymbol(CContext* Context, modelchar Symbol)
191{ 191{
192 CPPMLanguageModel::CPPMContext& context = * static_cast<CPPMContext *> (Context); 192 CPPMLanguageModel::CPPMContext& context = * static_cast<CPPMContext *> (Context);
193 193
194 CPPMnode *find; 194 CPPMnode *find;
195 CPPMnode *temp=context.head; 195 // CPPMnode *temp=context.head;
196 196
197 while (context.head) { 197 while (context.head) {
198 find =context.head->find_symbol(Symbol); 198 find =context.head->find_symbol(Symbol);
199 if (find) { 199 if (find) {
200 context.order++; 200 context.order++;
201 context.head=find; 201 context.head=find;
202 //Usprintf(debug,TEXT("found context %x order %d\n"),head,order); 202 //Usprintf(debug,TEXT("found context %x order %d\n"),head,order);
203 //DebugOutput(debug); 203 //DebugOutput(debug);
204 return; 204 return;
205 } 205 }
206 context.order--; 206 context.order--;
207 context.head=context.head->vine; 207 context.head=context.head->vine;
208 } 208 }
209 209
210 if (context.head==0) { 210 if (context.head==0) {
211 context.head=root; 211 context.head=root;
212 context.order=0; 212 context.order=0;
213 } 213 }
214 214
215} 215}
216 216
217 217
218void CPPMLanguageModel::LearnSymbol(CContext* Context, modelchar Symbol) 218void CPPMLanguageModel::LearnSymbol(CContext* Context, modelchar Symbol)
219{ 219{
@@ -225,49 +225,49 @@ void CPPMLanguageModel::LearnSymbol(CContext* Context, modelchar Symbol)
225void CPPMLanguageModel::dumpSymbol(int symbol) 225void CPPMLanguageModel::dumpSymbol(int symbol)
226{ 226{
227 if ((symbol <= 32) || (symbol >= 127)) 227 if ((symbol <= 32) || (symbol >= 127))
228 printf( "<%d>", symbol ); 228 printf( "<%d>", symbol );
229 else 229 else
230 printf( "%c", symbol ); 230 printf( "%c", symbol );
231} 231}
232 232
233 233
234void CPPMLanguageModel::dumpString( char *str, int pos, int len ) 234void CPPMLanguageModel::dumpString( char *str, int pos, int len )
235 // Dump the string STR starting at position POS 235 // Dump the string STR starting at position POS
236{ 236{
237 char cc; 237 char cc;
238 int p; 238 int p;
239 for (p = pos; p<pos+len; p++) { 239 for (p = pos; p<pos+len; p++) {
240 cc = str [p]; 240 cc = str [p];
241 if ((cc <= 31) || (cc >= 127)) 241 if ((cc <= 31) || (cc >= 127))
242 printf( "<%d>", cc ); 242 printf( "<%d>", cc );
243 else 243 else
244 printf( "%c", cc ); 244 printf( "%c", cc );
245 } 245 }
246} 246}
247 247
248 248
249void CPPMLanguageModel::dumpTrie( CPPMLanguageModel::CPPMnode *t, int d ) 249void CPPMLanguageModel::dumpTrie( CPPMLanguageModel::CPPMnode *, int )
250 // diagnostic display of the PPM trie from node t and deeper 250 // diagnostic display of the PPM trie from node t and deeper
251{ 251{
252//TODO 252//TODO
253/* 253/*
254 dchar debug[256]; 254 dchar debug[256];
255 int sym; 255 int sym;
256 CPPMnode *s; 256 CPPMnode *s;
257 Usprintf( debug,TEXT("%5d %7x "), d, t ); 257 Usprintf( debug,TEXT("%5d %7x "), d, t );
258 //TODO: Uncomment this when headers sort out 258 //TODO: Uncomment this when headers sort out
259 //DebugOutput(debug); 259 //DebugOutput(debug);
260 if (t < 0) // pointer to input 260 if (t < 0) // pointer to input
261 printf( " <" ); 261 printf( " <" );
262 else { 262 else {
263 Usprintf(debug,TEXT( " %3d %5d %7x %7x %7x <"), t->symbol,t->count, t->vine, t->child, t->next ); 263 Usprintf(debug,TEXT( " %3d %5d %7x %7x %7x <"), t->symbol,t->count, t->vine, t->child, t->next );
264 //TODO: Uncomment this when headers sort out 264 //TODO: Uncomment this when headers sort out
265 //DebugOutput(debug); 265 //DebugOutput(debug);
266 } 266 }
267 267
268 dumpString( dumpTrieStr, 0, d ); 268 dumpString( dumpTrieStr, 0, d );
269 Usprintf( debug,TEXT(">\n") ); 269 Usprintf( debug,TEXT(">\n") );
270 //TODO: Uncomment this when headers sort out 270 //TODO: Uncomment this when headers sort out
271 //DebugOutput(debug); 271 //DebugOutput(debug);
272 if (t != 0) { 272 if (t != 0) {
273 s = t->child; 273 s = t->child;
diff --git a/inputmethods/dasher/PPMLanguageModel.h b/inputmethods/dasher/PPMLanguageModel.h
index bd860b8..7025a0a 100644
--- a/inputmethods/dasher/PPMLanguageModel.h
+++ b/inputmethods/dasher/PPMLanguageModel.h
@@ -1,68 +1,69 @@
1// PPMLanguageModel.h 1// PPMLanguageModel.h
2// 2//
3///////////////////////////////////////////////////////////////////////////// 3/////////////////////////////////////////////////////////////////////////////
4// 4//
5// Copyright (c) 1999-2002 David Ward 5// Copyright (c) 1999-2002 David Ward
6// 6//
7///////////////////////////////////////////////////////////////////////////// 7/////////////////////////////////////////////////////////////////////////////
8 8
9#ifndef __PPMLanguageModel_h__ 9#ifndef __PPMLanguageModel_h__
10#define __PPMLanguageModel_h__ 10#define __PPMLanguageModel_h__
11 11
12#include "NoClones.h" 12#include "NoClones.h"
13#include "MSVC_Unannoy.h" 13#include "MSVC_Unannoy.h"
14#include <vector> 14#include <vector>
15#include <stdio.h> 15#include <stdio.h>
16 16
17#include "LanguageModel.h" 17#include "LanguageModel.h"
18 18
19static char dumpTrieStr[40000]; 19// static char dumpTrieStr[40000];
20const int MAX_ORDER = 5; 20const int MAX_ORDER = 5;
21const int maxcont =200; 21const int maxcont =200;
22 22
23namespace Dasher {class CPPMLanguageModel;} 23namespace Dasher {class CPPMLanguageModel;}
24class Dasher::CPPMLanguageModel : public Dasher::CLanguageModel, private NoClones 24class Dasher::CPPMLanguageModel : public Dasher::CLanguageModel, private NoClones
25{ 25{
26public: 26public:
27 CPPMLanguageModel(CAlphabet *_alphabet, int _normalization); 27 CPPMLanguageModel(CAlphabet *_alphabet, int _normalization);
28 ~CPPMLanguageModel(); 28 virtual ~CPPMLanguageModel();
29 29
30 class CPPMnode { 30 class CPPMnode {
31 public: 31 public:
32 CPPMnode* find_symbol(int sym); 32 CPPMnode* find_symbol(int sym);
33 CPPMnode* add_symbol_to_node(int sym,int *update); 33 CPPMnode* add_symbol_to_node(int sym,int *update);
34 CPPMnode* child; 34 CPPMnode* child;
35 CPPMnode* next; 35 CPPMnode* next;
36 CPPMnode* vine; 36 CPPMnode* vine;
37 short int count; 37 short int count;
38 const short int symbol; 38 const short int symbol;
39 CPPMnode(int sym); 39 CPPMnode(int sym);
40 }; 40 };
41 41
42 class CPPMContext : public CContext { 42 class CPPMContext : public CContext {
43 public: 43 public:
44 CPPMContext(CPPMContext const &input) {head = input.head;order= input.order;} 44 CPPMContext(CPPMContext const &input) : CContext(input)
45 { head = input.head;order= input.order;}
45 CPPMContext(CPPMnode* _head=0, int _order=0) : head(_head),order(_order) {}; 46 CPPMContext(CPPMnode* _head=0, int _order=0) : head(_head),order(_order) {};
46 ~CPPMContext() {}; 47 ~CPPMContext() {};
47 void dump(); 48 void dump();
48 CPPMnode* head; 49 CPPMnode* head;
49 int order; 50 int order;
50 }; 51 };
51 52
52 void ReleaseContext(CContext*); 53 void ReleaseContext(CContext*);
53 CContext* GetRootContext(); 54 CContext* GetRootContext();
54 inline CContext* CloneContext(CContext*); 55 inline CContext* CloneContext(CContext*);
55 void EnterSymbol(CContext* context, modelchar Symbol); 56 void EnterSymbol(CContext* context, modelchar Symbol);
56 //inline bool GetProbs(CContext*,std::vector<symbol> &newchars,std::vector<unsigned int> &groups,std::vector<unsigned int> &probs,double addprob); 57 //inline bool GetProbs(CContext*,std::vector<symbol> &newchars,std::vector<unsigned int> &groups,std::vector<unsigned int> &probs,double addprob);
57 bool GetProbs(CContext*, std::vector<unsigned int> &Probs, double AddProb); 58 bool GetProbs(CContext*, std::vector<unsigned int> &Probs, double AddProb);
58 59
59 void LearnSymbol(CContext* Context, modelchar Symbol); 60 void LearnSymbol(CContext* Context, modelchar Symbol);
60 void dump(); 61 void dump();
61 62
62private: 63private:
63 CPPMContext *m_rootcontext; 64 CPPMContext *m_rootcontext;
64 CPPMnode *root; 65 CPPMnode *root;
65 void AddSymbol(CPPMContext& context,int symbol); 66 void AddSymbol(CPPMContext& context,int symbol);
66 void dumpSymbol(int symbol); 67 void dumpSymbol(int symbol);
67 void dumpString( char *str, int pos, int len ); 68 void dumpString( char *str, int pos, int len );
68 void dumpTrie( CPPMnode *t, int d ); 69 void dumpTrie( CPPMnode *t, int d );
diff --git a/inputmethods/dasher/QtDasherImpl.cc b/inputmethods/dasher/QtDasherImpl.cc
index d72f6d9..f4a70dd 100644
--- a/inputmethods/dasher/QtDasherImpl.cc
+++ b/inputmethods/dasher/QtDasherImpl.cc
@@ -1,48 +1,48 @@
1#include <iostream> 1#include <iostream>
2#include <qapplication.h> 2#include <qapplication.h>
3#include <qobject.h> 3#include <qobject.h>
4#include <qpixmap.h> 4#include <qpixmap.h>
5#include "DasherInterface.h" 5#include "DasherInterface.h"
6#include "QtDasherScreen.h" 6#include "QtDasherScreen.h"
7#include "QtDasherImpl.h" 7#include "QtDasherImpl.h"
8 8
9/* XPM */ 9/* XPM */
10static const char * qtdasher_xpm[]={ 10static const char * qtdasher_xpm[]={
11"28 7 2 1", 11"28 7 2 1",
12"# c #303030", 12"# c #303030",
13" c None", 13" c None",
14" ########################## ", 14" ########################## ",
15" ", 15" ",
16" # # ", 16" # # ",
17" # # # # ", 17" # # # # ",
18" # # # # ", 18" # # # # ",
19" # # # ", 19" # # # ",
20" ########################## "}; 20" ########################## "};
21 21
22 22
23QtDasherImpl::QtDasherImpl() 23QtDasherImpl::QtDasherImpl()
24 : qtdasherwidget(0), icn(0), qtdasherinterface(0) 24 : qtdasherinterface(0), qtdasherwidget(0), icn(0)
25{ 25{
26} 26}
27 27
28QtDasherImpl::~QtDasherImpl() 28QtDasherImpl::~QtDasherImpl()
29{ 29{
30 delete qtdasherwidget; 30 delete qtdasherwidget;
31 delete icn; 31 delete icn;
32} 32}
33 33
34QWidget *QtDasherImpl::inputMethod( QWidget *parent, Qt::WFlags f ) 34QWidget *QtDasherImpl::inputMethod( QWidget *parent, Qt::WFlags f )
35{ 35{
36 if ( !qtdasherwidget ) { 36 if ( !qtdasherwidget ) {
37 qtdasherwidget = new QtDasherPlugin( parent, "Dasher", f ); 37 qtdasherwidget = new QtDasherPlugin( parent, "Dasher", f );
38 } 38 }
39 return qtdasherwidget; 39 return qtdasherwidget;
40} 40}
41 41
42void QtDasherImpl::resetState() 42void QtDasherImpl::resetState()
43{ 43{
44 if ( qtdasherwidget ) 44 if ( qtdasherwidget )
45 qtdasherwidget->resetState(); 45 qtdasherwidget->resetState();
46} 46}
47 47
48QPixmap *QtDasherImpl::icon() 48QPixmap *QtDasherImpl::icon()
diff --git a/inputmethods/dasher/QtDasherPlugin.cc b/inputmethods/dasher/QtDasherPlugin.cc
index cf4fc2c..f491769 100644
--- a/inputmethods/dasher/QtDasherPlugin.cc
+++ b/inputmethods/dasher/QtDasherPlugin.cc
@@ -28,49 +28,49 @@ QtDasherPlugin::QtDasherPlugin(QWidget* parent, const char* name, WFlags f) : QF
28 utf8_codec = new QUtf8Codec; 28 utf8_codec = new QUtf8Codec;
29} 29}
30 30
31QSize QtDasherPlugin::sizeHint() const 31QSize QtDasherPlugin::sizeHint() const
32{ 32{
33 return QSize(240,100); 33 return QSize(240,100);
34} 34}
35 35
36QtDasherPlugin::~QtDasherPlugin() 36QtDasherPlugin::~QtDasherPlugin()
37{ 37{
38 delete d; 38 delete d;
39} 39}
40 40
41void QtDasherPlugin::resetState() 41void QtDasherPlugin::resetState()
42{ 42{
43 flushcount=0; 43 flushcount=0;
44 interface->Start(); 44 interface->Start();
45 interface->Redraw(); 45 interface->Redraw();
46} 46}
47 47
48void QtDasherPlugin::unflush() 48void QtDasherPlugin::unflush()
49{ 49{
50 if (flushcount==0) 50 if (flushcount==0)
51 return; 51 return;
52 for (flushcount; flushcount>0; flushcount--) { 52 for (; flushcount>0; flushcount--) {
53 deletetext(); 53 deletetext();
54 } 54 }
55} 55}
56 56
57void QtDasherPlugin::output(int Symbol) 57void QtDasherPlugin::output(int Symbol)
58{ 58{
59 std::string label = interface->GetEditText(Symbol); 59 std::string label = interface->GetEditText(Symbol);
60 QString unicodestring = utf8_codec->toUnicode(label.c_str()); 60 QString unicodestring = utf8_codec->toUnicode(label.c_str());
61 for (int i=0; i<int(unicodestring.length()); i++) { 61 for (int i=0; i<int(unicodestring.length()); i++) {
62 emit key( unicodestring[i].unicode(), 0, 0, true, false ); 62 emit key( unicodestring[i].unicode(), 0, 0, true, false );
63 emit key( unicodestring[i].unicode(), 0, 0, false, false ); 63 emit key( unicodestring[i].unicode(), 0, 0, false, false );
64 } 64 }
65} 65}
66 66
67void QtDasherPlugin::deletetext() 67void QtDasherPlugin::deletetext()
68{ 68{
69 emit key( 0, Qt::Key_Backspace, 0, true, false); 69 emit key( 0, Qt::Key_Backspace, 0, true, false);
70 emit key( 0, Qt::Key_Backspace, 0, false, false); 70 emit key( 0, Qt::Key_Backspace, 0, false, false);
71} 71}
72 72
73void QtDasherPlugin::flush(int Symbol) 73void QtDasherPlugin::flush(int Symbol)
74{ 74{
75 if (Symbol==0) 75 if (Symbol==0)
76 return; 76 return;
diff --git a/inputmethods/dasher/QtDasherPlugin.h b/inputmethods/dasher/QtDasherPlugin.h
index 5f70acf..c979a2f 100644
--- a/inputmethods/dasher/QtDasherPlugin.h
+++ b/inputmethods/dasher/QtDasherPlugin.h
@@ -1,42 +1,42 @@
1#include <qutfcodec.h> 1#include <qutfcodec.h>
2#include <qframe.h> 2#include <qframe.h>
3#include "QtDasherScreen.h" 3#include "QtDasherScreen.h"
4#include "DasherInterface.h" 4#include "DasherInterface.h"
5#include "DashEdit.h" 5#include "DashEdit.h"
6 6
7class QtDasherPlugin : public QFrame, public CDashEditbox 7class QtDasherPlugin : public QFrame, public CDashEditbox
8{ 8{
9 Q_OBJECT 9 Q_OBJECT
10public: 10public:
11 QtDasherPlugin(QWidget* parent=0, const char* name=0, WFlags f=0); 11 QtDasherPlugin(QWidget* parent=0, const char* name=0, WFlags f=0);
12 ~QtDasherPlugin(); 12 ~QtDasherPlugin();
13 13
14 void resetState(); 14 void resetState();
15 QSize sizeHint() const; 15 QSize sizeHint() const;
16 16
17 void write_to_file() {}; 17 void write_to_file() {};
18 void get_new_context(std::string&, int) {}; 18 void get_new_context(std::string&, int) {};
19 void unflush(); 19 void unflush();
20 void output(int); 20 void output(int);
21 void deletetext(); 21 void deletetext();
22 void flush(int); 22 void flush(int);
23 void Clear() {}; 23 void Clear() {};
24 void SetEncoding(Dasher::Opts::FileEncodingFormats) {}; 24 void SetEncoding(Dasher::Opts::FileEncodingFormats) {};
25 void SetFont(std::string Name, long Size) {}; 25 void SetFont(std::string , long ) {};
26 26
27 signals: 27 signals:
28 void key( ushort, ushort, ushort, bool, bool); 28 void key( ushort, ushort, ushort, bool, bool);
29 29
30 private: 30 private:
31 QtDasherScreen *d; 31 QtDasherScreen *d;
32 CDasherInterface *interface; 32 CDasherInterface *interface;
33 int flushcount; 33 int flushcount;
34 QUtf8Codec *utf8_codec; 34 QUtf8Codec *utf8_codec;
35}; 35};
36 36
37 37
38 38
39 39
40 40
41 41
42 42
diff --git a/inputmethods/dasher/QtDasherScreen.cc b/inputmethods/dasher/QtDasherScreen.cc
index 747b705..2179cfb 100644
--- a/inputmethods/dasher/QtDasherScreen.cc
+++ b/inputmethods/dasher/QtDasherScreen.cc
@@ -1,59 +1,64 @@
1// QtDasherScreen.cc 1// QtDasherScreen.cc
2// (c) 2003 Yann Dirson 2// (c) 2003 Yann Dirson
3// Derived from GtkDasherCanvas.cc 3// Derived from GtkDasherCanvas.cc
4// (c) 2002 Philip Cowans 4// (c) 2002 Philip Cowans
5 5
6#include <iostream> 6#include <iostream>
7#include <string> 7#include <string>
8 8
9#include <qpointarray.h> 9#include <qpointarray.h>
10#include <qpoint.h> 10#include <qpoint.h>
11 11
12#include "QtDasherScreen.h" 12#include "QtDasherScreen.h"
13#include "DasherScreen.h" 13#include "DasherScreen.h"
14#include "SettingsStore.h" 14#include "SettingsStore.h"
15 15
16#define MAXFONTSIZE 25 16#define MAXFONTSIZE 25
17#define MINFONTSIZE 8 17#define MINFONTSIZE 8
18 18
19QtDasherScreen::QtDasherScreen (int _width, int _height, 19QtDasherScreen::QtDasherScreen (int _width, int _height,
20 CDasherInterface *_interface, 20 CDasherInterface *_interface,
21 QWidget * _parent, Dasher::CDashEditbox *edit): 21 QWidget * _parent,
22 QWidget(_parent), interface( _interface ), 22 Dasher::CDashEditbox *_edit):
23 fontname( "fixed" ), fontsize(12), 23 QWidget(_parent),
24 Dasher::CDasherScreen(_width, _height) 24 Dasher::CDasherScreen(_width, _height),
25 fontsize(12),
26 interface( _interface ),
27 fontname( "fixed" )
25{ 28{
26 font = QFont (fontname.c_str(), fontsize); 29 font = QFont (fontname.c_str(), fontsize);
27 painter = new QPainter (); 30 painter = new QPainter ();
28 31
29 pixmap = new QPixmap (_width, _height); 32 pixmap = new QPixmap (_width, _height);
30 pixmap->setOptimization(QPixmap::BestOptim); 33 pixmap->setOptimization(QPixmap::BestOptim);
31 interface->SetSettingsStore(new CSettingsStore); 34 interface->SetSettingsStore(new CSettingsStore);
32 35
33 interface->ChangeLanguageModel(0); 36 interface->ChangeLanguageModel(0);
34 interface->ChangeView(0); 37 interface->ChangeView(0);
35 interface->ChangeEdit(edit); 38 interface->ChangeEdit(_edit);
39 edit = _edit;
40
36 41
37/* interface->GetFontSizes(&FontSizes); 42/* interface->GetFontSizes(&FontSizes);
38 43
39 for (int i=0; i<FontSizes.size(); i++) { 44 for (int i=0; i<FontSizes.size(); i++) {
40 if (FontSizes[i]>Fonts.size()) 45 if (FontSizes[i]>Fonts.size())
41 Fonts.resize((FontSizes[i])+1); 46 Fonts.resize((FontSizes[i])+1);
42 Fonts[FontSizes[i]]= QFont (fontname.c_str(), FontSizes[i]); 47 Fonts[FontSizes[i]]= QFont (fontname.c_str(), FontSizes[i]);
43// Fonts[FontSizes[i]].setPixelSize(FontSizes[i]); 48// Fonts[FontSizes[i]].setPixelSize(FontSizes[i]);
44 } 49 }
45*/ 50*/
46 interface->ChangeScreen(this); 51 interface->ChangeScreen(this);
47 52
48 paused=true; 53 paused=true;
49 54
50 QTimer *tmr = new QTimer(this); 55 QTimer *tmr = new QTimer(this);
51 connect (tmr, SIGNAL(timeout()), SLOT(timer())); 56 connect (tmr, SIGNAL(timeout()), SLOT(timer()));
52 tmr->start(200); 57 tmr->start(200);
53 58
54} 59}
55 60
56long QtDasherScreen::get_time() 61long QtDasherScreen::get_time()
57{ 62{
58 long s_now; 63 long s_now;
59 long ms_now; 64 long ms_now;
@@ -122,49 +127,49 @@ static void Points_to_QPointArray(const Dasher::CDasherScreen::point* const poin
122{ 127{
123 for (int i = 0; i < number; i++) { 128 for (int i = 0; i < number; i++) {
124 qpa.setPoint (i, points[i].x, points[i].y); 129 qpa.setPoint (i, points[i].x, points[i].y);
125 } 130 }
126} 131}
127 132
128void QtDasherScreen::Polyline(point* Points, int Number) const 133void QtDasherScreen::Polyline(point* Points, int Number) const
129{ 134{
130 QPointArray qpa(Number); 135 QPointArray qpa(Number);
131 Points_to_QPointArray (Points, Number, qpa); 136 Points_to_QPointArray (Points, Number, qpa);
132 painter->setPen (SolidLine); 137 painter->setPen (SolidLine);
133 painter->drawPolyline (qpa); 138 painter->drawPolyline (qpa);
134 painter->setPen (NoPen); 139 painter->setPen (NoPen);
135} 140}
136 141
137void QtDasherScreen::DrawPolygon(point* Points, int Number, int Color, 142void QtDasherScreen::DrawPolygon(point* Points, int Number, int Color,
138 Opts::ColorSchemes ColorScheme) const 143 Opts::ColorSchemes ColorScheme) const
139{ 144{
140 painter->setBrush (getColor (Color, ColorScheme)); 145 painter->setBrush (getColor (Color, ColorScheme));
141 QPointArray qpa(Number); 146 QPointArray qpa(Number);
142 Points_to_QPointArray (Points, Number, qpa); 147 Points_to_QPointArray (Points, Number, qpa);
143 painter->drawPolygon (qpa); 148 painter->drawPolygon (qpa);
144} 149}
145 150
146void QtDasherScreen::mousePressEvent (QMouseEvent *e) 151void QtDasherScreen::mousePressEvent (QMouseEvent *)
147{ 152{
148 paused=false; 153 paused=false;
149 interface->Unpause(get_time()); 154 interface->Unpause(get_time());
150} 155}
151 156
152void QtDasherScreen::mouseReleaseEvent(QMouseEvent *e) 157void QtDasherScreen::mouseReleaseEvent(QMouseEvent *e)
153{ 158{
154 QPoint p = e->pos(); 159 QPoint p = e->pos();
155 interface->PauseAt(p.x(), p.y()); 160 interface->PauseAt(p.x(), p.y());
156 paused=true; 161 paused=true;
157} 162}
158 163
159void QtDasherScreen::timer() 164void QtDasherScreen::timer()
160{ 165{
161 if (paused==false) { 166 if (paused==false) {
162 QPoint cursorpos; 167 QPoint cursorpos;
163 cursorpos=this->cursor().pos(); 168 cursorpos=this->cursor().pos();
164 cursorpos=mapFromGlobal(cursorpos); 169 cursorpos=mapFromGlobal(cursorpos);
165 170
166 interface->TapOn(cursorpos.x(), cursorpos.y(), get_time()); 171 interface->TapOn(cursorpos.x(), cursorpos.y(), get_time());
167 } 172 }
168} 173}
169 174
170 175
diff --git a/inputmethods/dasher/QtDasherScreen.h b/inputmethods/dasher/QtDasherScreen.h
index 06689d6..d3d67cb 100644
--- a/inputmethods/dasher/QtDasherScreen.h
+++ b/inputmethods/dasher/QtDasherScreen.h
@@ -15,59 +15,59 @@
15#include <qstring.h> 15#include <qstring.h>
16#include <qpixmap.h> 16#include <qpixmap.h>
17#include <qtimer.h> 17#include <qtimer.h>
18#include <qcursor.h> 18#include <qcursor.h>
19 19
20#include "DasherScreen.h" 20#include "DasherScreen.h"
21#include "DashEdit.h" 21#include "DashEdit.h"
22#include "DasherInterface.h" 22#include "DasherInterface.h"
23 23
24using namespace Dasher; 24using namespace Dasher;
25 25
26class QtDasherScreen : public QWidget, public Dasher::CDasherScreen 26class QtDasherScreen : public QWidget, public Dasher::CDasherScreen
27 27
28{ 28{
29 Q_OBJECT 29 Q_OBJECT
30 public: 30 public:
31 QtDasherScreen (int _width, int _height, 31 QtDasherScreen (int _width, int _height,
32 CDasherInterface *_interface, 32 CDasherInterface *_interface,
33 QWidget * _parent=0, Dasher::CDashEditbox* edit=0); 33 QWidget * _parent=0, Dasher::CDashEditbox* edit=0);
34 QtDasherScreen::~QtDasherScreen(); 34 QtDasherScreen::~QtDasherScreen();
35 35
36 void SetFont(std::string Name) 36 void SetFont(std::string Name)
37 { fontname = Name; /* set_the_font(); */ } 37 { fontname = Name; /* set_the_font(); */ }
38 38
39 void SetFontSize(Dasher::Opts::FontSize fontsize) 39 void SetFontSize(Dasher::Opts::FontSize )
40 { 40 {
41#warning QtDasherScreen::SetFontSize() not implemented 41#warning QtDasherScreen::SetFontSize() not implemented
42 } 42 }
43 Dasher::Opts::FontSize GetFontSize() 43 Dasher::Opts::FontSize GetFontSize()
44 { 44 {
45#warning QtDasherScreen::GetFontSize() not implemented 45#warning QtDasherScreen::GetFontSize() not implemented
46 return (Dasher::Opts::Normal); 46 return (Dasher::Opts::Normal);
47 } 47 }
48 48
49 void TextSize(symbol Character, int* Width, int* Height, int Size) const 49 void TextSize(symbol , int* Width, int* Height, int ) const
50 { 50 {
51 // should probably use QPainter::boundingRect() 51 // should probably use QPainter::boundingRect()
52 *Width = *Height = font.pixelSize(); 52 *Width = *Height = font.pixelSize();
53 53
54 } 54 }
55 void DrawText(symbol Character, int x1, int y1, int Size) const 55 void DrawText(symbol Character, int x1, int y1, int Size) const
56 { 56 {
57 // QFont font = QFont (fontname.c_str(), Size); 57 // QFont font = QFont (fontname.c_str(), Size);
58 // font.setPixelSize(Size); 58 // font.setPixelSize(Size);
59 QPoint point = QPoint(x1, y1+Size/2); 59 QPoint point = QPoint(x1, y1+Size/2);
60 60
61 painter->setFont (font); 61 painter->setFont (font);
62 painter->drawText (point, 62 painter->drawText (point,
63 QString(interface->GetDisplayText(Character).c_str())); 63 QString(interface->GetDisplayText(Character).c_str()));
64 } 64 }
65 65
66 void DrawRectangle(int x1, int y1, int x2, int y2, 66 void DrawRectangle(int x1, int y1, int x2, int y2,
67 int Color, Opts::ColorSchemes ColorScheme) const; 67 int Color, Opts::ColorSchemes ColorScheme) const;
68 void Polyline(point* Points, int Number) const; 68 void Polyline(point* Points, int Number) const;
69 void DrawPolygon(point* Points, int Number, int Color, 69 void DrawPolygon(point* Points, int Number, int Color,
70 Opts::ColorSchemes ColorScheme) const; 70 Opts::ColorSchemes ColorScheme) const;
71 71
72 std::vector<int> FontSizes; 72 std::vector<int> FontSizes;
73 std::vector<QFont> Fonts; 73 std::vector<QFont> Fonts;
diff --git a/inputmethods/dasher/SettingsStore.cpp b/inputmethods/dasher/SettingsStore.cpp
index c5bbfea..f7661bd 100644
--- a/inputmethods/dasher/SettingsStore.cpp
+++ b/inputmethods/dasher/SettingsStore.cpp
@@ -81,55 +81,55 @@ void CSettingsStore::SetBoolDefault(const string& Key, bool Value)
81} 81}
82 82
83 83
84void CSettingsStore::SetLongDefault(const string& Key, long Value) 84void CSettingsStore::SetLongDefault(const string& Key, long Value)
85{ 85{
86 long TmpValue; 86 long TmpValue;
87 if ( (LongMap.find(Key)==LongMap.end()) && (!LoadSetting(Key, &TmpValue)) ) 87 if ( (LongMap.find(Key)==LongMap.end()) && (!LoadSetting(Key, &TmpValue)) )
88 SetLongOption(Key, Value); 88 SetLongOption(Key, Value);
89} 89}
90 90
91 91
92void CSettingsStore::SetStringDefault(const string& Key, const string& Value) 92void CSettingsStore::SetStringDefault(const string& Key, const string& Value)
93{ 93{
94 string TmpValue; 94 string TmpValue;
95 if ( (StringMap.find(Key)==StringMap.end()) && (!LoadSetting(Key, &TmpValue)) ) 95 if ( (StringMap.find(Key)==StringMap.end()) && (!LoadSetting(Key, &TmpValue)) )
96 SetStringOption(Key, Value); 96 SetStringOption(Key, Value);
97} 97}
98 98
99 99
100/* Private functions -- Settings are not saved between sessions unless these 100/* Private functions -- Settings are not saved between sessions unless these
101functions are over-ridden. 101functions are over-ridden.
102--------------------------------------------------------------------------*/ 102--------------------------------------------------------------------------*/
103 103
104 104
105bool CSettingsStore::LoadSetting(const string& Key, bool* Value) 105bool CSettingsStore::LoadSetting(const string& , bool* )
106{ 106{
107 return false; 107 return false;
108} 108}
109 109
110 110
111bool CSettingsStore::LoadSetting(const string& Key, long* Value) 111bool CSettingsStore::LoadSetting(const string& , long* )
112{ 112{
113 return false; 113 return false;
114} 114}
115 115
116 116
117bool CSettingsStore::LoadSetting(const string& Key, string* Value) 117bool CSettingsStore::LoadSetting(const string& , string* )
118{ 118{
119 return false; 119 return false;
120} 120}
121 121
122 122
123void CSettingsStore::SaveSetting(const string& Key, bool Value) 123void CSettingsStore::SaveSetting(const string& , bool )
124{ 124{
125} 125}
126 126
127 127
128void CSettingsStore::SaveSetting(const string& Key, long Value) 128void CSettingsStore::SaveSetting(const string& , long )
129{ 129{
130} 130}
131 131
132 132
133void CSettingsStore::SaveSetting(const string& Key, const string& Value) 133void CSettingsStore::SaveSetting(const string& , const string& )
134{ 134{
135} 135}