Commit ccf28e1858c7ca734ca652c8350f2de868f576e2

Authored by Leonardo Domingues
1 parent 11730591
Exists in master

Gera biblioteca compartilhada integrada com o repositório de atualização de dicionário e software

Makefile
... ... @@ -22,19 +22,26 @@ VERSION = 0.2
22 22  
23 23 CFLAGS =\
24 24 -I$(INCDIR)\
25   - `python-config --cflags`
  25 + -I/usr/include/python2.7 -I/usr/include/x86_64-linux-gnu/python2.7 -I/usr/local/include\
  26 + -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector\
  27 + --param=ssp-buffer-size=4 -Wformat -Werror=format-security -DNDEBUG -g -fwrapv -O2 -Wall
26 28  
27 29 LDFLAGS =\
28 30 `python-config --ldflags`\
29   - -lX11
  31 + -lX11\
  32 + -lcurl\
  33 + -llavid_base\
  34 + -llavid_io
30 35  
31   -HEADERS = \
  36 +HEADERS =\
32 37 py_tradutor.h\
33   - core_plugin.h
  38 + core_plugin.h\
  39 + property.h
34 40  
35 41 SOURCES = \
36 42 $(SRCDIR)/py_tradutor.cpp\
37   - $(SRCDIR)/core_plugin.cpp
  43 + $(SRCDIR)/core_plugin.cpp\
  44 + $(SRCDIR)/property.cpp
38 45  
39 46 .SUFFIXES: .cpp .o .h
40 47  
... ...
Makefile.build
... ... @@ -6,9 +6,10 @@ all: shared
6 6 shared:
7 7 @mkdir $(PLUGINDIR) > /dev/null 2>&1 && \
8 8 echo "Create directory $(PLUGINDIR)... $(OK)" || echo -n ""
  9 + @echo -n Compiling $(LIB) ...
  10 + @$(CXX) -shared -fPIC $(CFLAGS) $(SOURCES) -o $(PLUGINDIR)/$(LIB) $(LDFLAGS) &&\
  11 + echo " $(OK)" || (echo " $(FAILED)"; exit 1;)
9 12 @echo -n Linking $(LIB) ...
10   - @$(CXX) -shared -fPIC $(CFLAGS) $(SOURCES) $(LDFLAGS) -o $(PLUGINDIR)/$(LIB) || \
11   - (echo " $(FAILED)"; exit 1;)
12 13 @cd $(PLUGINDIR); \
13 14 ln -f -s $(LIB) lib$(LIBNAME).so; \
14 15 cd .. && echo " $(OK)" || (echo " $(FAILED)"; exit 1;)
... ... @@ -17,3 +18,8 @@ clean:
17 18 @echo -n Cleaning...
18 19 @rm -rf $(addprefix $(SRCDIR),$(OBJS)) $(PLUGINDIR) 2> /dev/null && \
19 20 echo " $(OK)" || (echo " $(FAILED)"; exit 1;)
  21 +
  22 +vlibras_test:
  23 + @echo -n Compiling source test file...
  24 + @$(CXX) $(CFLAGS) $(SOURCES) $(TESTSDIR)/main.cpp $(LDFLAGS) -o $(TESTSDIR)/vlibras_test && \
  25 + echo " $(OK)" || (echo " $(FAILED)"; exit 1;)
20 26 \ No newline at end of file
... ...
Makefile.top
... ... @@ -5,7 +5,7 @@ CXX = g++
5 5  
6 6 INCDIR = ./include
7 7 SRCDIR = ./src
8   -TESTSDIR = ./tests
  8 +TESTSDIR = ./test
9 9 PLUGINDIR = ./plugin
10 10 DOCDIR = ./doc
11 11  
... ...
config/vlibras.conf 0 → 100644
... ... @@ -0,0 +1 @@
  1 +endpoint_update=http://vlibras.lavid.ufpb.br/api/dicionario/
