std::ostream& operator <<( std::ostream& os, const compactTractChar& object ) { std::vector< unsigned char > tract( object.tract() ); size_t counter0 ( 0 ); for( size_t i = 0; i < tract.size() && counter0 < 15; ++i ) { size_t datapoint(tract[i]); if(datapoint) { os << datapoint << " "; ++counter0; } } return os; } // end "operator << " -----------------------------------------------------------------
void myre_start_request() { const char *sRaw = gtk_entry_get_text((GtkEntry *)entry); /* vacant entry */ if(strlen(sRaw) < 1) { if(viewsAssembled) gtk_widget_hide(textview1); myre_show_help(); return ; } /* special commands */ if(0 == strcmp(sRaw, ":about")) { gtk_widget_grab_focus(entry); myre_show_about(aboutdialog); return ; } if(0 == strcmp(sRaw, ":help")) { myre_show_help(); return ; } /* HERE WE MASTER UNCOVER THE COMPLETE FORMATION */ gtk_widget_show(GTK_WIDGET(status)); /* char *s defined as gloable */ s = realloc(s, 1024); check( s != NULL, "Memory error."); memcpy(s, sRaw, strlen(sRaw)); s[strlen(sRaw)] = '\0'; /*Pack URL*/ check(getReqStr(s, mark, word) != -1,"Fail to prepare query objective."); /*Show URL in GTK*/ if(strlen(s) < 1) { gtk_widget_grab_focus(entry); return ; } gtk_widget_show(hboxmain); gtk_widget_show(textview1); gtk_widget_show(textview2); gtk_text_buffer_set_text(text1, s, -1); gtk_widget_show(button2); /* update title */ gtk_window_set_title(GTK_WINDOW(window), word); /*Fetch from URL*/ log_info("Request [%s]",s); int res = tract(getConfree = getContent(s, curl_handle), &rslt);/*create string at rslt*/ /* * we want to employ g_threadnew( const char *OptionalNameForThread, * GThreadFunc func, * gpointer data) * to offload getContent * where gpointer (*GThreadFunc) (gpointer data) */ log_info("Tract length %d",res); #ifdef LOGRAW log_info("\n%s",rslt); #endif /*Check Fetch*/ if(0 == res) { gtk_editable_delete_text((GtkEditable *) entry, 0, -1); gtk_text_buffer_set_text(text2, "Fetch returned but got nothing to display.\n"\ "Probably no match.\n", -1); gtk_statusbar_push(status, gtk_statusbar_get_context_id(status, "status"), "NOTHING TO DISPLAY"); return ; } if(-1 == res) { gtk_text_buffer_set_text(text2, "Fetch fail.\n"\ "Check your Internet Service and try again.", -1); gtk_statusbar_push(status, gtk_statusbar_get_context_id(status, "status"), "CURL ERROR"); gtk_widget_grab_focus(entry); return ; } else gtk_statusbar_push(status, gtk_statusbar_get_context_id(status, "status"), "Query success"); /*Site-specific operations */ debug("Start Prepare texts for display"); char *temp = malloc(512); switch(mark[0])/*then display points to slice of rslt*/ { case 'w': case 'z': display = rslt; break; case 'r': if(in("Google+\nShare", rslt)) cropFromMark(rslt, "\nGoogle+\nShare", &display); else if(in("Did you mean", rslt) && in("More suggestions:", rslt)) { cropFromMark(rslt, "Did you mean", &display); break; } else { display = rslt; break; } if(display != NULL) cropFromLine(display, 3, &display); break; case 'p': cropFromMark(rslt,"From en.wikipedia.org:", &display); break; case 'm': cropFromLine(rslt, 7, &display); break; case '1': case '2': case '3': case '4': case '7': case '8': case 'L': case 'l': case '5': display = rslt; break; case 'd': default: temp[0] = 0; strcat(strcat(temp, word), "\n"); #ifdef MinGW cropFromMark(rslt, temp, &display); #else cropFromMarkNoCase(rslt, temp, &display); #endif if (display == NULL) { cropFromLine(rslt, 4, &display); } temp[0] = 0; } debug("Done Prepare texts for display"); /*display on gtk*/ if(display == NULL || strlen(display) < 1) { display = "Fetch success, but myre find nothing to display...\n"\ "Please try again.\n"; } textview2_display(display, mark); debug("Done Display"); /*set starting iter*/ gtk_text_buffer_get_iter_at_offset(text2, &start, 0); /*focus*/ gtk_widget_grab_focus(textview2); current = start; end = start; gtk_text_buffer_place_cursor(text2, &start); /*highlight*/ debug("Start Highlighting..."); my_text_buffer_highlight(text2, word, 0); if(isupper(word[0])) word[0] = tolower(word[0]); else word[0] = toupper(word[0]); my_text_buffer_highlight(text2, word, 0); char *sticker = NULL; switch(mark[0]) { case 'r': sticker = malloc(512); sticker[0] = '\0'; if(isupper(word[0])) word[0] = tolower(word[0]); else word[0] = toupper(word[0]); /*Hide*/ my_text_buffer_highlight(text2, "IPA\nSyllables\nWord Origin", 3); my_text_buffer_highlight(text2, "IPA\nSyllables\n", 3); my_text_buffer_highlight(text2, "Synonyms \nExamples \nWord Origin", 3); my_text_buffer_highlight(text2, "Synonyms \nWord Origin", 3); my_text_buffer_highlight(text2, "Examples \nWord Origin", 3); my_text_buffer_highlight(text2, "Expand\n", 3); /*Highlight section*/ my_text_buffer_highlight(text2, "\nOrigin", 2); my_text_buffer_highlight(text2, "\nWord Origin", 2); my_text_buffer_highlight(text2, "\nWord Origin and History", 2); my_text_buffer_highlight(text2, "\nRelated forms", 2); my_text_buffer_highlight(text2, "\nRelated Terms", 2); my_text_buffer_highlight(text2, "\nDerived Forms", 2); my_text_buffer_highlight(text2, "\nRelated Abbreviations", 2); my_text_buffer_highlight(text2, "\nQuotes", 2); my_text_buffer_highlight(text2, "\nSynonyms", 2); my_text_buffer_highlight(text2, "\nAntonyms", 2); my_text_buffer_highlight(text2, "\nBritish Dictionary definitions", 2); my_text_buffer_highlight(text2, "\nWorld English Dictionary", 2); my_text_buffer_highlight(text2, "\nComputing Dictionary", 2); my_text_buffer_highlight(text2, "\nBible Dictionary", 2); my_text_buffer_highlight(text2, "\nSlang definitions", 2); my_text_buffer_highlight(text2, "\nAbbreviations Acronyms", 2); my_text_buffer_highlight(text2, "\nIdioms", 2); my_text_buffer_highlight(text2, "\nExamples ", 2); my_text_buffer_highlight(text2, "\nEncyclopedia ", 2); my_text_buffer_highlight(text2, "\nalso see:", 2); my_text_buffer_highlight(text2, "in Medicine", 2); my_text_buffer_highlight(text2, "in Culture", 2); my_text_buffer_highlight(text2, "in Science", 2); my_text_buffer_highlight(text2, "in Technology",2); /*Hide*/ my_text_buffer_highlight(text2, "\nCite This Source\n", 3); /* clean up*/ free(sticker); break; case 'p': case 'w': my_text_buffer_highlight(text2, "HomeRandomNearby\n", 3); my_text_buffer_highlight(text2, "Open main menu", 3); my_text_buffer_highlight(text2, "WatchlistSettingsLog in\n", 3); my_text_buffer_highlight(text2, "About WikipediaDisclaimers\n", 3); break; case 'z': my_text_buffer_highlight(text2, "首页随机附近\n", 3); my_text_buffer_highlight(text2, "监视列表设置登录\n", 3); my_text_buffer_highlight(text2, "关于维基百科免责声明\n", 3); break; case 'm': my_text_buffer_highlight(text2, " top", 3); my_text_buffer_highlight(text2, "\nSYNOPSIS", 2); my_text_buffer_highlight(text2, "\nDESCRIPTION", 2); my_text_buffer_highlight(text2, "\nOPTIONS", 2); my_text_buffer_highlight(text2, "\nCONCEPTS", 2); my_text_buffer_highlight(text2, "\nEXAMPLES", 2); my_text_buffer_highlight(text2, "\nEXIT STATUS", 2); my_text_buffer_highlight(text2, "\nSEE ALSO", 2); my_text_buffer_highlight(text2, "\nTERMINOLOGY", 2); my_text_buffer_highlight(text2, "\nDIRECTORIES", 2); my_text_buffer_highlight(text2, "\nSIGNALS", 2); my_text_buffer_highlight(text2, "\nENVIRONMENT", 2); my_text_buffer_highlight(text2, "\nNOTES", 2); break; case '1': case '2': case '3': case '4': case '7': case '8': case 'L': case 'l': case '5': sticker = malloc(512); sticker[0] = '\0'; if(isupper(word[0])) word[0] = tolower(word[0]); strcat(strcat(strcat(sticker, "\n"), word),"("); strcat(strcat(sticker, mark),") - Linux man page\n"); my_text_buffer_highlight(text2, sticker, 3); my_text_buffer_highlight(text2, "\nsite search\n", 3); my_text_buffer_highlight(text2, "Site Search\n", 3); my_text_buffer_highlight(text2, "Google Custom Search", 3); my_text_buffer_highlight(text2, "Library\nlinux docs\nlinux man pages\npage load time\nToys\n"\ "world sunlight\nmoon phase\ntrace explorer", 3); my_text_buffer_highlight(text2, "Prolog\n", 2); my_text_buffer_highlight(text2, "Name\n", 2); my_text_buffer_highlight(text2, "\nSynopsis\n", 2); my_text_buffer_highlight(text2, "\nDescription\n", 2); my_text_buffer_highlight(text2, "\nOptions\n", 2); my_text_buffer_highlight(text2, "\nEnvironment\n", 2); my_text_buffer_highlight(text2, "\nReturn Value\n", 2); my_text_buffer_highlight(text2, "\nReturn value\n", 2); my_text_buffer_highlight(text2, "\nConforming To\n", 2); my_text_buffer_highlight(text2, "\nConforming to\n", 2); my_text_buffer_highlight(text2, "\nAuthor\n", 2); my_text_buffer_highlight(text2, "\nReporting Bugs\n",2); my_text_buffer_highlight(text2, "\nCopyright\n", 2); my_text_buffer_highlight(text2, "\nBugs\n", 2); my_text_buffer_highlight(text2, "\nErrors\n", 2); my_text_buffer_highlight(text2, "\nNotes\n", 2); my_text_buffer_highlight(text2, "\nExample\n", 2); my_text_buffer_highlight(text2, "\nExamples\n", 2); my_text_buffer_highlight(text2, "\nApplication Usage\n", 2); my_text_buffer_highlight(text2, "\nRationale\n", 2); my_text_buffer_highlight(text2, "\nFuture Directions\n", 2); my_text_buffer_highlight(text2, "\nSee Also\n", 2); my_text_buffer_highlight(text2, "\nReferenced by", 2); my_text_buffer_highlight(text2, "\nReferenced By", 2); /* clean up */ free(sticker); break; case 'd': default: my_text_buffer_highlight(text2, "释义常用度分布图\n点击查看", 3); my_text_buffer_highlight(text2, "常用词汇 ", 3); my_text_buffer_highlight(text2, "用例\n", 3); my_text_buffer_highlight(text2, "词组\n", 3); my_text_buffer_highlight(text2, "讲解\n", 3); my_text_buffer_highlight(text2, "更多\n", 3); my_text_buffer_highlight(text2, "极速版|\n触屏版|\n电脑版", 3); my_text_buffer_highlight(text2, "详尽释义\n", 2); my_text_buffer_highlight(text2, "双解释义\n", 2); my_text_buffer_highlight(text2, "英英释义\n", 2); my_text_buffer_highlight(text2, "例句\n", 2); my_text_buffer_highlight(text2, "常见句型\n", 2); my_text_buffer_highlight(text2, "常用短语\n", 2); my_text_buffer_highlight(text2, "经典引文\n", 2); my_text_buffer_highlight(text2, "词汇搭配\n", 2); my_text_buffer_highlight(text2, "词语用法\n", 2); my_text_buffer_highlight(text2, "词义辨析\n", 2); my_text_buffer_highlight(text2, "常见错误\n", 2); my_text_buffer_highlight(text2, "词源解说\n", 2); my_text_buffer_highlight(text2, "近反义词\n", 2); my_text_buffer_highlight(text2, "派生词\n", 2); my_text_buffer_highlight(text2, "缩略词\n", 2); my_text_buffer_highlight(text2, "临近单词\n", 2); } debug("Done Highlighting..."); restore_cursor_pos_after_highlight(); /*clean up*/ /* char *s and char *rslt used in buffer_set, so not yet*/ free(getConfree); free(temp); return ; error: if(getConfree) free(getConfree); gtk_statusbar_push(status, gtk_statusbar_get_context_id(status, "status"), "Error rendering query target, use [m ][d ]word[ m][ d]"); gtk_widget_grab_focus(entry); }