Esempio n. 1
0
void cmd_run(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX_STR_SIZE])
{
    FILE       *fp;
    const char *error_str;

    cur_window  = window;
    self_window = self;

    if (argc != 1) {
        if (argc < 1) {
            error_str = "Path must be specified.";
        } else {
            error_str = "Only one argument allowed.";
        }

        line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, error_str);
        return;
    }

    fp = fopen(argv[1], "r");

    if (fp == NULL) {
        error_str = "Path does not exist.";

        line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, error_str);
        return;
    }

    run_python(fp, argv[1]);
    fclose(fp);
}
Esempio n. 2
0
int main(int argc, char* argv[])
{
  // Initialise Python bridge.
  start_python_bridge();

  // Run a few Python commands to initialise Mnemosyne.
  run_python(
    "import sys\n"
    "sys.path.insert(0, \"/home/pbienst/source/mnemosyne-proj-pbienst/mnemosyne\")\n"
    "from mnemosyne.libmnemosyne import Mnemosyne\n"
    "mnemosyne = Mnemosyne(upload_science_logs=False, interested_in_old_reps=False)\n"
    "mnemosyne.components.insert(0, (\"mnemosyne.libmnemosyne.translator\", \"GetTextTranslator\"))\n"
    "mnemosyne.components.append((\"mnemosyne.embedded_in_C.main_wdgt\", \"MainWdgt\"))\n"
    "mnemosyne.components.append((\"mnemosyne.embedded_in_C.review_wdgt\", \"ReviewWdgt\"))\n"
    "mnemosyne.components.append((\"mnemosyne.embedded_in_C.dlgs\", \"AddCardsDlg\"))\n"    
    "mnemosyne.components.append((\"mnemosyne.embedded_in_C.dlgs\", \"EditCardDlg\"))\n"    
    "mnemosyne.components.append((\"mnemosyne.embedded_in_C.dlgs\", \"SyncDlg\"))\n"
    "mnemosyne.initialise(data_dir=\"/home/pbienst/source/mnemosyne-proj-pbienst/mnemosyne/dot_mnemosyne2\", filename=\"default.db\")\n"
    "mnemosyne.start_review()\n"
    "mnemosyne.controller().show_add_cards_dialog()\n"
    "mnemosyne.review_controller().show_answer()\n"
    "mnemosyne.review_controller().grade_answer(0)\n"
);

  // For syncing, the python code looks something like this:
  // mnemosyne.controller().sync(server, port, username, password)

  // Illustration on how to get data from Python to C.
  char result[256];
  eval_python_as_unicode("mnemosyne.database().card_count()\n", 
                         result, sizeof(result));
  printf("card count: %s\n", result);
  
  // Termination.  
  run_python("mnemosyne.finalise()");
  stop_python_bridge();
}
Esempio n. 3
0
void invoke_autoruns(WINDOW *window, ToxWindow *self)
{
    struct dirent *dir;
    char    abspath_buf[PATH_MAX + 1], err_buf[PATH_MAX + 1];
    size_t  path_len;
    DIR    *d;
    FILE   *fp;

    if (user_settings->autorun_path[0] == '\0') {
        return;
    }

    d = opendir(user_settings->autorun_path);

    if (d == NULL) {
        snprintf(err_buf, PATH_MAX + 1, "Autorun path does not exist: %s", user_settings->autorun_path);
        api_display(err_buf);
        return;
    }

    cur_window  = window;
    self_window = self;

    while ((dir = readdir(d)) != NULL) {
        path_len = strlen(dir->d_name);

        if (!strcmp(dir->d_name + path_len - 3, ".py")) {
            snprintf(abspath_buf, PATH_MAX + 1, "%s%s", user_settings->autorun_path, dir->d_name);
            fp = fopen(abspath_buf, "r");

            if (fp == NULL) {
                snprintf(err_buf, PATH_MAX + 1, "Invalid path: %s", abspath_buf);
                api_display(err_buf);
                continue;
            }

            run_python(fp, abspath_buf);
            fclose(fp);
        }
    }

    closedir(d);
}