... ...
include/core_plugin.h
... ... @@ -17,17 +17,47 @@
17 17 #define COREPLUGIN_H_
18 18  
19 19 #include <string>
20   -#include <stdio.h>
  20 +#include <sstream>
  21 +#include <stdio.h>
  22 +#include <iostream>
  23 +#include <stdlib.h>
  24 +#include <unistd.h>
  25 +#include <sys/types.h>
  26 +#include <lavidlib/base/RuntimeException.h>
  27 +#include <curl/curl.h>
  28 +
  29 +// install libjson
  30 +// sudo apt-get install libjson0 libjson0-dev
  31 +
21 32 #include "py_tradutor.h"
  33 +#include "property.h"
  34 +
  35 +#define SCRIPT_UPDATE_VLIBRAS "gksudo -m \"<b>Para continuar, você precisa se autenticar.</b>\" \"gnome-terminal --hide-menubar -x bash -c '/./opt/vlibras_desktop/script/update_vlibras.sh;'\""
  36 +#define SCRIPT_UPDATE_DICT "gksudo -m \"<b>Para continuar, você precisa se autenticar.</b>\" \"gnome-terminal --hide-menubar -x bash -c '/./opt/vlibras_desktop/script/update_dict.sh;'\""
  37 +#define SCRIPT_INSTALL_DICT "gksudo -m \"<b>Para continuar, você precisa se autenticar.</b>\" \"gnome-terminal --hide-menubar -x bash -c '/./opt/vlibras_desktop/script/dict_install.sh;'\""
  38 +
  39 +
  40 +// TODO
  41 +#define FILEPATH_CONFIG "config/vlibras.conf"
  42 +
  43 +// TODO
  44 +#define ENDPOINT_UPDATE_ID "endpoint_update"
  45 +
  46 +// TODO
  47 +#define DIC_PACKAGE "dicionario-vlibras"
  48 +
  49 +// TODO
  50 +#define APP_PACKAGE "vlibras-desktop"
22 51  
23 52 #define MAX_BUFFER_SELECTION 1024
24   - #define REPLACE_CHARACTERS "\r\n"
  53 +#define REPLACE_CHARACTERS "\r\n"
