TM::EditorWidget::EditorWidget(Settings *settings, Service *service, QWidget *parent)
: QWidget(parent)
- , m_mutex(QMutex::Recursive)
, m_service(service)
, m_settings(settings)
, m_http_port(80)
if(m_socket == socket) return;
if(m_socket) detach(m_socket);
- QMutexLocker lock(&m_mutex);
m_socket = socket;
- connect(this, SIGNAL(editModeChanged(bool)), m_socket, SLOT(changeEditMode(bool)));
+// connect(this, SIGNAL(editModeChanged(bool)), m_socket, SLOT(changeEditMode(bool)));
set_link_mode_disabled(true);
connect(this, SIGNAL(sourceLanguageChanged()), m_socket, SLOT(changeLanguage()));
connect(this, SIGNAL(targetLanguageChanged()), m_socket, SLOT(changeLanguage()));
* \brief ブラウザ上でドキュメントがフォーカスを取得することで、
* 現在のSocketConnectionがフォーカスを失った時に呼び出されます。
*/
-void TM::EditorWidget::detach(SocketConnection *)
+void TM::EditorWidget::detach(SocketConnection *connection)
{
- QMutexLocker lock(&m_mutex);
- disconnect(this, SIGNAL(editModeChanged(bool)), m_socket, SLOT(changeEditMode(bool)));
+ if(m_socket != connection) return;
+
+// disconnect(this, SIGNAL(editModeChanged(bool)), m_socket, SLOT(changeEditMode(bool)));
disconnect(this, SIGNAL(sourceLanguageChanged()), m_socket, SLOT(changeLanguage()));
disconnect(this, SIGNAL(targetLanguageChanged()), m_socket, SLOT(changeLanguage()));
void TM::EditorWidget::set_http_port(quint16 http_port) { m_http_port = http_port; }
/*!
- * \brief 編集モードを変更します。
- */
-void TM::EditorWidget::set_edit_mode(bool mode)
-{
- QMutexLocker lock(&m_mutex);
- bool old_mode = m_edit_mode->isChecked();
- if(old_mode == mode) return;
-
- m_edit_mode->setChecked(mode);
-}
-
-/*!
* \brief 編集モードの場合trueを返します。
*/
bool TM::EditorWidget::edit_mode()
{
- QMutexLocker lock(&m_mutex);
return m_edit_mode->isChecked();
}
*/
void TM::EditorWidget::set_link_mode(bool mode)
{
- QMutexLocker lock(&m_mutex);
bool old_mode = m_link->isChecked();
if(old_mode == mode) return;
*/
bool TM::EditorWidget::link_mode()
{
- QMutexLocker lock(&m_mutex);
return m_link->isChecked();
}
*/
void TM::EditorWidget::set_link_mode_disabled(bool disable)
{
- QMutexLocker lock(&m_mutex);
m_link->setDisabled(disable);
}
*/
int TM::EditorWidget::source_language()
{
- QMutexLocker lock(&m_mutex);
return m_slang->data().toInt();
}
*/
int TM::EditorWidget::target_language()
{
- QMutexLocker lock(&m_mutex);
return m_tlang->data().toInt();
}
void TM::EditorWidget::set_segment(TextSegment::pointer segment)
{
- QMutexLocker lock(&m_mutex);
m_edit->set_segment(segment);
}
*
* 結果としてデータベース、サーバ、ブラウザを更新します。
*/
-void TM::EditorWidget::save_sentence(int segment_id, int index)
+void TM::EditorWidget::save_sentence(TextSentence::pointer text_sentence)
{
- m_socket->save_sentence(segment_id, index);
+ m_socket->save_sentence(text_sentence);
}
/*!
*
* チケット #35438 訳文を元に戻せない 対応
*/
-void TM::EditorWidget::remove_sentence(int segment_id, int index)
+void TM::EditorWidget::remove_sentence(TextSentence::pointer text_sentence)
+{
+ m_socket->remove_sentence(text_sentence);
+}
+
+void TM::EditorWidget::do_panel_entered(SourcePanel *panel)
{
- m_socket->remove_sentence(segment_id, index);
+ //assert(m_socket);
+ if(!m_socket) return;
+
+ m_socket->segment_list()->set_current_sentence(panel->text_sentence());
+}
+
+void TM::EditorWidget::do_panel_leaved(SourcePanel *)
+{
+ assert(m_socket);
+ if(!m_socket) return;
+
+ m_socket->segment_list()->set_current_sentence(TextSentence::pointer());
}
/*!
m_link->setDisabled(true);
//m_slang->setDisabled(!checked);
//m_tlang->setDisabled(!checked);
- emit editModeChanged(checked);
+ //emit editModeChanged(checked);
+
+ m_service->change_edit_mode(checked);
+ if(!checked) m_edit->clear();
m_edit->set_edit_mode(checked);
}
Text::pointer TM::SourcePanel::source_sentence()
{
- return m_text_sentence->source_sentence();
+ return m_text_sentence->ssentence();
}
Text::pointer TM::SourcePanel::target_sentence()
{
- return m_text_sentence->target_sentence();
+ return m_text_sentence->tsentence();
}
void TM::SourcePanel::set_target_sentence(Text::pointer sentence)
{
- m_text_sentence->set_target_sentence(sentence);
+ m_text_sentence->set_tsentence(sentence);
}
TM::TextSentence::pointer TM::SourcePanel::text_sentence()
assert(tp);
tp->show();
if(can_link_mode()) parent_editor_widget()->set_link_mode_disabled(false);
+
+ // 編集ウィジェットに通知。
+ parent_editor_widget()->do_panel_entered(panel);
}
/*!
set_link_mode(false);
parent_editor_widget()->set_link_mode_disabled(true);
- int index = panel->index(); // センテンスのインデックス。
+ TextSentence::pointer text_sentence = panel->text_sentence();
// チケット #35438 訳文を元に戻せない
bool need_clear_target = (!tp->is_text_saved()) && tp->is_text_dirty() && tp->is_empty();
if(need_clear_target)
{
- parent_editor_widget()->remove_sentence(m_segment_id, index);
+ parent_editor_widget()->remove_sentence(text_sentence);
}
else if(!tp->is_text_saved())
{
if(tp->is_text_dirty()) divide_target_sentence(panel);
if(!tp->is_empty())
- parent_editor_widget()->save_sentence(m_segment_id, index);
+ parent_editor_widget()->save_sentence(text_sentence);
tp->set_text_saved(true);
}
+ // 編集ウィジェットに通知。
+ parent_editor_widget()->do_panel_leaved(panel);
}
/*!