void set_theme<edit_text_t>(edit_text_t& edit_text, theme_t theme) { if (edit_text.scrollable_m) { ::TXNObject textview(::HITextViewGetTXNObject(edit_text.control_m)); implementation::set_theme(textview, theme); } else implementation::set_theme(edit_text.control_m, theme); }
void set_selection<edit_text_t>(edit_text_t& edit_text, std::size_t start_pos, std::size_t end_pos) { assert(edit_text.control_m); if (edit_text.scrollable_m) { ::TXNObject textview(::HITextViewGetTXNObject(edit_text.control_m)); implementation::set_selection(textview, start_pos, end_pos); } else { ::ControlEditTextSelectionRec selection = { static_cast< ::SInt16 >(start_pos), static_cast< ::SInt16 >(end_pos) }; set_widget_data(edit_text.control_m, kControlEditTextPart, kControlEditTextSelectionTag, selection); } }
//------------------------------------------------------------------------------ void DbMySQLTableEditorIndexPage::update_index_details() { MySQLTableIndexListBE *indices_be = _be->get_indexes(); if (indices_be) { std::string index_name; indices_be->refresh(); Gtk::TreeView *tv = 0; _xml->get_widget("index_columns", tv); tv->remove_all_columns(); tv->unset_model(); const bool got_indices = indices_be->count() > 1; if (_index_node.is_valid() && got_indices && _index_node.back() < indices_be->real_count()) { indices_be->get_field(_index_node, 0, index_name); if (!index_name.empty()) { indices_be->select_index(_index_node); indices_be->refresh(); } _indexes_columns_model = ListModelWrapper::create(indices_be->get_columns(), tv, "IndexesColumnsModel"); // negative column means value getting/setting is delegated back to us _indexes_columns_model->model().append_check_column(-8, "", EDITABLE); _indexes_columns_model->model().append_string_column(::bec::IndexColumnsListBE::Name, "Column", RO, NO_ICON); _indexes_columns_model->model().append_combo_column(::bec::IndexColumnsListBE::OrderIndex, "#", recreate_order_model(), EDITABLE); _indexes_columns_model->model().append_combo_column(-2, "Order", _sort_order_model, EDITABLE, true); _indexes_columns_model->model().append_int_column(::bec::IndexColumnsListBE::Length, "Length", EDITABLE); _indexes_columns_model->set_fake_column_value_getter( sigc::mem_fun(this, &DbMySQLTableEditorIndexPage::get_value)); _indexes_columns_model->set_fake_column_value_setter( sigc::mem_fun(this, &DbMySQLTableEditorIndexPage::set_value)); tv->set_model(_indexes_columns_model); std::string text; indices_be->get_field(_index_node, ::MySQLTableIndexListBE::StorageType, text); _index_storage_combo_conn.block(); set_selected_combo_item(_index_storage_combo, text); _index_storage_combo_conn.unblock(); } else { set_selected_combo_item(_index_storage_combo, ""); } Gtk::Entry *entry(0); std::string text; // Update row block size _xml->get_widget("index_key_block_size", entry); indices_be->get_field(_index_node, ::MySQLTableIndexListBE::RowBlockSize, text); entry->set_text(text); // Update index parser _xml->get_widget("index_parser", entry); indices_be->get_field(_index_node, ::MySQLTableIndexListBE::Parser, text); entry->set_text(text); Gtk::TextView *textview(0); // update index comment _xml->get_widget("index_comment", textview); indices_be->get_field(_index_node, ::MySQLTableIndexListBE::Comment, text); textview->get_buffer()->set_text(text); _xml->get_widget("index_key_block_size", entry); entry->set_sensitive(got_indices && _index_node.is_valid() && _index_node.back() < indices_be->real_count()); _xml->get_widget("index_parser", entry); entry->set_sensitive(got_indices && _index_node.is_valid() && _index_node.back() < indices_be->real_count()); _xml->get_widget("index_comment", textview); textview->set_sensitive(got_indices && _index_node.is_valid() && _index_node.back() < indices_be->real_count()); this->update_gui_for_server(); _index_storage_combo->set_sensitive(got_indices && _index_node.is_valid() && _index_node.back() < indices_be->real_count()); } }
void HariMain(void) { char winbuf[1024 * 757], txtbuf[240 * 1024]; int w = 30, h = 10, t = 4, spd_x = 1, spd_y = 1; int win, i, j, lang = api_getlang(), xskip = 0; char s[30], *p, *q = 0, *r = 0; /* 커맨드 라인 해석 */ api_cmdline(s, 30); for (p = s; *p > ' '; p++) { } /* 스페이스가 올 때까지 건너 뛴다 */ for (; *p != 0; ) { p = skipspace(p); if (*p == '-') { if (p[1] == 'w') { w = strtol(p + 2, &p, 0); if (w < 20) { w = 20; } if (w > 126) { w = 126; } } else if (p[1] == 'h') { h = strtol(p + 2, &p, 0); if (h < 1) { h = 1; } if (h > 45) { h = 45; } } else if (p[1] == 't') { t = strtol(p + 2, &p, 0); if (t < 1) { t = 4; } } else { err: api_putstr0(" >tview file [-w30 -h10 -t4]\n"); api_end(); } } else { /* 파일명 발견 */ if (q != 0) { goto err; } q = p; for (; *p > ' '; p++) { } /* 스페이스가 올 때까지 건너 뛴다 */ r = p; } } if (q == 0) { goto err; } /* 윈도우의 준비 */ win = api_openwin(winbuf, w * 8 + 16, h * 16 + 37, -1, "tview"); api_boxfilwin(win, 6, 27, w * 8 + 9, h * 16 + 30, 7); /* 파일 read */ *r = 0; i = api_fopen(q); if (i == 0) { api_putstr0("file open error.\n"); api_end(); } j = api_fsize(i, 0); if (j >= 240 * 1024 - 1) { j = 240 * 1024 - 2; } txtbuf[0] = 0x0a; /* sentinel용의 개행 코드 */ api_fread(txtbuf + 1, j, i); api_fclose(i); txtbuf[j + 1] = 0; q = txtbuf + 1; for (p = txtbuf + 1; *p != 0; p++) { /* 처리를 간단하게 하기 위해서 0x0d의 코드를 지운다 */ if (*p != 0x0d) { *q = *p; q++; } } *q = 0; /* 메인 */ p = txtbuf + 1; for (;;) { textview(win, w, h, xskip, p, t, lang); i = api_getkey(1); if (i == 'Q' || i == 'q') { api_end(); } if ('A' <= i && i <= 'F') { spd_x = 1 << (i - 'A'); /* 1, 2, 4, 8, 16, 32 */ } if ('a' <= i && i <= 'f') { spd_y = 1 << (i - 'a'); /* 1, 2, 4, 8, 16, 32 */ } if (i == '<' && t > 1) { t /= 2; } if (i == '>' && t < 256) { t *= 2; } if (i == '4') { for (;;) { xskip -= spd_x; if (xskip < 0) { xskip = 0; } if (api_getkey(0) != '4') { /* '4'를 누르지 않으면 처리 끝 */ break; } } } if (i == '6') { for (;;) { xskip += spd_x; if (api_getkey(0) != '6') { break; } } } if (i == '8') { for (;;) { for (j = 0; j < spd_y; j++) { if (p == txtbuf + 1) { break; } for (p--; p[-1] != 0x0a; p--) { } /* 한 문자 전에 0x0a가 나올 때까지 거슬러 올라간다 */ } if (api_getkey(0) != '8') { break; } } } if (i == '2') { for (;;) { for (j = 0; j < spd_y; j++) { for (q = p; *q != 0 && *q != 0x0a; q++) { } if (*q == 0) { break; } p = q + 1; } if (api_getkey(0) != '2') { break; } } } } }