Esempio n. 1
0
File: utils.cpp Progetto: dyne/MuSE
void cfade_set(GtkWidget *w, struct pack *p)
{
	struct gchan *tmp1, *tmp2;
	float value;
	gchar tmp[4];

	//	func(_("cfade_set get data for pos %u"), p->id);
	tmp1 = (struct gchan *) list_get_data(listachan, 0, p->id);
	tmp2 = (struct gchan *) list_get_data(listachan, 0, p->id+1);

	value = GTK_ADJUSTMENT(p->adj)->value;
	mixer->crossfade(tmp1->idx-1, 1.0-value, tmp2->idx-1, value);

	g_signal_handler_block(G_OBJECT(tmp1->adjvol), tmp1->volid);
	g_signal_handler_block(G_OBJECT(tmp2->adjvol), tmp2->volid);
	
	gtk_adjustment_set_value(GTK_ADJUSTMENT(tmp1->adjvol), value);
	snprintf(tmp, sizeof(tmp), "%d", (int) 
			((1.0-GTK_ADJUSTMENT(tmp1->adjvol)->value)*100));
	gtk_label_set_text(GTK_LABEL(tmp1->vol_lab), (gchar *) tmp);
	
	gtk_adjustment_set_value(GTK_ADJUSTMENT(tmp2->adjvol), 
			1.0-value);
	snprintf(tmp, sizeof(tmp), "%d", (int) 
			((1.0-GTK_ADJUSTMENT(tmp2->adjvol)->value)*100));
	gtk_label_set_text(GTK_LABEL(tmp2->vol_lab), (gchar *) tmp);
	
	g_signal_handler_unblock(G_OBJECT(tmp1->adjvol), tmp1->volid);
	g_signal_handler_unblock(G_OBJECT(tmp2->adjvol), tmp2->volid);

}
Esempio n. 2
0
void*
multiset_del_item (multiset_t* mset, void* item)
{
  void* ret;
  list_t** liter;
  list_t* ltmp;
  set_t* set;
  ret = NULL;
  set = (set_t*)mset;
  if(set && set->cmp) {
    liter = &(set->items);
    while(*liter) {
      if(!set->cmp((list_get_data(item_t, (*liter)))->item, item))
	break;
      else
	liter = &((*liter)->next);
    }
    if(*liter) {
      ret = (list_get_data(item_t, (*liter)))->item;
      if((list_get_data(item_t, (*liter)))->size > 1) {
	(list_get_data(item_t, (*liter)))->size--;
      } else {
	ltmp = *liter;
	*liter = list_next(*liter);
	XFREE(ltmp);
	mset->dorder--;
      }
      set->imark = NULL;
      set->order--;
      mset->step = 0;
    }
  } else warning("null pointer");
  return ret;
}
Esempio n. 3
0
void*
multiset_add_item (multiset_t* mset, void* item)
{
  void* ret;
  int cmp;
  list_t** liter;
  set_t* set;
  ret = NULL;
  set = (set_t*)mset;
  if(set && set->cmp) {
    cmp = 1;
    liter = &(set->items);
    while(*liter) {
      cmp = set->cmp((list_get_data(item_t, (*liter)))->item, item);
      if(cmp >= 0)
	break;
      else
	liter = &((*liter)->next);
    }
    if(!cmp) {
      (list_get_data(item_t, (*liter)))->size++;
      ret = (list_get_data(item_t, (*liter)))->item;
    } else {
      *liter = list_add_data(XMALLOC(list_t, 1), *liter, XMALLOC(item_t, 1));
      (list_get_data(item_t, (*liter)))->item = item;
      (list_get_data(item_t, (*liter)))->size = 1;
      mset->dorder++;
      ret = item;
    }
    set->imark = NULL;
    set->order++;
    mset->step = 0;
  } else warning("null pointer");
  return ret;
}
Esempio n. 4
0
File: utils.cpp Progetto: dyne/MuSE
void gcb_set_talk(GtkWidget *w)
{
	unsigned int i;
	float voltmp[MAX_CHANNELS];
	struct gchan *c = NULL;

	if(GTK_TOGGLE_BUTTON(w)->active) {
		for(i = 0; i < MAX_CHANNELS; i++) {
			c = (struct gchan *) list_get_data(listachan, i+1, 0);
			if(c) {
				storevol[i]= GTK_ADJUSTMENT(c->adjvol)->value;
				if(storevol[i] < TALK_VOLUME)
					voltmp[i]=0.0;
				else
					voltmp[i]= TALK_VOLUME;
				gtk_adjustment_set_value(GTK_ADJUSTMENT(c->adjvol), voltmp[i]);
			}
		}
		mixer->set_all_volumes(&voltmp[0]);
		
			
	}
	else {
		for(i = 0; i < MAX_CHANNELS; i++) {
			c = (struct gchan *) list_get_data(listachan, i+1, 0);
			if(c)
				gtk_adjustment_set_value(GTK_ADJUSTMENT(c->adjvol), 
						storevol[i]);
		}
		mixer->set_all_volumes(&storevol[0]);
	}
	
}
Esempio n. 5
0
struct bomb* search_bomb(struct map* map, int x, int y, int state) {
	struct list* bList = map_get_bombs(map);
	while(bList != NULL) {
		if(list_get_x(bList) == x && list_get_y(bList) == y) {
			struct bomb* bomb = list_get_data(bList);
			if(bomb->state == state)
				return list_get_data(bList);
		}
		bList = list_get_next(bList);
	}
	return NULL;
}
Esempio n. 6
0
multiset_t*
multiset_copy (multiset_t* mset)
{
  size_t iter;
  multiset_t* mscp;
  item_t* item;
  list_t* liter;
  set_t* set;
  void* obj;
  mscp = NULL;
  set = (set_t*)mset;
  if(set && set->cmp && set->cp) {
    mscp = XMALLOC(multiset_t, 1);
    init_multiset(mscp);
    multiset_cmp_function(mscp, set->cmp);
    multiset_cp_function(mscp, set->cp);
    liter = set->items;
    while(liter) {
      item = list_get_data(item_t, liter);
      obj = set->cp(item->item);
      for(iter = 0; iter < item->size; iter++)
	multiset_add_item(mscp, obj);
      liter = list_next(liter);
    }
  } else warning("null pointer");
  return mscp;
}
Esempio n. 7
0
bool gtkgui_sel_playlist(unsigned int chan, int row)
{
	struct gchan *c = NULL;
	GtkTreeModel *model = NULL;
	GtkTreeSelection *selection = NULL;
	GtkTreeIter iter;
	GtkTreePath *path = NULL;

	c = (struct gchan *) list_get_data(listachan, chan+1, 0); 

	if(!c) return false;

	if(!c->playmode)
		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(c->play), FALSE);

	gtk_entry_set_text(GTK_ENTRY(c->ptime), "00:00:00");
	gtk_adjustment_set_value(GTK_ADJUSTMENT(c->adjprog), 0.0);

	model = gtk_tree_view_get_model(GTK_TREE_VIEW(c->tree));
	if(!model) return false;
	selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(c->tree));
	if(!selection) return false;
	gtk_tree_selection_get_selected(selection, NULL, &iter);
	path = gtk_tree_model_get_path(model, &iter);
	if(!path) return false;
	
	gtk_tree_selection_select_path(selection, path);
	
	gtk_tree_path_free(path);
	

	return true;
}
Esempio n. 8
0
list_t * list_delete(list_t *li, void *data)
{
	if(!li)
		return NULL;

	list_t *i = li;
	if(data) {
		i = list_get_first(li);
		while(i) {
			if(data == list_get_data(i))
				break;
			i = i->next;
		}
		if(!i)
			return li;
	}

	list_t *r = NULL;
	if(i->next) {
		i->next->prev = i->prev;
		r = i->next;
	}
	if(i->prev) {
		i->prev->next = i->next;
		r = i->prev;
	}
	free(i);
	return r;
}
Esempio n. 9
0
void
multiset_rearrange (multiset_t* mset)
{
  size_t iter;
  list_t* liter;
  list_t* ltmp;
  cmp_t cmp;
  cp_t cp;
  set_t* set;
  item_t* item;
  set = (set_t*)mset;
  if(set && set->cmp) {
    liter = set->items;
    cmp = set->cmp;
    cp = set->cp;
    init_multiset(mset);
    multiset_cmp_function(mset, cmp);
    multiset_cp_function(mset, cp);
    while(liter) {
      ltmp = liter;
      liter = list_next(liter);
      item = list_get_data(item_t, ltmp);
      for(iter = 0; iter < item->size; iter++)
	multiset_add_item(mset, item->item);
      XFREE(item);
      XFREE(ltmp);
    }
  } else warning ("null pointer");
}
Esempio n. 10
0
void jabber_mam_process(JabberStream *js, const char* after)
{
	if (!js->mam)
		return;
	
	if (js->mam->current && js->mam->current->completed) {
		free(js->mam->current->start);
		free(js->mam->current->end);
		free(js->mam->current->with);

		memset(js->mam->last_timestamp, 0, 32);
		
		free(js->mam->current);
		js->mam->current = NULL;
	}

	if (!js->mam->current) {
		list_t *queue_item = list_get_first(js->mam->queue);
		if (queue_item) {
			js->mam->queue = list_delete(js->mam->queue, queue_item);

			js->mam->current = list_get_data(queue_item);

			js->mam->queue = list_get_next(js->mam->queue);
		}
	}
	
	if (js->mam->current)
		jabber_mam_request(js, after);
}
Esempio n. 11
0
size_t
multiset_search (multiset_t* mset, void* item)
{
  size_t ret;
  list_t* liter;
  set_t* set;
  ret = 0;
  set = (set_t*)mset;
  if(set && set->cmp && item) {
    liter = set->items;
    while(liter && set->cmp((list_get_data(item_t, liter))->item, item))
      liter = list_next(liter);
    if(liter)
      ret = (list_get_data(item_t, liter))->size;
  } else warning ("null pointer");
  return ret;
}
Esempio n. 12
0
bool gtkgui_set_lcd(unsigned int chan, char *testo)
{
	struct gchan *c;
	
	c=(struct gchan *)list_get_data(listachan, chan+1, 0); 
	if(c) {
	  gtk_entry_set_text(GTK_ENTRY(c->ptime), (gchar *) testo);
	  return true;
	}
	return false;
}
Esempio n. 13
0
const Tuple* list_get_tuple(const List* list, ListElem** idxp)
{
   ListData* data;
   
   assert(list_is_valid(list));
   assert(list->type == LIST_TUPLE);
   assert(idxp != NULL);

   data = list_get_data(list, idxp);

   return (data == NULL) ? TUPLE_NULL : data->tuple;
}
Esempio n. 14
0
const Elem* list_get_elem(const List* list, ListElem** idxp)
{
   ListData* data;
   
   assert(list_is_valid(list));
   assert(list->type == LIST_ELEM);
   assert(idxp != NULL);

   data = list_get_data(list, idxp);

   return (data == NULL) ? ELEM_NULL : data->elem;
}
Esempio n. 15
0
const Entry* list_get_entry(const List* list, ListElem** idxp)
{
   ListData* data;
   
   assert(list_is_valid(list));
   assert(list->type == LIST_ENTRY);
   assert(idxp != NULL);

   data = list_get_data(list, idxp);

   return (data == NULL) ? ENTRY_NULL : data->entry;
}
Esempio n. 16
0
const List* list_get_list(const List* list, ListElem** idxp)
{
   ListData* data;
   
   assert(list_is_valid(list));
   assert(list->type == LIST_LIST);
   assert(idxp != NULL);

   data = list_get_data(list, idxp);

   return (data == NULL) ? LIST_NULL : data->list;
}
Esempio n. 17
0
bool gtkgui_set_pos(unsigned int chan, float position)
{
	struct gchan *c;

	c=(struct gchan *)list_get_data(listachan, chan+1, 0);
	
	if(c) {
	  gtk_adjustment_set_value(GTK_ADJUSTMENT(c->adjprog), position);
	  return true;
	}
	return false;
}
Esempio n. 18
0
void bomb_display(struct game* game, struct map* map) {
	assert(game);
	assert(map);

	struct list* bList = map_get_bombs(map);
	struct bomb* bomb = NULL;
	int x;
	int y;

	if(bList != NULL){ // if there is at least one bomb

		// Bomb Display And Event
		while(bList != NULL) { // For each bombs
			bomb = list_get_data(bList);
			if(!(bomb->state)){ // bomb who's waiting
				window_display_sprite(
						sprite_get_bombs(),
						sprite_get_rect_bomb_anim(7, ((bomb->anim)/4)%4),
						list_get_x(bList) * SIZE_BLOC, list_get_y(bList) * SIZE_BLOC);
			}
			else { // bomb who's exploding
				//printf("anim: %d, cal: %d\n", bomb->anim, bomb->anim/4);

				// Center
				window_display_sprite(
						sprite_get_bombs(),
						sprite_get_rect_bomb_anim(0, bomb->anim / 4),
						list_get_x(bList) * SIZE_BLOC, list_get_y(bList) * SIZE_BLOC);
				// Event
				bomb_event(game, map, bomb, list_get_x(bList), list_get_y(bList));

				for(int d = 0; d < 4; d++){ // 0: SOUTH, 1: NORTH, 2: WEST, 3: EAST
					for(int r = 1; r <= bomb->range_dir[d]; r++){
/* d |dx |dy */ 		x = list_get_x(bList) + r * ((d / 2) * ((d * 2) - 5)); 		// + r * dx
/* 0 | 0 | 1 */			y = list_get_y(bList) + r * ((d - 3) / 2 * ((d * 2) - 1));	// + r * dy
/* 1 | 0 |-1 */			if(list_find(map_get_bombs(map), x, y) == NULL) {
/* 2 |-1 | 0 */				if(r != bomb->range) {
/* 3 | 1 | 0 */					window_display_sprite(sprite_get_bombs(), sprite_get_rect_bomb_anim(d/2 +1, bomb->anim/4), x * SIZE_BLOC, y * SIZE_BLOC);
							}
							else {
								window_display_sprite(sprite_get_bombs(), sprite_get_rect_bomb_anim(d+3, bomb->anim/4), x * SIZE_BLOC, y * SIZE_BLOC);
							}
						}
						// Event
						bomb_event(game, map, bomb, x, y);
					} // end for (range)
				} // end for (direction)
			}
			bList = list_get_next(bList);
		}
	}
}
int conexionPersonaje(int iSocketComunicacion, fd_set* socketsOrquestador, char* sPayload) {
	tHandshakePers* pHandshakePers;
	pHandshakePers = deserializarHandshakePers(sPayload);
	free(sPayload);
	int iIndiceNivel;

	log_info(logger, "Se conectó el personaje %c pidiendo el nivel '%s'", pHandshakePers->simbolo, pHandshakePers->nombreNivel);

	pthread_mutex_lock(&mtxlNiveles);
	iIndiceNivel = existeNivel(listaNiveles, pHandshakePers->nombreNivel);

	if (iIndiceNivel >= 0) {
		tNivel *pNivelPedido;
		pNivelPedido = list_get_data(listaNiveles, iIndiceNivel);
		pthread_mutex_unlock(&mtxlNiveles);

		if (pNivelPedido == NULL) {
			log_error(logger, "Saco mal el nivel: Puntero en NULL");
			sendConnectionFail(iSocketComunicacion, PL_NIVEL_INEXISTENTE, "No se encontro el nivel pedido");
		}

		avisoConexionANivel(pNivelPedido->socket, sPayload, pHandshakePers->simbolo);

		add_new_personaje_in_plataforma(pHandshakePers->simbolo);

		agregarPersonaje(pNivelPedido, pHandshakePers->simbolo, iSocketComunicacion);

		free(pHandshakePers->nombreNivel);
		free(pHandshakePers);

		delegarConexion(&pNivelPedido->masterfds, socketsOrquestador, iSocketComunicacion, &pNivelPedido->maxSock);

		pthread_cond_signal(&(pNivelPedido->hayPersonajes));

		tPaquete pkgHandshake;
		pkgHandshake.type   = PL_HANDSHAKE;
		pkgHandshake.length = 0;
		// Le contesto el handshake
		enviarPaquete(iSocketComunicacion, &pkgHandshake, logger, "Handshake de la plataforma al personaje");

		return EXIT_SUCCESS;
	} else {
		pthread_mutex_unlock(&mtxlNiveles);
		log_error(logger, "El nivel solicitado no se encuentra conectado a la plataforma");
		sendConnectionFail(iSocketComunicacion, PL_NIVEL_INEXISTENTE, "No se encontro el nivel pedido");

		free(pHandshakePers->nombreNivel);
		free(pHandshakePers);
		return EXIT_FAILURE;
	}
}
Esempio n. 20
0
bool gtkgui_set_lcd(unsigned int chan, char *testo)
{
	struct gchan *c;
	
	c=(struct gchan *)list_get_data(listachan, chan+1, 0); 
	/* c=gcb_findch(chan+1, NOPOS);*/
	if(c) {
	  //	  gdk_threads_enter();
	  gtk_entry_set_text(GTK_ENTRY(c->ptime), (gchar *) testo);
	  //	  gdk_threads_leave();
	  return true;
	}
	return false;
}
Esempio n. 21
0
void
multiset_for_each(multiset_t* mset, for_each_t fef)
{
  list_t* liter;
  set_t* set;
  set = (set_t*)mset;
  if(set && fef) {
    liter = set->items;
    while(liter) {
      fef((list_get_data(item_t, liter))->item);
      liter = list_next(liter);
    }
  } else warning("null pointer");
}
Esempio n. 22
0
File: gchan.cpp Progetto: dyne/MuSE
void gcb_add_file(GtkWidget *w, GtkFileSelection *fw)
{
	unsigned int idx = 0;
	struct gchan *o;
	gchar **cist; 
	//const gchar *cist;
	gint i;
	GtkTreeSelection *select;
	bool res=false;

	cist=NULL;
	
	idx= *(unsigned int *) g_object_get_data(G_OBJECT(GTK_FILE_SELECTION(fw)->ok_button), "chan");
	func(_("GTK_GUI::gcb_add_file : idx %u"), idx);
	cist = gtk_file_selection_get_selections(GTK_FILE_SELECTION(fw));
	//cist = gtk_file_selection_get_filename(GTK_FILE_SELECTION(fw));

	o = (struct gchan *) list_get_data(listachan, idx, 0);
	/*if(!cist[0]) {
		win_warning(_("You have to insert a filename!!"));
		return;
	}*/
	
	/* muse core'll add file into GtkTreeModel */
	for(i = 0; cist[i] != NULL; i++) {
		res = mixer->add_to_playlist(idx-1, cist[i]);
		//res = mixer->add_to_playlist(idx-1, cist);
		if(!res) { 
			func(_("gcb_add_file:: mixer->add_to_playlist(%u, %s) failed"),
					idx-1, cist[i]);
			win_error(_("Problem adding file :\\"));
		} else {
			//func(_("Added %s"), cist[i]);
			/* saves last directory visited */
			if(pathfile) 
				g_free(pathfile);
			pathfile = g_strdup(cist[i]);
			//pathfile = g_strdup(cist);
			int i = strlen(pathfile);
			while(pathfile[i] != '/') i--;
				pathfile[i+1]= '\0';
		}
	}
	g_strfreev(cist);
	select = gtk_tree_view_get_selection(GTK_TREE_VIEW(o->tree));
	gtk_tree_selection_unselect_all(select);
	gtk_widget_destroy((GtkWidget *)fw);

}
Esempio n. 23
0
bool gtkgui_add_into_pl(unsigned int chan, char *file)
{
	struct gchan *c;

	char *cist[1];
	c=(struct gchan *)list_get_data(listachan, chan+1, 0); 
	/* o=gcb_findch(chan+1, NOPOS); */

	if(!c) return false;
	cist[0] = file;

	int riga = gtk_clist_append(GTK_CLIST(c->lista), cist);
	if(!riga) gtk_clist_select_row(GTK_CLIST(c->lista), 0, 0);

	return true;
}
Esempio n. 24
0
void jabber_mam_clear(mam_t *mam)
{
	if (mam)
		return;
	
	list_t *queue_item = list_get_first(mam->queue);
	while (queue_item) {
		mam_item_t *mam_item = list_get_data(queue_item);
        
		free(mam_item->start);
		free(mam_item->end);
		free(mam_item->with);
		free(mam_item);
        
		queue_item = list_get_next(queue_item);
	}
}
Esempio n. 25
0
void
free_multiset (multiset_t* mset)
{
  item_t* item;
  set_t* set;
  list_t* liter;
  set = (set_t*)mset;
  if(set) {
    while(set->items) {
      liter = set->items;
      set->items = list_next(set->items);
      item = list_get_data(item_t, liter);
      XFREE(item);
      XFREE(liter);
    }
    XFREE(set);
  } else warning("null pointer");
}
Esempio n. 26
0
void bomb_explo_init(struct map* map, struct list* bList){ // When the bomb explode, used once per bomb
	assert(bList);
	struct bomb* bomb = list_get_data(bList);
	int cellType = 0;
	int rt = 0;
	int x;
	int y;

	if(map_get_cell_type(map, list_get_x(bList), list_get_y(bList)) == CELL_BOMB)
		map_set_cell_type(map, list_get_x(bList), list_get_y(bList), CELL_EMPTY);

	for(int d = 0; d < 4; d++){ // 0: NORTH, 1: SOUTH, 2: WEST, 3: EAST
		for(int r = 1; r <= bomb->range; r++){
			x = list_get_x(bList) + r * ((d / 2) * ((d * 2) - 5));		// + r * dx
			y = list_get_y(bList) + r * ((d - 3) / 2 * ((d * 2) - 1));	// + r * dy
			//printf("\nd: %d, x: %d, y: %d, dx: %d, dy: %d", d, x, y, ((d - 3) / 2 * ((d * 2) - 1)), ((d / 2) * ((d * 2) - 5)));

			if(0 <= x  && x < map_get_width(map) && 0 <= y && y < map_get_height(map)) { // if in map
				rt = r;
				cellType = map_get_cell_type(map, x, y);

				switch(cellType){ // Looking for something stopping the fire
				case CELL_GOAL:
				case CELL_SCENERY:
				case CELL_KEY:
					rt--;
					/* no break */
				case CELL_CASE:
				case CELL_BONUS:
				case CELL_BOMB:
					r = bomb->range + 1;
					break;
				default:
					break;
				} // end switch
			} // end if in map
		} // end range
		// Set range_dir
		bomb->range_dir[d]= rt;
		rt = 0;
	}
}
Esempio n. 27
0
void bomb_update(struct map* map) {
	assert(map);

	struct list* bList = map_get_bombs(map);
	struct bomb* bomb = NULL;
	int reload = 0;

	while(bList != NULL) {
		bomb = list_get_data(bList);
		if(!(bomb->state)) { // If the bomb has not exploded yet we display the animation of the bomb...
			// Bomb's animation
			if(bomb->anim < 4 * DEFAULT_GAME_FPS)
				bomb->anim++;
			else {
				bomb->state = 1;
				bomb_explo_init(map, bList);
				player_inc_nb_bomb(bomb->player);
				bomb->anim = 0;
			}
		}
		else{ // The bomb is exploding
			if(bomb->anim >= 1 * DEFAULT_GAME_FPS) {
				bomb_free(map, bList);
				reload = 1;
			}
			else {
				//if(bomb->anim >= 1 * DEFAULT_GAME_FPS)
					bomb->anim++;
			}
		}

		if(reload){
			bList = map_get_bombs(map);
			reload = 0;
		}
		else {
			bList = list_get_next(bList);
		}
	} // end while
}
Esempio n. 28
0
bool gtkgui_sel_playlist(unsigned int chan, int row)
{
	struct gchan *c;

	c=(struct gchan *)list_get_data(listachan, chan+1, 0); 
	/* o=gcb_findch(chan+1, NOPOS); */

	if(!c) return false;

	//	gdk_threads_enter();

	gtk_signal_handler_block(GTK_OBJECT(c->lista), blockid[chan+1]);
	gtk_clist_select_row(GTK_CLIST(c->lista), row-1, 0);
	gtk_signal_handler_unblock(GTK_OBJECT(c->lista), blockid[chan+1]);
	gtk_entry_set_text(GTK_ENTRY(c->ptime), "00:00");
	gtk_adjustment_set_value(GTK_ADJUSTMENT(c->adjprog), 0.0);

	if(!c->playmode)
		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(c->play), FALSE);
	//	gdk_threads_leave();
	return true;
}
Esempio n. 29
0
void*
multiset_next_next_item (multiset_t* mset)
{
  void* ret;
  set_t* set;
  item_t* item;
  ret = NULL;
  set = (set_t*)mset;
  if(set) {
    if(!set->imark) {
      set->imark = set->items;
      mset->step = 0;
    }
    if(set->imark) {
      item = list_get_data(item_t, set->imark);
      ret = item->item;
      mset->step = 0;
      set->imark = list_next(set->imark);
    }
  } else warning ("null pointer");
  return ret;
}
Esempio n. 30
0
bool gtkgui_add_into_pl(unsigned int chan, char *file)
{
	struct gchan *c;
	GtkTreeIter iter;
	GtkTreeModel *model;
	gchar *fileutf8;

	c = (struct gchan *) list_get_data(listachan, chan+1, 0); 

	if(!c) return false;
	
	fileutf8 = g_filename_to_utf8(file, -1, NULL, NULL, NULL);
	func(_("I'm adding %s"), fileutf8);

	model = gtk_tree_view_get_model(GTK_TREE_VIEW(c->tree));
	
	gtk_list_store_append(GTK_LIST_STORE(model), &iter);
	gtk_list_store_set(GTK_LIST_STORE(model), &iter,
			TITLE, fileutf8,
			-1);
	
	return true;
}