Adding preference for visual mode for bidi cursor movement

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22928 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Dov Feldstern 2008-02-10 19:51:23 +00:00
parent 76ec27281b
commit a9770a18cd
4 changed files with 162 additions and 79 deletions

View File

@ -163,7 +163,8 @@ keyword_item lyxrcTags[] = {
{ "\\user_name", LyXRC::RC_USER_NAME }, { "\\user_name", LyXRC::RC_USER_NAME },
{ "\\view_dvi_paper_option", LyXRC::RC_VIEWDVI_PAPEROPTION }, { "\\view_dvi_paper_option", LyXRC::RC_VIEWDVI_PAPEROPTION },
// compatibility with versions older than 1.4.0 only // compatibility with versions older than 1.4.0 only
{ "\\viewer", LyXRC::RC_VIEWER} { "\\viewer", LyXRC::RC_VIEWER},
{ "\\visual_cursor" ,LyXRC::RC_VISUAL_CURSOR}
}; };
const int lyxrcCount = sizeof(lyxrcTags) / sizeof(keyword_item); const int lyxrcCount = sizeof(lyxrcTags) / sizeof(keyword_item);
@ -247,6 +248,7 @@ void LyXRC::setDefaults() {
isp_use_esc_chars = false; isp_use_esc_chars = false;
use_kbmap = false; use_kbmap = false;
rtl_support = true; rtl_support = true;
visual_cursor = false;
auto_number = true; auto_number = true;
mark_foreign_language = true; mark_foreign_language = true;
language_auto_begin = true; language_auto_begin = true;
@ -995,6 +997,11 @@ int LyXRC::read(Lexer & lexrc)
rtl_support = lexrc.getBool(); rtl_support = lexrc.getBool();
} }
break; break;
case RC_VISUAL_CURSOR:
if (lexrc.next()) {
visual_cursor = lexrc.getBool();
}
break;
case RC_AUTO_NUMBER: case RC_AUTO_NUMBER:
if (lexrc.next()) { if (lexrc.next()) {
auto_number = lexrc.getBool(); auto_number = lexrc.getBool();
@ -2144,6 +2151,13 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
} }
if (tag != RC_LAST) if (tag != RC_LAST)
break; break;
case RC_VISUAL_CURSOR:
if (ignore_system_lyxrc ||
visual_cursor != system_lyxrc.visual_cursor) {
os << "\\visual_cursor " << convert<string>(visual_cursor) << '\n';
}
if (tag != RC_LAST)
break;
case RC_LANGUAGE_PACKAGE: case RC_LANGUAGE_PACKAGE:
if (ignore_system_lyxrc || if (ignore_system_lyxrc ||
language_package != system_lyxrc.language_package) { language_package != system_lyxrc.language_package) {
@ -2654,6 +2668,10 @@ string const LyXRC::getDescription(LyXRCTags tag)
str = _("Select to enable support of right-to-left languages (e.g. Hebrew, Arabic)."); str = _("Select to enable support of right-to-left languages (e.g. Hebrew, Arabic).");
break; break;
case RC_VISUAL_CURSOR:
str = _("Select to have visual bidi cursor movement, unselect for logical movement.");
break;
case RC_SCREEN_DPI: case RC_SCREEN_DPI:
str = _("DPI (dots per inch) of your monitor is auto-detected by LyX. If that goes wrong, override the setting here."); str = _("DPI (dots per inch) of your monitor is auto-detected by LyX. If that goes wrong, override the setting here.");
break; break;

View File

@ -145,6 +145,7 @@ public:
RC_USE_SPELL_LIB, RC_USE_SPELL_LIB,
RC_VIEWDVI_PAPEROPTION, RC_VIEWDVI_PAPEROPTION,
RC_VIEWER, RC_VIEWER,
RC_VISUAL_CURSOR,
RC_LAST RC_LAST
}; };
@ -336,6 +337,8 @@ public:
bool language_use_babel; bool language_use_babel;
/// ///
bool rtl_support; bool rtl_support;
/// bidi cursor movement: true = visual, false = logical
bool visual_cursor;
/// ///
bool auto_number; bool auto_number;
/// ///

View File