25 54  
26 55 #ifdef __cplusplus
27 56 extern "C" {
28 57 #endif
29 58  
30   - PyTradutor *tradutor;
  59 + //PyTradutor *tradutor;
  60 + //int app_current_version, dict_current_version;
31 61  
32 62 /** \brief Inicializa o ambiente core
33 63 *
... ... @@ -53,8 +83,77 @@ extern &quot;C&quot; {
53 83 */
54 84 int coreFinalize();
55 85  
  86 +
  87 + /** \brief ?
  88 + *
  89 + * \return ?
  90 + */
  91 + int coreUpdateInstall_player();
  92 +
  93 +
  94 + /** \brief ?
  95 + *
  96 + * \return ?
  97 + */
  98 + int coreUpdateInstall_dict();
  99 +
  100 +
  101 + /** \brief ?
  102 + *
  103 + * \return ?
  104 + */
  105 + int coreUpdateCheck();
  106 +
  107 +
  108 + /** \brief ?
  109 + *
  110 + * \return ?
  111 + */
56 112 char * get_text_selection();
57   - void remove_special_chars(std::string *_word, std::string _chars);
  113 +
  114 +
  115 + /** \brief ?
  116 + *
  117 + * \return ?
  118 + */
  119 + void remove_special_chars(std::string *_word, std::string _chars, char* new_char);
  120 +
  121 +
  122 + /** \brief ?
  123 + *
  124 + * \return ?
  125 + */
  126 + static size_t writeDataCallback(
  127 + char *contents, size_t size, size_t nmemb, std::string *writer_data);
  128 +
  129 +
  130 + /** \brief ?
  131 + *
  132 + * \return ?
  133 + */
  134 + std::string request_current_versions();
  135 +
  136 +
  137 + /** \brief ?
  138 + *
  139 + * \return ?
  140 + */
  141 + int get_version_from_json(std::string json_message, std::string _key);
  142 +
  143 +
  144 + /** \brief ?
  145 + *
  146 + * \return ?
  147 + */
  148 + int get_installed_version_deb_package(std::string _package_id);
  149 +
  150 +
  151 + /** \brief ?
  152 + *
  153 + * \return ?
  154 + */
  155 + int get_version_from_string(std::string json_message, std::string _key);
  156 +
58 157  
59 158 #ifdef __cplusplus
60 159 }
... ...
include/property.h 0 → 100644
... ... @@ -0,0 +1,46 @@
  1 +/***************************************************************************
  2 + * Universidade Federal da Paraíba *
  3 + * Copyright (C) 2013 by Laboratório de Aplicações de Vídeo Digital *
  4 + * *
  5 + * Centro de Informática - UFPB - Campus I *
  6 + * João Pessoa - PB - Brasil *
  7 + * *
  8 + * Author: Leonardo de Araújo Domingues (leonardo.araujo@lavid.ufpb.br) *
  9 + * Date: Qui Nov 28 14:05:39 BRT 2013 *
  10 + * *
  11 + **************************************************************************/
  12 +
  13 + #ifndef PROPERTYHANDLER_H
  14 + #define PROPERTYHANDLER_H
  15 +
  16 + #include <stdio.h>
  17 + #include <stdlib.h>
  18 + #include <string>
  19 + #include <string.h>
  20 + #include <lavidlib/io/BufferedReader.h>
  21 + #include <lavidlib/io/FileIO.h>
  22 + #include <lavidlib/io/IOException.h>
  23 + #include <lavidlib/io/EOFException.h>
  24 + #include <lavidlib/base/RuntimeException.h>
  25 +
  26 + using namespace lavidlib;
  27 +
  28 + namespace util {
  29 +
  30 + class PropertyHandler {
  31 +
  32 + public:
  33 + PropertyHandler(std::string filename);
  34 + virtual ~PropertyHandler();
  35 + std::string getAttributeValue(std::string attr);
  36 +
  37 + private:
  38 + BufferedReader* rbuffer;
  39 + FileIO* file_property;
  40 + int checkFileExtension(std::string &filename);
  41 +
  42 + };
  43 +
  44 + }
  45 +
  46 + #endif /* PROPERTYHANDLER_H */
0 47 \ No newline at end of file
... ...
script/depends_vlibras.sh 0 → 100644
... ... @@ -0,0 +1,3 @@
  1 +#!/bin/bash
  2 +
  3 +sudo apt-get install libcurl4-openssl-dev gksu libjsoncpp-dev
0 4 \ No newline at end of file
... ...
script/update_vlibras.sh 0 → 100755
... ... @@ -0,0 +1,23 @@
  1 +#!/bin/bash
  2 +#
  3 +#
  4 +#-------------------- IMPORTANT ------------------------
  5 +# -> To run this script you need to be a sudo user |
  6 +#-------------------------------------------------------
  7 +
  8 +# Update the list of repositories
  9 +apt-get update
  10 +
  11 +if [ $1 == "vlibras-desktop" ]; then
  12 + # Install the new version of vlibras-desktop
  13 + notify-send -u critical "O VLibras está sendo atualizado! Aguarde..."
  14 + #apt-get install --only-upgrade vlibras-desktop
  15 +else
  16 + if [ $1 == "dicionario-vlibras" ]; then
  17 + # Install the new version of dicionario-vlibras
  18 + notify-send -u critical "O Dicionário de sinais do VLibras está sendo atualizado..."
  19 + #apt-get install --only-upgrade dicionario-vlibras
  20 + fi
  21 +fi
  22 +
  23 +/./opt/vlibras_desktop/script/launcher.sh
0 24 \ No newline at end of file
... ...
src/core_plugin.cpp
... ... @@ -16,7 +16,13 @@
16 16 #include "core_plugin.h"
17 17  
18 18  
  19 +/* Variables */
19 20  
  21 +PyTradutor *tradutor;
  22 +int app_current_version, dict_current_version;
  23 +
  24 +
  25 +/* Functions */
