/*!
* \brief リンクボタンをグレーアウトします。
- *
- *
*/
void TM::EditorWidget::set_link_mode_disabled(bool disable)
{
return m_tlang->data().toInt();
}
-void TM::EditorWidget::set_string(QString source_, QString target_)
+void TM::EditorWidget::set_segment(TextSegment::pointer segment)
{
QMutexLocker lock(&m_mutex);
- int code = m_slang->data().toInt();
+ m_edit->set_segment(segment);
+}
- Text::pointer result = Text::create();
- Text::pointer sentences = m_service->divide_into_sentences(code, source_);
- for(Text::pointer s = sentences->begin(); s; s = s->next())
- {
- Text::pointer words = m_service->divide_into_words(code, s);
- result->append(words);
- }
- m_edit->set_sentences(result);
+void TM::EditorWidget::save_sentence(int segment_id, int index,
+ Text::pointer target_sentence, QJsonArray link)
+{
+ qDebug() << "save: " << link;
+ m_socket->save_sentence(segment_id, index, target_sentence, link);
}
/*!
TM::SourcePanel::SourcePanel(QWidget *parent)
: EditorPanel(parent)
+ , m_index(-1)
, m_target_panel(nullptr)
{
setUndoRedoEnabled(false);
setContextMenuPolicy(Qt::NoContextMenu);
}
+int TM::SourcePanel::index() const { return m_index; }
+
+void TM::SourcePanel::set_index(int index) { m_index = index; }
+
TM::TargetPanel* TM::SourcePanel::target_panel() { return m_target_panel; }
void TM::SourcePanel::set_target_panel(TargetPanel *target)
: TextWidget(parent)
, m_settings(settings)
, m_service(service)
+ , m_segment_id(-1)
, m_edit_mode(false)
, m_link_mode(false)
, m_current_source_panel(nullptr)
*/
void TM::Editor::clear()
{
- if(!m_sentences) return; // 文を保持していない場合、何もしない。
+ if(m_segment_id < 0) return; // 文を保持していない場合、何もしない。
- m_sentences.reset(); // 保持している文のメモリーを開放する。
// パネルの終了処理。
if(m_current_source_panel) do_panel_leave(m_current_source_panel);
m_current_source_panel = nullptr;
// リンクモードの解除。
set_link_mode(false);
parent_editor_widget()->set_link_mode_disabled(true);
+
+ m_segment_id = -1;
}
-/*!
- * \brief エディタに文を設定します。
- *
- * 文は複数の場合があります。
- */
-void TM::Editor::set_sentences(Text::pointer sentences)
+void TM::Editor::set_segment(TextSegment::pointer segment)
{
clear();
- m_sentences = sentences;
+ m_segment_id = segment->segment_id();
TextArea *ta = text_area();
- for(Text::pointer s = sentences->begin(); s; s = s->next()) // s: sentence
+ int i = 0;
+ for(TextSentence::pointer p : *segment)
{
+ Text::pointer s = p->source_sentence();
+ Text::pointer t = p->target_sentence();
+
SourcePanel *sp = ta->append<SourcePanel>();
TargetPanel *tp = ta->append<TargetPanel>();
+ sp->set_index(i++);
sp->set_target_panel(tp);
sp->set_editor(this);
tp->set_source_panel(sp);
tp->set_editor(this);
+
sp->set_sentence(s);
+ if(t) tp->set_sentence(t);
+
sp->show();
}
}
if(!tp->is_text_saved())
{
- //qDebug() << m_service->si
+ int tcode = parent_editor_widget()->target_language();
+
+ if(tp->is_text_dirty())
+ {
+ panel->linker()->clear();
+ QString string = tp->toPlainText();
+ Text::pointer sentences = m_service->divide_into_sentences(tcode, string);
+ if(sentences->size())
+ {
+ Text::pointer words = m_service->divide_into_words(tcode, sentences->begin());
+ tp->set_sentence(words); // ココで、text_dirtyがfalseになる。
+ }
+ }
+
+ parent_editor_widget()->save_sentence(m_segment_id, panel->index(),
+ tp->sentence(), panel->linker()->to_json_array());
tp->set_text_saved(true);
}
}