Exemple #1
0
static void project_popup_any_cb(ExplorerUI *eui, int type)
{
    TreeItemList items;
    Quark *q;
    GraceApp *gapp;
    GProject *gp;

    TreeGetHighlighted(eui->tree, &items);

    if (!items.count || items.count > 1) {
        xfree(items.items);
        return;
    }

    q = TreeGetQuark(items.items[0]);
    gapp = gapp_from_quark(q);
    gp = gproject_from_quark(q);

    switch (type) {
    case PROJECT_SHOW_CB:
        gapp_set_active_gproject(gapp, gp);
        xdrawgraph(gp);
        update_all();
        break;
    case PROJECT_SAVE_CB:
        project_save(gp);
        break;
    case PROJECT_SAVE_AS_CB:
        project_save_as(gp);
        break;
    case PROJECT_REVERT_TO_SAVED_CB:
        revert_project(gapp, gp);
        xdrawgraph(gapp->gp);
        update_all();
        break;
    case PROJECT_CLOSE_CB:
        if (gapp->gpcount == 1) {
            errmsg("Can't close the last project");
            return;
        }

        if (gp && gproject_get_top(gp) &&
            quark_dirtystate_get(gproject_get_top(gp)) &&
            !yesno("Abandon unsaved changes?", NULL, NULL, NULL)) {
            return;
        }

        gapp_delete_gproject(gapp, gp);

        if (gapp->gp == NULL) {
            gapp_set_active_gproject(gapp, gapp->gplist[0]);
        }

        xdrawgraph(gapp->gp);
        update_all();
        break;
    }

    xfree(items.items);
}
Exemple #2
0
/*
 * expose/resize proc
 */
void expose_resize(Widget w, XtPointer client_data, XtPointer call_data)
{
    GraceApp *gapp = (GraceApp *) client_data;
    static int inc = FALSE;
    XmDrawingAreaCallbackStruct *cbs = (XmDrawingAreaCallbackStruct *) call_data;

    /* HACK */
    if (!gapp->gui->inwin) {
        return;
    }
    
    if (!inc) {
	inc = TRUE;
        
        update_all();
        xdrawgraph(gapp->gp);

        return;
    }
    
    if (cbs->reason == XmCR_EXPOSE) {
  	x11_redraw(cbs->window,
            cbs->event->xexpose.x,
            cbs->event->xexpose.y,
            cbs->event->xexpose.width,
            cbs->event->xexpose.height);
    } else {
        if (gui_is_page_free(gapp->gui)) {
            sync_canvas_size(gapp);
            update_all();
            xdrawgraph(gapp->gp);
        }
    }
}