20 26  
21 27 int coreInitialize()
22 28 {
... ... @@ -24,27 +30,227 @@ int coreInitialize()
24 30 return 1;
25 31 }
26 32  
  33 +
27 34 const char* coreExecute()
28 35 {
29 36 return tradutor->convertStringToGlosa((const char*) get_text_selection());
30 37 }
31 38  
  39 +
32 40 int coreFinalize()
33 41 {
34 42 if (!tradutor)
35 43 return -1;
36 44 delete tradutor;
37   - return 1;
  45 + return 1;
  46 +}
  47 +
  48 +
  49 +int coreUpdateInstall_player()
  50 +{
  51 + system(SCRIPT_UPDATE_VLIBRAS);
  52 + return system("/./opt/vlibras_desktop/script/launcher.sh &");
38 53 }
  54 +
39 55  
40   -char * get_text_selection()
  56 +int coreUpdateInstall_dict()
41 57 {
  58 + dict_current_version = get_installed_version_deb_package(DIC_PACKAGE);
  59 + if (dict_current_version == 0)
  60 + return system(SCRIPT_INSTALL_DICT);
  61 + return system(SCRIPT_UPDATE_DICT);
  62 +}
42 63  
43   - FILE *comm_file_p = popen("xsel -o ", "r");
44   - if (!comm_file_p)
  64 +
  65 +int coreUpdateCheck()
  66 +{
  67 + app_current_version = get_installed_version_deb_package(APP_PACKAGE);
  68 + dict_current_version = get_installed_version_deb_package(DIC_PACKAGE);
  69 +
  70 + std::string response_api_str = request_current_versions().c_str();
  71 + if (response_api_str.compare("null") == 0)
  72 + return -1;
  73 +
  74 + if (get_version_from_string(response_api_str, "playerVersion") > app_current_version)
  75 + return 1;
  76 + else
  77 + if (get_version_from_string(response_api_str, "dictionaryVersion") > dict_current_version)
  78 + return 2;
  79 + return 0;
  80 +}
  81 +
  82 +
  83 +int get_installed_version_deb_package(std::string _package_id)
  84 +{
  85 + std::string _deb_package_name = "dpkg -s ";
  86 + _deb_package_name.append(_package_id);
  87 +
  88 + FILE *comm_file_p = popen(_deb_package_name.c_str(), "r");
  89 +
  90 + char line_buff [MAX_BUFFER_SELECTION];
  91 + std::string version_str = "";
  92 + bool found_flag = false;
  93 +
  94 + if (comm_file_p == NULL) perror ("Error opening file");
  95 + else
  96 + {
  97 + while ( ! feof (comm_file_p) )
  98 + {
  99 + if ( fgets (line_buff , (int) sizeof(line_buff) , comm_file_p) == NULL ) break;
  100 +
  101 + version_str = (std::string) line_buff;
  102 + if ( version_str.find("Version:") != std::string::npos )
  103 + {
  104 + found_flag = true;
  105 + break;
  106 + }
  107 + }
  108 + fclose (comm_file_p);
  109 + }
  110 +
  111 + if (!found_flag) return 0;
  112 +
  113 + char *line_version_ptr = strtok ((char*) version_str.c_str(), " ");
  114 +
  115 + if (line_version_ptr == NULL)
45 116 {
46   - return NULL;
  117 + printf("Version of the deb package is null!\n");
  118 + return 0;
47 119 }
  120 +
  121 + line_version_ptr = strtok (NULL, " ");
  122 + version_str = (std::string) line_version_ptr;
  123 + remove_special_chars(&version_str, ".", (char*) "");
  124 +
  125 + printf("%s installed version: %s\n", _package_id.c_str(), version_str.c_str());
  126 +
  127 + return atoi(version_str.c_str());
  128 +
  129 +}
  130 +
  131 +
  132 +
  133 +int get_version_from_string(std::string json_message, std::string _key)
  134 +{
  135 + int position = json_message.find(_key);
  136 + if (position == -1)
  137 + return position;
  138 +
  139 + std::string version_str_cpy = json_message.substr(position, json_message.find(","));
  140 +
  141 + remove_special_chars(&version_str_cpy, ".\":,", (char*) "");
  142 + char *tokens_ptr;
  143 + if ( version_str_cpy.find("_") != std::string::npos )
  144 + {
  145 + tokens_ptr = strtok ((char*) version_str_cpy.c_str(), "_");
  146 + if (tokens_ptr == NULL)
  147 + printf("[Error] Cannot handler the version of dictionary.\n");
  148 + version_str_cpy = (std::string) tokens_ptr;
  149 + }
  150 +
  151 + tokens_ptr = strtok ((char*) version_str_cpy.c_str(), " ");
  152 + if (tokens_ptr == NULL)
  153 + {
  154 + printf("[Error] Cannot split string with versions.\n");
  155 + return -1;
  156 + }
  157 + tokens_ptr = strtok (NULL, " ");
  158 + version_str_cpy = (std::string) tokens_ptr;
  159 +
  160 + return atoi(version_str_cpy.c_str());
  161 +}
  162 +
  163 +
  164 +//@Deprecated
  165 +int get_version_from_json(std::string json_message, std::string _key)
  166 +{
  167 +
  168 + return -1;
  169 +
  170 + /*//Code to JsonCpp
  171 + Json::Value parsed_from_str;
  172 + Json::Reader json_reader;
  173 + bool parsing_flag = json_reader.parse(json_message, parsed_from_str);
  174 +
  175 + if (!parsing_flag)
  176 + throw new RuntimeException("Cannot convert the json message to string.");
  177 +
  178 + std::string version_str = parsed_from_str[_key].asString();
  179 +
  180 + // Check if the version of dictionary contains '_' token.
  181 + if ( version_str.find("_") != std::string::npos )
  182 + {
  183 + char *tokens_ptr = strtok ((char*) version_str.c_str(), "_");
  184 + if (tokens_ptr == NULL)
  185 + throw new RuntimeException("Cannot handler the version of dictionary.");
  186 + version_str = (std::string) tokens_ptr;
  187 + }
  188 +
  189 + remove_special_chars(&version_str, ".", (char*) "");
  190 + return atoi(version_str.c_str());
  191 + */
  192 +}
  193 +
  194 +
  195 +
  196 +std::string request_current_versions()
  197 +{
  198 + CURL *curl_ptr;
  199 + CURLcode curl_response;
  200 + std::string data_str;
  201 +
  202 + util::PropertyHandler *property_handler_ptr;
  203 + property_handler_ptr = new util::PropertyHandler((std::string) FILEPATH_CONFIG);
  204 +
  205 + curl_ptr = curl_easy_init();
  206 + if(curl_ptr)
  207 + {
  208 + std::string url_endpoint = property_handler_ptr->getAttributeValue(ENDPOINT_UPDATE_ID);
  209 +
  210 + std::stringstream ss_convert;
  211 + ss_convert << dict_current_version;
  212 + url_endpoint.append(ss_convert.str());
  213 +
  214 + if (url_endpoint.size() <= 0)
  215 + throw new RuntimeException("The URL for this Endpoint is not available on the file config.");
  216 +
  217 + curl_easy_setopt(curl_ptr, CURLOPT_URL, (char*) url_endpoint.c_str());
  218 + curl_easy_setopt(curl_ptr, CURLOPT_WRITEFUNCTION, writeDataCallback);
  219 + curl_easy_setopt(curl_ptr, CURLOPT_WRITEDATA, (char*) &data_str);
  220 +
  221 + curl_response = curl_easy_perform(curl_ptr);
  222 +
  223 + if(curl_response != CURLE_OK)
  224 + {
  225 + fprintf(stderr, "curl_easy_perform() failed: %s\n",
  226 + curl_easy_strerror(curl_response));
  227 + return "null";
  228 + }
  229 +
  230 + /* always cleanup */
  231 + curl_easy_cleanup(curl_ptr);
  232 +
  233 + }
  234 + return data_str;
  235 +}
  236 +
  237 +
  238 +static size_t writeDataCallback(
  239 + char *contents, size_t size, size_t nmemb, std::string *writer_data)
  240 +{
  241 + if (writer_data == NULL)
  242 + return 0;
  243 +
  244 + writer_data->append(contents, (size * nmemb));
  245 + return (size * nmemb);
  246 +}
  247 +
  248 +
  249 +char* get_text_selection()
  250 +{
  251 +
  252 + FILE *comm_file_p = popen("xsel -o ", "r");
  253 +
48 254 char line_buff [MAX_BUFFER_SELECTION];
49 255 std::string line_str = "";
50 256  
... ... @@ -58,20 +264,20 @@ char * get_text_selection()
58 264 }
59 265 fclose (comm_file_p);
60 266 }
61   - remove_special_chars(&line_str, (std::string) REPLACE_CHARACTERS);
  267 + remove_special_chars(&line_str, (std::string) REPLACE_CHARACTERS, (char*) " ");
