Example #1
0
File: main.c Project: callaa/luola
/* Do initializations that require datafiles */
static int load_data(void) {
    LDAT *graphics;
    graphics = ldat_open_file(getfullpath(DATA_DIRECTORY,"gfx.ldat"));
    if(graphics==NULL)
        return 1;

    init_critters(graphics);
    init_intro(graphics);
    init_game(graphics);
    init_selection(graphics);
    init_players(graphics);
    init_pilots(graphics);
    init_ships(graphics);
    init_specials(graphics);
    init_projectiles(graphics);

    ldat_free(graphics);

    return 0;
}
Example #2
0
static const char *format_misc_status(struct window *win)
{
    static char misc_status[32];

    if (special_input_misc_status(misc_status))
        return misc_status;

    if (input_mode == INPUT_SEARCH) {
        snprintf(misc_status, sizeof(misc_status), "[case-sensitive = %s]",
                 case_sensitive_search_enum[options.case_sensitive_search]);
    } else if (win->view->selection) {
        struct selection_info info;

        init_selection(win->view, &info);
        if (win->view->selection == SELECT_LINES) {
            snprintf(misc_status, sizeof(misc_status), "[%d lines]", get_nr_selected_lines(&info));
        } else {
            snprintf(misc_status, sizeof(misc_status), "[%d chars]", get_nr_selected_chars(&info));
        }
    } else {
        return NULL;
    }
    return misc_status;
}
int ed_renz_reg (Tcl_Interp *interp,
		 int seq_id,
		 out_canvas_e *output,
		 char *frame,
		 char *names_win,
		 char *re_win,
		 char *inlist,
		 int num_items,
		 int start,
		 int end,
		 int text_offset,
		 char *text_fill,
		 tick_s *tick,
		 int yoffset,
		 ruler_s *ruler,
		 cursor_s cursor)
{
    editor_result *result;
    RENZYMES *r_enzyme;
    SELECTION *selection;
    EDITOR_RECORD *er;
    ed_renz_res *data;
    int id, ed_id, group_id, member_id;
    int seq_num, seq_type;
    seq_reg_cursor_notify cn;
    int line_width;
    char **sel = NULL;
    int num_sel;
     
    if (NULL == (result = (editor_result *)xmalloc(sizeof(editor_result))))
	return -1;
    if (NULL == (data = (ed_renz_res *)xmalloc(sizeof(ed_renz_res))))
	return -1;
  
    seq_num = GetEdenNum(seq_id); /* get position of the sequence in registration list */

    seq_type = GetEdenType (seq_num);
    result->data = data;
    result->seq_id[HORIZONTAL] = seq_id;
    result->seq_id[VERTICAL] = -1;
 
    id = get_editor_reg_id();
    result->id = id; 
    result->output = (void *)output;
    result->pr_func = ed_nip_renz_print_func;
    result->op_func = ed_renz_callback;
    result->txt_func = ed_nip_renz_text_func;

    /* data structure */
    strcpy(data->re_win, re_win);
    strcpy(data->frame, frame);
    strcpy(data->names_win, names_win);
    
    data->tick = tick;
    data->ruler = ruler;
    data->cursor = cursor; /* cursor_s */
    data->sequence_len = GetEdenLength (seq_num);
    data->sequence_type = seq_type;
   
    /* create list of windows in the restriction enzyme display */
    if (NULL == (data->win_list = (win **)xmalloc(MAX_NUM_WINS * sizeof(win*))))
	return -1;

    data->num_wins = 0;
    addWindow(data->win_list, &data->num_wins, data->re_win, 'b', id);
    addWindow(data->win_list, &data->num_wins, data->ruler->window, 'x', id);
    addWindow(data->win_list, &data->num_wins, data->names_win, 'y', id);
   
    if (NULL == (data->canvas = (CanvasPtr *)xmalloc(sizeof(CanvasPtr))))
	return -1;

    if (NULL == (data->world= (WorldPtr *)xmalloc(sizeof(WorldPtr))))
	return -1;

    if (NULL == (data->world->visible = (d_box *)xmalloc(sizeof(d_box))))
	return -1;

    if (NULL == (data->world->total = (d_box *)xmalloc(sizeof(d_box))))
	return -1;

    initCanvas(interp, data->canvas, data->re_win);
    createZoom(&data->zoom);

    /* create selecing Renzyme name array */
    if (Tcl_SplitList(interp, inlist, &num_sel, &sel) != TCL_OK)
      return -1;
    
    r_enzyme = get_selected_renzyme ( num_sel, sel);   
    data->r_enzyme = r_enzyme;
    data->num_enzymes = num_sel; /* num_items = num_sel ? */;    
    data->tick = tick;
    data->yoffset = yoffset;
    data->text_offset = text_offset;   
    data->text_colour = strdup(text_fill);
    /*data->seq_id = seq_num;*/
    data->seq_id = seq_id;
    data->match = NULL;
    data->num_match = 0;
    selection = init_selection ();
    data->sel = selection;
   
    line_width = get_default_int(interp, nip_defs, w("NIP.CURSOR.LINE_WIDTH"));
   
    /* private=0: share cursor for every plot */
    output->cursor = editor_create_cursor(seq_num, 0, NULL, line_width, 1, HORIZONTAL);
    output->cursor_visible = 0;
    
    ed_id = GetEdIdFromSeqId (seq_id);
    member_id = GetMemberIdFromSeqId (seq_id);
    group_id = GetGroupIdFromSeqId (seq_id);
    er = GetEditor (ed_id);
    er->graphical = 1;
    output->cursor->frame_name = NULL;
   
    output->cursor->posy = member_id;
    set_editor_cursor (ed_id, output->cursor);

    /* move cursor to start position if this is our own cursor */
    if (output->cursor->refs == 1) {
	output->cursor->abspos = start;
	output->cursor->posy = 1;
    }
    
    editor_register(seq_num, ed_renz_callback, (void *)result, SEQ_PLOT_TEMP, id);

    ed_renz_replot (interp, output, result, data);
    /* if above returns -1, may want to
     * to editor_renz_shutdown(interp, result, seq_num); ?
     */
    
    cn.job = SEQ_CURSOR_NOTIFY;
    cn.cursor = output->cursor;
    cn.cursor->job = CURSOR_MOVE;
    cn.selection = selection;
    editor_notify(seq_num, (editor_reg_data *)&cn);
    
    return id;
}