@ -1438,7 +1438,11 @@ PrefLanguage::PrefLanguage(QWidget * parent)
{ {
setupUi(this); setupUi(this);
connect(rtlCB, SIGNAL(clicked()), connect(rtlGB, SIGNAL(clicked()),
this, SIGNAL(changed()));
connect(visualCursorRB, SIGNAL(clicked()),
this, SIGNAL(changed()));
connect(logicalCursorRB, SIGNAL(clicked()),
this, SIGNAL(changed())); this, SIGNAL(changed()));
connect(markForeignCB, SIGNAL(clicked()), connect(markForeignCB, SIGNAL(clicked()),
this, SIGNAL(changed())); this, SIGNAL(changed()));
@ -1476,7 +1480,8 @@ PrefLanguage::PrefLanguage(QWidget * parent)
void PrefLanguage::apply(LyXRC & rc) const void PrefLanguage::apply(LyXRC & rc) const
{ {
// FIXME: remove rtl_support bool // FIXME: remove rtl_support bool
rc.rtl_support = rtlCB->isChecked(); rc.rtl_support = rtlGB->isChecked();
rc.visual_cursor = rtlGB->isChecked() && visualCursorRB->isChecked();
rc.mark_foreign_language = markForeignCB->isChecked(); rc.mark_foreign_language = markForeignCB->isChecked();
rc.language_auto_begin = autoBeginCB->isChecked(); rc.language_auto_begin = autoBeginCB->isChecked();
rc.language_auto_end = autoEndCB->isChecked(); rc.language_auto_end = autoEndCB->isChecked();
@ -1492,7 +1497,11 @@ void PrefLanguage::apply(LyXRC & rc) const
void PrefLanguage::update(LyXRC const & rc) void PrefLanguage::update(LyXRC const & rc)
{ {
// FIXME: remove rtl_support bool // FIXME: remove rtl_support bool
rtlCB->setChecked(rc.rtl_support); rtlGB->setChecked(rc.rtl_support);
if (rc.visual_cursor)
visualCursorRB->setChecked(true);
else
logicalCursorRB->setChecked(true);
markForeignCB->setChecked(rc.mark_foreign_language); markForeignCB->setChecked(rc.mark_foreign_language);
autoBeginCB->setChecked(rc.language_auto_begin); autoBeginCB->setChecked(rc.language_auto_begin);
autoEndCB->setChecked(rc.language_auto_end); autoEndCB->setChecked(rc.language_auto_end);

View File

@ -5,8 +5,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>329</width> <width>345</width>
<height>300</height> <height>401</height>
</rect> </rect>
</property> </property>
<property name="windowTitle" > <property name="windowTitle" >
@ -19,19 +19,6 @@
<property name="spacing" > <property name="spacing" >
<number>6</number> <number>6</number>
</property> </property>
<item row="1" column="2" >
<spacer>
<property name="orientation" >
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" >
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="4" column="0" > <item row="4" column="0" >
<widget class="QCheckBox" name="useBabelCB" > <widget class="QCheckBox" name="useBabelCB" >
<property name="text" > <property name="text" >
@ -39,13 +26,25 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="8" column="0" colspan="2" > <item row="0" column="1" >
<widget class="QCheckBox" name="markForeignCB" > <widget class="QComboBox" name="defaultLanguageCO" />
</item>
<item row="2" column="1" >
<widget class="QLineEdit" name="startCommandED" />
</item>
<item row="1" column="0" >
<widget class="QLabel" name="languagePackageLA" >
<property name="text" > <property name="text" >
<string>Mark &amp;foreign languages</string> <string>Language pac&amp;kage:</string>
</property>
<property name="buddy" >
<cstring>languagePackageED</cstring>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="1" >
<widget class="QLineEdit" name="languagePackageED" />
</item>
<item row="10" column="0" colspan="2" > <item row="10" column="0" colspan="2" >
<spacer> <spacer>
<property name="orientation" > <property name="orientation" >
@ -62,51 +61,10 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="7" column="0" > <item row="8" column="0" colspan="2" >
<widget class="QCheckBox" name="autoEndCB" > <widget class="QCheckBox" name="markForeignCB" >
<property name="text" > <property name="text" >
<string>Auto &amp;end</string> <string>Mark &amp;foreign languages</string>
</property>
</widget>
</item>
<item row="9" column="0" colspan="2" >
<widget class="QCheckBox" name="rtlCB" >
<property name="text" >
<string>&amp;Right-to-left language support</string>
</property>
</widget>
</item>
<item row="5" column="0" >
<widget class="QCheckBox" name="globalCB" >
<property name="text" >
<string>&amp;Global</string>
</property>
</widget>
</item>
<item row="6" column="0" >
<widget class="QCheckBox" name="autoBeginCB" >
<property name="text" >
<string>Auto &amp;begin</string>
</property>
</widget>
</item>
<item row="1" column="0" >
<widget class="QLabel" name="languagePackageLA" >
<property name="text" >
<string>Language pac&amp;kage:</string>
</property>
<property name="buddy" >
<cstring>languagePackageED</cstring>
</property>
</widget>
</item>
<item row="3" column="0" >
<widget class="QLabel" name="endCommandLA" >
<property name="text" >
<string>Command e&amp;nd:</string>
</property>
<property name="buddy" >
<cstring>endCommandED</cstring>
</property> </property>
</widget> </widget>
</item> </item>
@ -120,18 +78,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1" >
<widget class="QComboBox" name="defaultLanguageCO" />
</item>
<item row="1" column="1" >
<widget class="QLineEdit" name="languagePackageED" />
</item>
<item row="2" column="1" >
<widget class="QLineEdit" name="startCommandED" />
</item>
<item row="3" column="1" >
<widget class="QLineEdit" name="endCommandED" />
</item>
<item row="2" column="0" > <item row="2" column="0" >
<widget class="QLabel" name="startCommandLA" > <widget class="QLabel" name="startCommandLA" >
<property name="text" > <property name="text" >
@ -142,6 +88,114 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="1" >
<widget class="QLineEdit" name="endCommandED" />
</item>
<item row="3" column="0" >
<widget class="QLabel" name="endCommandLA" >
<property name="text" >
<string>Command e&amp;nd:</string>
</property>
<property name="buddy" >
<cstring>endCommandED</cstring>
</property>
</widget>
</item>
<item row="5" column="0" >
<widget class="QCheckBox" name="globalCB" >
<property name="text" >
<string>&amp;Global</string>
</property>
</widget>
</item>
<item row="1" column="2" >
<spacer>
<property name="orientation" >
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" >
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="7" column="0" >
<widget class="QCheckBox" name="autoEndCB" >
<property name="text" >
<string>Auto &amp;end</string>
</property>
</widget>
</item>
<item row="6" column="0" >
<widget class="QCheckBox" name="autoBeginCB" >
<property name="text" >
<string>Auto &amp;begin</string>
</property>
</widget>
</item>
<item row="9" column="0" >
<widget class="QGroupBox" name="rtlGB" >
<property name="toolTip" >
<string>Select to enable support of right-to-left languages (e.g. Hebrew, Arabic).</string>
</property>
<property name="title" >
<string>&amp;Right-to-left language support</string>
</property>
<property name="flat" >
<bool>false</bool>
</property>
<property name="checkable" >
<bool>true</bool>
</property>
<layout class="QVBoxLayout" >
<property name="margin" >
<number>4</number>
</property>
<property name="spacing" >
<number>6</number>
</property>
<item>
<layout class="QHBoxLayout" >
<property name="margin" >
<number>0</number>
</property>
<property name="spacing" >
<number>6</number>
</property>
<item>
<widget class="QLabel" name="label" >
<property name="text" >
<string>Cursor movement:</string>
</property>
<property name="scaledContents" >
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="logicalCursorRB" >
<property name="text" >
<string>Logical</string>
</property>
<property name="checked" >
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="visualCursorRB" >
<property name="text" >
<string>Visual</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout> </layout>
</widget> </widget>
<tabstops> <tabstops>
@ -154,7 +208,6 @@
<tabstop>autoBeginCB</tabstop> <tabstop>autoBeginCB</tabstop>
<tabstop>autoEndCB</tabstop> <tabstop>autoEndCB</tabstop>
<tabstop>markForeignCB</tabstop> <tabstop>markForeignCB</tabstop>
<tabstop>rtlCB</tabstop>
</tabstops> </tabstops>
<includes> <includes>
<include location="local" >qt_helpers.h</include> <include location="local" >qt_helpers.h</include>