62 268  
63 269 return (char*) line_str.c_str();
64 270  
65 271 }
66 272  
67   -void remove_special_chars(std::string *_word, std::string _chars)
  273 +void remove_special_chars(std::string *_word, std::string _chars, char* new_char)
68 274 {
69 275 int index = -1;
70   - for (int i = 0; i < _chars.size(); i++)
  276 + for (int i = 0; i < (int) _chars.size(); i++)
71 277 {
72   - while ( (index = (int) _word->find(_chars[i])) != std::string::npos)
  278 + while ( (index = (int) _word->find(_chars[i])) != (int) std::string::npos)
73 279 {
74   - _word->replace(index, 1, " "); // remove chars replacing your position by " "
  280 + _word->replace(index, 1, new_char);
75 281 }
76 282 }
77 283 }
78 284 \ No newline at end of file
... ...
src/property.cpp 0 → 100644
... ... @@ -0,0 +1,80 @@
  1 +/***************************************************************************
  2 + * Universidade Federal da Paraíba *
  3 + * Copyright (C) 2013 by Laboratório de Aplicações de Vídeo Digital *
  4 + * *
  5 + * Centro de Informática - UFPB - Campus I *
  6 + * João Pessoa - PB - Brasil *
  7 + * *
  8 + * Author: Leonardo de Araújo Domingues (leonardo.araujo@lavid.ufpb.br) *
  9 + * Date: Qui Nov 28 14:06:10 BRT 2013 *
  10 + * *
  11 + **************************************************************************/
  12 +
  13 + #include "property.h"
  14 +
  15 +
  16 + namespace util {
  17 +
  18 +
  19 + PropertyHandler::PropertyHandler(std::string filename) {
  20 + try {
  21 + if (checkFileExtension(filename) != 1)
  22 + throw new RuntimeException("Format file not is recognized!");
  23 + file_property = new FileIO(filename, FileIO::MODE_READ);
  24 + } catch (lavidlib::IOException &ex) {
  25 + printf("[FAILED] Cannot open file %s.\n%s\n", filename.c_str(),
  26 + ex.getMessage().c_str());
  27 + }
  28 + }
  29 +
  30 +
  31 + PropertyHandler::~PropertyHandler() {
  32 + if (rbuffer)
  33 + delete rbuffer;
  34 + if (file_property)
  35 + delete file_property;
  36 + }
  37 +
  38 +
  39 + std::string PropertyHandler::getAttributeValue(std::string attr) {
  40 +
  41 + rbuffer = new BufferedReader(file_property);
  42 + std::string fline;
  43 + try {
  44 + int target_pos = -1, begin = 0;
  45 + std::string attr_t, value_t;
  46 +
  47 + while((fline = rbuffer->readLine()).size() > 0) {
  48 + target_pos = fline.find("=");
  49 + if (target_pos < 2)
  50 + throw new RuntimeException("The assignment symbol was not found.");
  51 +
  52 + attr_t = fline.substr(begin, target_pos);
  53 + begin = target_pos+1;
  54 + value_t = fline.substr(begin, fline.size());
  55 + if (attr.compare(attr_t) == 0) {
  56 + file_property->seek(0);
  57 + return value_t;
  58 + }
  59 + target_pos = -1;
  60 + begin = 0;
  61 + }
  62 + } catch (lavidlib::EOFException &ex) {
  63 + printf("[INFO] File is completed.\n%s\n", ex.getMessage().c_str());
  64 + }
  65 + file_property->seek(0);
  66 + //FIXME: throw new exception
  67 + return fline;
  68 + }
  69 +
  70 + #define EXTENSION ".conf"
  71 +
  72 + int PropertyHandler::checkFileExtension(std::string &filename) {
  73 +
  74 + return (filename.find(EXTENSION) > 0 &&
  75 + (filename.size() == (filename.find(EXTENSION) + strlen(EXTENSION)))) ? 1 : -1;
  76 +
  77 + }
  78 +
  79 +
  80 + }
