return m_link->isChecked();
}
-void TM::Widget::disable_link_mode(bool disable)
+/*!
+ * \brief リンクボタンをグレーアウトします。
+ *
+ *
+ */
+void TM::Widget::set_link_mode_disabled(bool disable)
{
QMutexLocker lock(&m_mutex);
m_link->setDisabled(disable);
bool TM::TargetPanel::is_text_dirty() const { return m_text_dirty; }
-void TM::TargetPanel::set_text_dirty(bool dirty) { m_text_dirty = dirty; }
+void TM::TargetPanel::set_text_dirty(bool dirty)
+{
+ m_text_dirty = dirty;
+ if(dirty) m_editor->parent_widget()->set_link_mode_disabled(false);
+}
bool TM::TargetPanel::canInsertFromMimeData(QMimeData const *source) const
{
return false;
}
+void TM::TargetPanel::insertFromMimeData(QMimeData const *source)
+{
+ TextPanel::insertFromMimeData(source);
+ set_text_dirty(true);
+}
+
void TM::TargetPanel::inputMethodEvent(QInputMethodEvent *ev)
{
if(m_editor->link_mode()) ev->setCommitString("");
QPlainTextEdit::inputMethodEvent(ev);
}
-void TM::TargetPanel::keyPressEvent_(QKeyEvent *ev)
+void TM::TargetPanel::keyPressEvent(QKeyEvent *ev)
{
if(m_editor->link_mode()) do_key_press_in_link_mode(ev);
- else QPlainTextEdit::keyPressEvent(ev);
+ else
+ {
+ TextPanel::keyPressEvent(ev);
+ if(!ev->text().isEmpty()) set_text_dirty(true);
+ }
}
void TM::TargetPanel::do_click(QPoint const &pos)
{
case Qt::Key_Enter:
case Qt::Key_Return:
- if(m_editor->link_mode()) m_editor->set_link_mode(false);
+ m_editor->set_link_mode(false);
+ break;
+ case Qt::Key_Left:
+ case Qt::Key_Right:
+ case Qt::Key_Up:
+ case Qt::Key_Down:
+ TextPanel::keyPressEvent(ev);
break;
}
-
}
// Editor ---------------------------------------------------------------------
TextArea *ta = text_area();
ta->clear();
set_link_mode(false);
+ parent_widget()->set_link_mode_disabled(true);
}
void TM::Editor::set_sentences(Text::pointer sentences)
{
return const_cast<Editor*>(this)->current_target_panel();
}
-/*
-bool TM::Editor::is_panel_changed(TextPanel *new_) const
-{
- SourcePanel *sp = qobject_cast<SourcePanel*>(new_);
- if(sp) return sp != m_current_source_panel;
- TargetPanel *tp = qobject_cast<TargetPanel*>(new_);
- if(tp) return tp->source_panel() != m_current_source_panel;
- assert(false);
- return false;
-}
-*/
+
void TM::Editor::onFocusInChild(TextPanel *new_, TextPanel *)
{
SourcePanel *old_panel = m_current_source_panel;
TargetPanel *tp = panel->target_panel();
assert(tp);
tp->show();
- if(can_link_mode()) parent_widget()->disable_link_mode(false);
+ if(can_link_mode()) parent_widget()->set_link_mode_disabled(false);
}
/*!
tp->hide();
set_link_mode(false);
- parent_widget()->disable_link_mode(true);
+ parent_widget()->set_link_mode_disabled(true);
}
+/*!
+ * \brief リンクモードに入るとき呼び出されます。
+ */
void TM::Editor::do_link_mode_enter(SourcePanel *panel)
{
assert(panel);
assert(tp);
int tcode = parent_widget()->target_language();
- if(tp && tp->is_text_dirty())
+ if(tp->is_text_dirty())
{
- qDebug() << "dirty";
+ panel->linker()->clear();
QString string = tp->toPlainText();
Text::pointer sentences = m_service->divide_into_sentences(tcode, string);
if(sentences->size())
panel->ensure_highlight();
}
+/*!
+ * \brief リンクモードから出るとき呼び出されます。
+ */
void TM::Editor::do_link_mode_leave(SourcePanel *panel)
{
assert(panel);
panel->commit_link();
panel->clear_highlight();
- qDebug() << "do_link_mode_leave";
}