[dasher: 91/217] Commands for speaking or copying ward, sentence or paragraph finished.
- From: Patrick Welche <pwelche src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [dasher: 91/217] Commands for speaking or copying ward, sentence or paragraph finished.
- Date: Sat, 27 Feb 2016 12:07:58 +0000 (UTC)
commit 9a48f56cb4dcfc3bd3c1e89a70059dbd98f944b7
Author: ipomoena <amajorek google com>
Date: Sat Oct 17 13:42:25 2015 -0700
Commands for speaking or copying ward, sentence or paragraph finished.
Also changes in control box layout and syntax for move and delete
commands.
Data/control/control.dtd | 4 +-
Data/control/control.xml | 249 +++++++++++++++++---------------
Src/DasherCore/ControlManager.cpp | 49 +++++--
Src/DasherCore/DasherInterfaceBase.cpp | 4 +-
Src/DasherCore/DasherInterfaceBase.h | 2 +-
5 files changed, 172 insertions(+), 136 deletions(-)
---
diff --git a/Data/control/control.dtd b/Data/control/control.dtd
index 5d9c428..f938a43 100644
--- a/Data/control/control.dtd
+++ b/Data/control/control.dtd
@@ -10,11 +10,11 @@
<!ELEMENT move EMPTY>
<!ATTLIST move forward (yes|no) #REQUIRED>
-<!ATTLIST move dist (char|word|line|sentence|paragraph|file) #REQUIRED>
+<!ATTLIST move dist (char|word|line|sentence|paragraph|all) #REQUIRED>
<!ELEMENT delete EMPTY>
<!ATTLIST delete forward (yes|no) #REQUIRED>
-<!ATTLIST delete dist (char|word|line|sentence|paragraph|file) #REQUIRED>
+<!ATTLIST delete dist (char|word|line|sentence|paragraph|all) #REQUIRED>
<!ELEMENT copy EMPTY>
<!ATTLIST copy dist (all|new|repeat|sentence|paragraph) #REQUIRED>
diff --git a/Data/control/control.xml b/Data/control/control.xml
index f98f30b..93844b2 100644
--- a/Data/control/control.xml
+++ b/Data/control/control.xml
@@ -1,22 +1,150 @@
<?xml version="1.0" encoding="UTF-8"?>
<nodes>
<alph/>
- <node label="Pause" color="241">
- <pause/>
+
+ <node label="Stop" color="242">
+ <stop/>
<alph/>
<root/>
</node>
- <node label="Stop" color="242">
- <stop/>
+
+ <node label="Pause" color="241">
+ <pause/>
<alph/>
<root/>
</node>
+
+ <node name="CTL_MOVE" label="Move" color="-1">
+ <node name="CTL_MOVE_FORWARD" label="→" color="-1">
+ <node label="▸" color="-1">
+ <move forward="yes" dist="char"/>
+ <root/>
+ <ref name="CTL_MOVE_FORWARD"/>
+ <ref name="CTL_MOVE_BACKWARD"/>
+ </node>
+ <node label="▸▸" color="-1">
+ <move forward="yes" dist="word"/>
+ <root/>
+ <ref name="CTL_MOVE_FORWARD"/>
+ <ref name="CTL_MOVE_BACKWARD"/>
+ </node>
+ <node label="▸▸▸" color="-1">
+ <move forward="yes" dist="line"/>
+ <root/>
+ <ref name="CTL_MOVE_FORWARD"/>
+ <ref name="CTL_MOVE_BACKWARD"/>
+ </node>
+ <node label="▸▸▸▸" color="-1">
+ <move forward="yes" dist="all"/>
+ <root/>
+ <ref name="CTL_MOVE_FORWARD"/>
+ <ref name="CTL_MOVE_BACKWARD"/>
+ </node>
+ </node>
+ <node name="CTL_MOVE_BACKWARD" label="←" color="-1">
+ <node label="◂" color="-1">
+ <move forward="no" dist="char"/>
+ <root/>
+ <ref name="CTL_MOVE_FORWARD"/>
+ <ref name="CTL_MOVE_BACKWARD"/>
+ </node>
+ <node label="◂◂" color="-1">
+ <move forward="no" dist="word"/>
+ <root/>
+ <ref name="CTL_MOVE_FORWARD"/>
+ <ref name="CTL_MOVE_BACKWARD"/>
+ </node>
+ <node label="◂◂◂" color="-1">
+ <move forward="no" dist="line"/>
+ <root/>
+ <ref name="CTL_MOVE_FORWARD"/>
+ <ref name="CTL_MOVE_BACKWARD"/>
+ </node>
+ <node label="◂◂◂◂" color="-1">
+ <move forward="no" dist="all"/>
+ <root/>
+ <ref name="CTL_MOVE_FORWARD"/>
+ <ref name="CTL_MOVE_BACKWARD"/>
+ </node>
+ </node>
+ </node>
+
+ <node name="CTL_DELETE" label="Delete" color="-1">
+ <node name="CTL_DELETE_FORWARD" label="→" color="-1">
+ <node label="▸" color="-1">
+ <delete forward="yes" dist="char"/>
+ <root/>
+ <ref name="CTL_DELETE_FORWARD"/>
+ <ref name="CTL_DELETE_BACKWARD"/>
+ </node>
+ <node label="▸▸" color="-1">
+ <delete forward="yes" dist="word"/>
+ <root/>
+ <ref name="CTL_DELETE_FORWARD"/>
+ <ref name="CTL_DELETE_BACKWARD"/>
+ </node>
+ <node label="▸▸▸" color="-1">
+ <delete forward="yes" dist="line"/>
+ <root/>
+ <ref name="CTL_DELETE_FORWARD"/>
+ <ref name="CTL_DELETE_BACKWARD"/>
+ </node>
+ <node label="▸▸▸▸" color="-1">
+ <delete forward="yes" dist="all"/>
+ <root/>
+ <ref name="CTL_DELETE_FORWARD"/>
+ <ref name="CTL_DELETE_BACKWARD"/>
+ </node>
+ </node>
+ <node name="CTL_DELETE_BACKWARD" label="←" color="-1">
+ <node label="◂" color="-1">
+ <delete forward="no" dist="char"/>
+ <root/>
+ <ref name="CTL_DELETE_FORWARD"/>
+ <ref name="CTL_DELETE_BACKWARD"/>
+ </node>
+ <node label="◂◂" color="-1">
+ <delete forward="no" dist="word"/>
+ <root/>
+ <ref name="CTL_DELETE_FORWARD"/>
+ <ref name="CTL_DELETE_BACKWARD"/>
+ </node>
+ <node label="◂◂◂" color="-1">
+ <delete forward="no" dist="line"/>
+ <root/>
+ <ref name="CTL_DELETE_FORWARD"/>
+ <ref name="CTL_DELETE_BACKWARD"/>
+ </node>
+ <node label="◂◂◂◂" color="-1">
+ <delete forward="no" dist="all"/>
+ <root/>
+ <ref name="CTL_DELETE_FORWARD"/>
+ <ref name="CTL_DELETE_BACKWARD"/>
+ </node>
+ </node>
+ <node label="All" color="-1">
+ <alph/>
+ <node label="confirm" color="-1">
+ <delete forward="yes" dist="all"/>
+ <delete forward="no" dist="all"/>
+ <alph/>
+ </node>
+ <alph/>
+ </node>
+ </node>
+
<node label="Speak" color="-1">
<node label="All" color="-1">
<speak what="all"/>
<alph/>
<root/>
</node>
+ <node label="¶" color="-1">
+ <speak what="paragraph"/>
+ <move forward="yes" dist="paragraph"/>
+ <alph/>
+ <root/>
+ </node>
<node label="New" color="-1">
<speak what="new"/>
<alph/>
@@ -52,117 +180,4 @@
</node>
</node>
- <node name="CTL_MOVE" label="Move" color="-1">
- <node name="CTL_MOVE_FORWARD" label="→" color="-1">
- <node label="▸" color="-1">
- <move forward="yes" dist="char"/>
- <root/>
- <ref name="CTL_MOVE_FORWARD"/>
- <ref name="CTL_MOVE_BACKWARD"/>
- </node>
- <node label="▸▸" color="-1">
- <move forward="yes" dist="word"/>
- <root/>
- <ref name="CTL_MOVE_FORWARD"/>
- <ref name="CTL_MOVE_BACKWARD"/>
- </node>
- <node label="▸▸▸" color="-1">
- <move forward="yes" dist="line"/>
- <root/>
- <ref name="CTL_MOVE_FORWARD"/>
- <ref name="CTL_MOVE_BACKWARD"/>
- </node>
- <node label="▸▸▸▸" color="-1">
- <move forward="yes" dist="file"/>
- <root/>
- <ref name="CTL_MOVE_FORWARD"/>
- <ref name="CTL_MOVE_BACKWARD"/>
- </node>
- </node>
- <node name="CTL_MOVE_BACKWARD" label="←" color="-1">
- <node label="◂" color="-1">
- <move forward="no" dist="char"/>
- <root/>
- <ref name="CTL_MOVE_FORWARD"/>
- <ref name="CTL_MOVE_BACKWARD"/>
- </node>
- <node label="◂◂" color="-1">
- <move forward="no" dist="word"/>
- <root/>
- <ref name="CTL_MOVE_FORWARD"/>
- <ref name="CTL_MOVE_BACKWARD"/>
- </node>
- <node label="◂◂◂" color="-1">
- <move forward="no" dist="line"/>
- <root/>
- <ref name="CTL_MOVE_FORWARD"/>
- <ref name="CTL_MOVE_BACKWARD"/>
- </node>
- <node label="◂◂◂◂" color="-1">
- <move forward="no" dist="file"/>
- <root/>
- <ref name="CTL_MOVE_FORWARD"/>
- <ref name="CTL_MOVE_BACKWARD"/>
- </node>
- </node>
-</node>
-<node name="CTL_DELETE" label="Delete" color="-1">
- <node name="CTL_DELETE_FORWARD" label="→" color="-1">
- <node label="▸" color="-1">
- <delete forward="yes" dist="char"/>
- <root/>
- <ref name="CTL_DELETE_FORWARD"/>
- <ref name="CTL_DELETE_BACKWARD"/>
- </node>
- <node label="▸▸" color="-1">
- <delete forward="yes" dist="word"/>
- <root/>
- <ref name="CTL_DELETE_FORWARD"/>
- <ref name="CTL_DELETE_BACKWARD"/>
- </node>
- <node label="▸▸▸" color="-1">
- <delete forward="yes" dist="line"/>
- <root/>
- <ref name="CTL_DELETE_FORWARD"/>
- <ref name="CTL_DELETE_BACKWARD"/>
- </node>
- <node label="▸▸▸▸" color="-1">
- <delete forward="yes" dist="file"/>
- <root/>
- <ref name="CTL_DELETE_FORWARD"/>
- <ref name="CTL_DELETE_BACKWARD"/>
- </node>
- </node>
- <node name="CTL_DELETE_BACKWARD" label="←" color="-1">
- <node label="◂" color="-1">
- <delete forward="no" dist="char"/>
- <root/>
- <ref name="CTL_DELETE_FORWARD"/>
- <ref name="CTL_DELETE_BACKWARD"/>
- </node>
- <node label="◂◂" color="-1">
- <delete forward="no" dist="word"/>
- <root/>
- <ref name="CTL_DELETE_FORWARD"/>
- <ref name="CTL_DELETE_BACKWARD"/>
- </node>
- <node label="◂◂◂" color="-1">
- <delete forward="no" dist="line"/>
- <root/>
- <ref name="CTL_DELETE_FORWARD"/>
- <ref name="CTL_DELETE_BACKWARD"/>
- </node>
- <node label="◂◂◂◂" color="-1">
- <delete forward="no" dist="file"/>
- <root/>
- <ref name="CTL_DELETE_FORWARD"/>
- <ref name="CTL_DELETE_BACKWARD"/>
- </node>
- </node>
-</node>
-<node label="New" color="-1">
- <delete forward="yes" dist="file"/>
- <delete forward="no" dist="file"/>
- <alph/>
-</node>
</nodes>
diff --git a/Src/DasherCore/ControlManager.cpp b/Src/DasherCore/ControlManager.cpp
index 68828bb..1f1e04c 100644
--- a/Src/DasherCore/ControlManager.cpp
+++ b/Src/DasherCore/ControlManager.cpp
@@ -252,6 +252,18 @@ public:
}
};
+class TextDistanceAction : public CControlBase::Action {
+ CDasherInterfaceBase::TextAction* m_header;
+ CControlManager::EditDistance m_dist;
+public:
+ TextDistanceAction(CDasherInterfaceBase::TextAction* header, CControlManager::EditDistance dist)
+ : m_header(header), m_dist(dist) {
+ }
+ virtual void happen(CControlBase::CContNode *pNode) {
+ m_header->executeOnDistance(m_dist);
+ }
+};
+
class Pause : public CControlBase::Action{
public:
void happen(CControlBase::CContNode *pNode) {
@@ -316,43 +328,52 @@ CControlManager::CControlManager(CSettingsUser *pCreateFrom, CNodeCreationManage
// Key in actions map is name plus arguments in alphabetical order.
m_actions["stop"] = new MethodAction<CDasherInterfaceBase>(pInterface, &CDasherInterfaceBase::Done);
m_actions["pause"] = new Pause();
-
- m_actions["speak what=cancel"] = new SpeakCancel();
- m_actions["speak what=all"] = new MethodAction<SpeechHeader>(m_pSpeech, &SpeechHeader::executeOnAll);
- m_actions["speak what=new"] = new MethodAction<SpeechHeader>(m_pSpeech, &SpeechHeader::executeOnNew);
- m_actions["speak what=repeat"] = new MethodAction<SpeechHeader>(m_pSpeech, &SpeechHeader::executeLast);
-
- m_actions["copy what=all"] = new MethodAction<CopyHeader>(m_pCopy, &CopyHeader::executeOnAll);
- m_actions["copy what=new"] = new MethodAction<CopyHeader>(m_pCopy, &CopyHeader::executeOnNew);
- m_actions["copy what=repeat"] = new MethodAction<CopyHeader>(m_pCopy, &CopyHeader::executeLast);
-
+ if (pInterface->SupportsSpeech()) {
+ m_actions["speak what=all"] = new TextDistanceAction(m_pSpeech, EDIT_FILE);
+ m_actions["speak what=paragraph"] = new TextDistanceAction(m_pSpeech, EDIT_PARAGRAPH);
+ m_actions["speak what=sentence"] = new TextDistanceAction(m_pSpeech, EDIT_SENTENCE);
+ m_actions["speak what=line"] = new TextDistanceAction(m_pSpeech, EDIT_LINE);
+ m_actions["speak what=word"] = new TextDistanceAction(m_pSpeech, EDIT_WORD);
+ m_actions["speak what=new"] = new MethodAction<SpeechHeader>(m_pSpeech, &SpeechHeader::executeOnNew);
+ m_actions["speak what=repeat"] = new MethodAction<SpeechHeader>(m_pSpeech, &SpeechHeader::executeLast);
+ m_actions["speak what=cancel"] = new SpeakCancel();
+ }
+ if (pInterface->SupportsClipboard()) {
+ m_actions["copy what=all"] = new TextDistanceAction(m_pCopy, EDIT_FILE);
+ m_actions["copy what=paragraph"] = new TextDistanceAction(m_pCopy, EDIT_PARAGRAPH);
+ m_actions["copy what=sentence"] = new TextDistanceAction(m_pCopy, EDIT_SENTENCE);
+ m_actions["copy what=line"] = new TextDistanceAction(m_pCopy, EDIT_LINE);
+ m_actions["copy what=word"] = new TextDistanceAction(m_pCopy, EDIT_WORD);
+ m_actions["copy what=new"] = new MethodAction<CopyHeader>(m_pCopy, &CopyHeader::executeOnNew);
+ m_actions["copy what=repeat"] = new MethodAction<CopyHeader>(m_pCopy, &CopyHeader::executeLast);
+ }
m_actions["move dist=char forward=yes"] = new Move(true, EDIT_CHAR);
m_actions["move dist=word forward=yes"] = new Move(true, EDIT_WORD);
m_actions["move dist=line forward=yes"] = new Move(true, EDIT_LINE);
m_actions["move dist=sentence forward=yes"] = new Move(true, EDIT_SENTENCE);
m_actions["move dist=paragraph forward=yes"] = new Move(true, EDIT_PARAGRAPH);
- m_actions["move dist=file forward=yes"] = new Move(true, EDIT_FILE);
+ m_actions["move dist=all forward=yes"] = new Move(true, EDIT_FILE);
m_actions["move dist=char forward=no"] = new Move(false, EDIT_CHAR);
m_actions["move dist=word forward=no"] = new Move(false, EDIT_WORD);
m_actions["move dist=line forward=no"] = new Move(false, EDIT_LINE);
m_actions["move dist=sentence forward=no"] = new Move(false, EDIT_SENTENCE);
m_actions["move dist=paragraph forward=no"] = new Move(false, EDIT_PARAGRAPH);
- m_actions["move dist=file forward=no"] = new Move(false, EDIT_FILE);
+ m_actions["move dist=all forward=no"] = new Move(false, EDIT_FILE);
m_actions["delete dist=char forward=yes"] = new Delete(true, EDIT_CHAR);
m_actions["delete dist=word forward=yes"] = new Delete(true, EDIT_WORD);
m_actions["delete dist=line forward=yes"] = new Delete(true, EDIT_LINE);
m_actions["delete dist=sentence forward=yes"] = new Delete(true, EDIT_SENTENCE);
m_actions["delete dist=paragraph forward=yes"] = new Delete(true, EDIT_PARAGRAPH);
- m_actions["delete dist=file forward=yes"] = new Delete(true, EDIT_FILE);
+ m_actions["delete dist=all forward=yes"] = new Delete(true, EDIT_FILE);
m_actions["delete dist=char forward=no"] = new Delete(false, EDIT_CHAR);
m_actions["delete dist=word forward=no"] = new Delete(false, EDIT_WORD);
m_actions["delete dist=line forward=no"] = new Delete(false, EDIT_LINE);
m_actions["delete dist=sentence forward=no"] = new Delete(false, EDIT_SENTENCE);
m_actions["delete dist=paragraph forward=no"] = new Delete(false, EDIT_PARAGRAPH);
- m_actions["delete dist=file forward=no"] = new Delete(false, EDIT_FILE);
+ m_actions["delete dist=all forward=no"] = new Delete(false, EDIT_FILE);
m_pInterface->ScanFiles(this, "control.xml"); //just look for the one
diff --git a/Src/DasherCore/DasherInterfaceBase.cpp b/Src/DasherCore/DasherInterfaceBase.cpp
index d6fdea6..073d167 100644
--- a/Src/DasherCore/DasherInterfaceBase.cpp
+++ b/Src/DasherCore/DasherInterfaceBase.cpp
@@ -420,8 +420,8 @@ CDasherInterfaceBase::TextAction::~TextAction() {
m_pIntf->m_vTextActions.erase(this);
}
-void CDasherInterfaceBase::TextAction::executeOnAll() {
- (*this)(strLast = m_pIntf->GetAllContext());
+void CDasherInterfaceBase::TextAction::executeOnDistance(CControlManager::EditDistance dist) {
+ (*this)(strLast = m_pIntf->GetTextAroundCursor(dist));
m_iStartOffset = m_pIntf->GetAllContextLenght();
}
diff --git a/Src/DasherCore/DasherInterfaceBase.h b/Src/DasherCore/DasherInterfaceBase.h
index 3ff06e6..a7bcaff 100644
--- a/Src/DasherCore/DasherInterfaceBase.h
+++ b/Src/DasherCore/DasherInterfaceBase.h
@@ -180,7 +180,7 @@ public:
class TextAction {
public:
TextAction(CDasherInterfaceBase *pMgr);
- void executeOnAll();
+ void executeOnDistance(CControlManager::EditDistance dist);
void executeOnNew();
void executeLast();
void NotifyOffset(int iOffset);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]