2017-10-06 12 views
0

어쩌면 이것이 폭 넓거나 모호한 질문 일 수 있습니다.Gtk # aka에서 굵게, 기울임 꼴, 밑줄 버튼 수행 방법 동적으로 gtk에서 텍스트 서식 지정하는 방법

나는 온라인상에서 나에게 맞는 것을 발견 할 수 없다. 나는 Gtk2.0과 C#으로 일하고있다. 그리고 이것을 온라인으로하는 방법에 대한 모든 언급은 다른 언어로되어 있으며 목록으로 보인다. 함수의 이름을 사용하거나 코드에서 텍스트를 생성하는 동안 textview에서 텍스트의 형식을 지정하는 예가 있습니다 (즉, "Hello World"라는 문장을 작성하십시오.) 그런 다음 Hello를 으로 굵게으로 만드십시오. 이 작업을 수행, 그리고 기능의 아주 기본적인 비트처럼 보인다

을 텍스트를 굵게 완벽하게 쉽게, 예를 들면 다음과 같습니다.

protected void Command_bold(object sender, EventArgs e) 
{ 
    if (selectedTextView.Buffer.GetSelectionBounds(out A, out B)) 
    { 
     selectedTextView.Buffer.ApplyTag("bold", A, B); 
    } 
} 

하지만이 버튼을 사용하여이 함수를 트리거하면 내용이 굵게 표시됩니다 (또는 이탤릭체 ... 등). 굵은 단추의 일반적인 기능은 선택 항목 중 일부 또는 모두가 이미 굵게 표시되어있는 경우 선택 항목을 모두 굵게 표시하거나 모두 굵게 표시하지 않으면 모두 굵게 표시하지 않습니다.

Gtk TextView 개체에서 텍스트가 굵게 표시되거나 숨겨져있는 경우 어떻게 감지합니까?

답변

0

좋아, 그래서 알아 냈어. 다소간. 아래의 논리는 결함이 있지만 태그를 감지하고 굵은 단추의 논리를 제어하는 ​​방법입니다.

protected void Action_Bold(object sender, EventArgs e) 
{ 
    TextIter iA, A, B; 
    bool isBold = false; 
    if (selectedTextView.Buffer.GetSelectionBounds(out A, out B)) 
    { 
     iA = A; 
     while (iA.Compare(B) < 0) 
     { 
      foreach (TextTag tag in A.Tags) 
      { 
       if (tag.Name == "bold") isBold = true; 
      } 

      iA.ForwardChar(); 

     } 

     if (isBold == true) 
     { 
      selectedTextView.Buffer.RemoveTag("bold", A, B); 
     } 
     else 
     { 
      selectedTextView.Buffer.ApplyTag("bold", A, B); 
     } 
    } 
}