0 81 \ No newline at end of file
... ...
test/main.cpp
... ... @@ -13,8 +13,7 @@
13 13 * \date Janeiro 2015
14 14 */
15 15  
16   -#include <py_tradutor.h>
17   -//#include <core_plugin.h>
  16 +#include <core_plugin.h>
18 17  
19 18 #include <iostream>
20 19 #include <fstream>
... ... @@ -22,21 +21,46 @@
22 21  
23 22 int main()
24 23 {
  24 +
  25 + if (coreInitialize() != 1)
  26 + {
  27 + printf("Cannot initialize the CorePlugin.\n");
  28 + exit(-1);
  29 + }
25 30  
  31 + int result_check = coreUpdateCheck();
  32 + switch (result_check)
  33 + {
  34 + case 0:
  35 + printf("The VLibras is up-to-date!\n");
  36 + break;
  37 + case 1:
  38 + printf("The VLibras is outdated! Upgrading...\n");
  39 + break;
  40 + case 2:
  41 + printf("Only the dictionary is outdated! Upgrading...\n");
  42 + break;
  43 + case -1:
  44 + printf("Error!\n");
  45 + break;
  46 + default:
  47 + printf("Option not found! Try again.\n");
  48 + }
  49 +
26 50 // Inicializa o tradutor
27   - PyTradutor *tradutorTest;
28   - tradutorTest = new PyTradutor();
  51 + //PyTradutor *tradutorTest;
  52 + //tradutorTest = new PyTradutor();
29 53  
30 54 // Pega o conteúdo do clipboard e salva em `pasteboardContent`
31 55 //std::string pasteboardContent = Pasteboard::getGeneralContent();
32 56 // Traduz o conteúdo do clipboard em `pasteboardContent` para a string `traducao`
33   - char* str = new char[10];
34   - strcpy(str, "o gato comeu o rato");
35   - std::string traducao = tradutorTest->convertStringToGlosa(str);
  57 + //char* str = new char[10];
  58 + //strcpy(str, "o gato comeu o rato");
  59 + //std::string traducao = tradutorTest->convertStringToGlosa(str);
36 60  
37 61 // [LOG] Exibe o conteudo do buffer de clipboard em `pasteboardContent` e traduz para glosa salvando seu resultado em `traducao`
38   - std::cout << "[[ Conteudo em memoria ]]\n" << str << std::endl;
39   - std::cout << "[[ Tradução ]]\n" << traducao << std::endl;
  62 + //std::cout << "[[ Conteudo em memoria ]]\n" << str << std::endl;
  63 + //std::cout << "[[ Tradução ]]\n" << traducao << std::endl;
40 64  
41 65 //std::cout << "\n##### ##### #####" << std::endl;
42 66  
... ... @@ -49,5 +73,6 @@ int main()
49 73  
50 74 // Exclui o que foi utilizado
51 75 // delete tradutorTest;
  76 +
52 77 return 0;
53 78 -}
  79 +}
54 80 \ No newline at end of file
... ...