コード例 #1
0
static gboolean view_release_event(GtkWidget *view, GdkEventButton *event, gpointer user_data){
    if(event->button!=1) return FALSE;
    GtkTreePath *path=NULL;
    GtkTreeViewColumn *column=NULL;
    if(gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(view),
				     (gint)event->x,
				     (gint)event->y,
				     &path, &column, NULL, NULL)){
	const gchar *title=gtk_tree_view_column_get_title(column);
	if(!strcmp(title," ")){
	    GtkTreeIter iter;
	    gint ihost=GPOINTER_TO_INT(user_data);
	    GtkTreeModel *model=GTK_TREE_MODEL(lists[ihost]);
	    gtk_tree_model_get_iter(model, &iter, path);
	    GValue value=G_VALUE_INIT;
	    gtk_tree_model_get_value(model, &iter, COL_PID, &value);
	    int pid=strtol(g_value_get_string(&value), NULL, 10);
	    g_value_unset(&value);
	    PROC_T *p=proc_get(ihost, pid);
	    if(p){
		if(p->status.info<10){
		    kill_job(p);
		}else{
		    scheduler_cmd(ihost, pid, CMD_REMOVE);
		}
	    }
	}
    }
    return TRUE;
}
コード例 #2
0
/*A general routine handle actions to each item.*/
static void handle_selected(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer user_data, int cmd, const char *action){
    (void)path;
    gint ihost=GPOINTER_TO_INT(user_data);
    GValue value=G_VALUE_INIT;
    gtk_tree_model_get_value(model, iter, COL_PID, &value);
    int pid=strtol(g_value_get_string(&value), NULL, 10);
    g_value_unset(&value);
    if(cmd<0){
	switch(cmd){
	case -1:{
	    if(!strcmp(action, "CopyPath")){
		gtk_tree_model_get_value(model, iter, COL_START, &value);
	    }else if(!strcmp(action, "CopyOutPath")){
		gtk_tree_model_get_value(model, iter, COL_OUT, &value);
	    }else if(!strcmp(action, "Copy")){
		gtk_tree_model_get_value(model, iter, COL_FULL, &value);
	    }
	    gchar *jobinfo=g_strdup(g_value_get_string(&value));
	    g_value_unset(&value);
	    clipboard_append(jobinfo);
	    g_free(jobinfo);
	}
	    break;
	}
    }else{
	if(scheduler_cmd(ihost,pid,cmd)){
	    warning("Failed to %s the job\n", action);
	}
    }
}
コード例 #3
0
static void delete_hbox_event(GtkWidget *btn, GdkEventButton *event,PROC_T *p){
    (void)btn;
    if(event->button==1){
	scheduler_cmd(p->hid,p->pid,CMD_REMOVE);
    }
}