コード例 #1
0
static void
limited_int_update_value(node_gui_t *ng)
{
    GtkWidget *listw;
    GList *list;
    unsigned long value;

    value = cml_node_get_value(ng->node)->value.integer;
    
    listw = GTK_COMBO(ng->combo)->list;
    list = gtk_container_children(GTK_CONTAINER(listw));
    while (list != 0)
    {
    	GtkWidget *item = (GtkWidget *)list->data;
	unsigned long itemvalue;
	
	itemvalue = (unsigned long)gtk_object_get_user_data(GTK_OBJECT(item));
    	if (itemvalue == value)
	{
	    gtk_list_select_child(GTK_LIST(listw), item);
	    break;
	}
	
    	list = g_list_remove_link(list, list);
    }
    
    while (list != 0)
    	list = g_list_remove_link(list, list);
}
コード例 #2
0
ファイル: discedit.c プロジェクト: cassella/grip
void SetID3Genre(GripInfo *ginfo,int id3_genre)
{
  GtkWidget *item;

  item=
    GTK_WIDGET(g_list_nth(ginfo->gui_info.id3_genre_item_list,
			  ID3GenrePos(id3_genre))->data);
  gtk_list_select_child(GTK_LIST(GTK_COMBO(ginfo->gui_info.id3_genre_combo)->
				 list),item);
}
コード例 #3
0
ファイル: list.c プロジェクト: amery/clip-angelo
/* Selects the given child. The signal GtkList::select-child will be emitted. */
int
clip_GTK_LISTSELECTCHILD(ClipMachine * ClipMachineMemory)
{
   C_widget *clst = _fetch_cw_arg(ClipMachineMemory);

   C_widget *cchild = CWIDGET_ARG(ClipMachineMemory, 2);

   CHECKCWID(clst, GTK_IS_LIST);
   CHECKARG2(2, MAP_type_of_ClipVarType, NUMERIC_type_of_ClipVarType);
   CHECKCWID(cchild, GTK_IS_LIST_ITEM);
   gtk_list_select_child(GTK_LIST(clst->widget), cchild->widget);
   return 0;
 err:
   return 1;
}
コード例 #4
0
ファイル: dialogs.cpp プロジェクト: ChunHungLiu/GtkRadiant
void RefreshCamListCombo( void )
{
  if( !g_pCamListCombo )
    return;

  GList *combo_list = (GList*)NULL;
  CCamera *combo_cam = firstCam;
	if( combo_cam ) {
		while( combo_cam ) {
			//combo_list = g_list_append( combo_list, (void *)combo_cam->GetCam()->getName() );
			//if( combo_cam->HasBeenSaved() ) {
				combo_list = g_list_append( combo_list, (void *)combo_cam->GetFileName() );
			/*} else {
				char buf[128];
				sprintf( buf, "Unsaved Camera %i", combo_cam->GetCamNum() );
				combo_list = g_list_append( combo_list, (void *)buf );

				//combo_list = g_list_append( combo_list, (void *)combo_cam->GetCam()->getName() );	// FIXME: this requires camera.dll to create unique names for new cams
			}*/
			combo_cam = combo_cam->GetNext();
		}
	}else {
		// add one empty string make gtk be quiet
		combo_list = g_list_append( combo_list, (gpointer)g_cNull );
	}
  gtk_combo_set_popdown_strings( GTK_COMBO( g_pCamListCombo ), combo_list );
  g_list_free( combo_list );

  // select our current entry in the list
  if( GetCurrentCam() ) {
    // stop editing on the current cam
    //GetCurrentCam()->GetCam()->stopEdit();	// FIXME: this crashed on creating new cameras, why is it here?

    GList *li = GTK_LIST( GTK_COMBO(g_pCamListCombo)->list)->children;
    combo_cam = firstCam;
    while( li && combo_cam ) {
      if( combo_cam == GetCurrentCam() ) {
        gtk_list_select_child( GTK_LIST( GTK_COMBO(g_pCamListCombo)->list ), GTK_WIDGET( li->data ) );
        break;
      }
      li = li->next;
      combo_cam = combo_cam->GetNext();
    }
  }

  RefreshPathListCombo();
}
コード例 #5
0
ファイル: gtkcombo.c プロジェクト: Onjrew/OpenEV
static void
gtk_combo_update_list (GtkEntry * entry, GtkCombo * combo)
{
  GtkList *list = GTK_LIST (combo->list);
  GList *slist = list->selection;
  GtkListItem *li;

  gtk_grab_remove (GTK_WIDGET (combo));

  gtk_signal_handler_block (GTK_OBJECT (entry), combo->entry_change_id);
  if (slist && slist->data)
    gtk_list_unselect_child (list, GTK_WIDGET (slist->data));
  li = gtk_combo_find (combo);
  if (li)
    gtk_list_select_child (list, GTK_WIDGET (li));
  gtk_signal_handler_unblock (GTK_OBJECT (entry), combo->entry_change_id);
}
コード例 #6
0
ファイル: gtkcombo.c プロジェクト: Onjrew/OpenEV
static int
gtk_combo_entry_key_press (GtkEntry * entry, GdkEventKey * event, GtkCombo * combo)
{
  GList *li;

  /* completion */
  if ((event->keyval == GDK_Tab) && (event->state & GDK_MOD1_MASK)) 
    {
    GCompletion * cmpl;
    gchar* prefix;
    gchar* nprefix = NULL;
    gint pos;

    if ( !GTK_LIST (combo->list)->children )
      return FALSE;
    
    gtk_signal_emit_stop_by_name (GTK_OBJECT (entry), "key_press_event");

    cmpl = g_completion_new ((GCompletionFunc)gtk_combo_func);
    g_completion_add_items (cmpl, GTK_LIST (combo->list)->children);

    pos = GTK_EDITABLE (entry)->current_pos;
    prefix = gtk_editable_get_chars (GTK_EDITABLE (entry), 0, pos);

    g_completion_complete(cmpl, prefix, &nprefix);

    if (nprefix && strlen (nprefix) > strlen (prefix)) 
      {
    	gtk_editable_insert_text (GTK_EDITABLE (entry), nprefix + pos, 
				 strlen (nprefix) - strlen (prefix), &pos);
    	GTK_EDITABLE (entry)->current_pos = pos;
    }

    if (nprefix)
      g_free (nprefix);
    g_free (prefix);
    g_completion_free (cmpl);

    return TRUE;
  }

  if (!combo->use_arrows || !GTK_LIST (combo->list)->children)
    return FALSE;

  li = g_list_find (GTK_LIST (combo->list)->children, gtk_combo_find (combo));

  if ((event->keyval == GDK_Up)
      || (event->keyval == GDK_KP_Up)
      || ((event->state & GDK_MOD1_MASK) && ((event->keyval == 'p') || (event->keyval == 'P'))))
    {
      if (li)
	li = li->prev;
      if (!li && combo->use_arrows_always)
	{
	  li = g_list_last (GTK_LIST (combo->list)->children);
	}
      if (li)
	{
	  gtk_list_select_child (GTK_LIST (combo->list), GTK_WIDGET (li->data));
	  gtk_signal_emit_stop_by_name (GTK_OBJECT (entry), "key_press_event");
	  return TRUE;
	}
    }
  else if ((event->keyval == GDK_Down)
	   || (event->keyval == GDK_KP_Down)
	   || ((event->state & GDK_MOD1_MASK) && ((event->keyval == 'n') || (event->keyval == 'N'))))
    {
      if (li)
	li = li->next;
      if (!li && combo->use_arrows_always)
	{
	  li = GTK_LIST (combo->list)->children;
	}
      if (li)
	{
	  gtk_list_select_child (GTK_LIST (combo->list), GTK_WIDGET (li->data));
	  gtk_signal_emit_stop_by_name (GTK_OBJECT (entry), "key_press_event");
	  return TRUE;
	}
    }
  return FALSE;
}
コード例 #7
0
ファイル: dialogs.cpp プロジェクト: ChunHungLiu/GtkRadiant
static gint ci_add_target( GtkWidget *widget, gpointer data )
{
	GtkWidget *window, *w, *vbox, *vbox2, *hbox, *frame, *name;
	GtkWidget *fixed, *interpolated, *spline;
	EMessageBoxReturn ret;
  int loop = 1;
	GSList *targetTypeRadio = NULL;
	char buf[128];

	if( !GetCurrentCam() )
		return TRUE;

	// create the window
  window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
	gtk_window_set_title( GTK_WINDOW (window), "Add Target" );
  gtk_signal_connect( GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC( dialog_delete_callback ), NULL );
  gtk_signal_connect( GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC( gtk_widget_destroy ), NULL );
  gtk_window_set_transient_for( GTK_WINDOW( window ), GTK_WINDOW( g_pCameraInspectorWnd ) );

	g_object_set_data (G_OBJECT (window), "loop", &loop);
	g_object_set_data (G_OBJECT (window), "ret", &ret);

	gtk_widget_realize (window);

	// fill the window
	vbox = gtk_vbox_new( FALSE, 5 );
	gtk_container_add (GTK_CONTAINER (window), vbox);
	gtk_widget_show( vbox );

  // -------------------------- //

	hbox = gtk_hbox_new( FALSE, 5 );
  gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
	gtk_widget_show( hbox );

  w = gtk_label_new( "Name:" );
	gtk_box_pack_start( GTK_BOX( hbox ), w, FALSE, FALSE, 0 );
	gtk_widget_show( w );

  name = gtk_entry_new();
  gtk_box_pack_start( GTK_BOX( hbox ), name, TRUE, TRUE, 0 );
  gtk_widget_show( name );

	sprintf( buf, "target%i", GetCurrentCam()->GetCam()->numTargets() + 1 );
	gtk_entry_set_text( GTK_ENTRY(name), buf );

  // -------------------------- //

	hbox = gtk_hbox_new( FALSE, 5 );
  gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
	gtk_widget_show( hbox );

  frame = gtk_frame_new( "Type" );
  gtk_box_pack_start( GTK_BOX( hbox ), frame, TRUE, TRUE, 0 );
  gtk_widget_show( frame );

	vbox2 = gtk_vbox_new( FALSE, 5 );
	gtk_container_add( GTK_CONTAINER( frame ), vbox2 );
  gtk_container_set_border_width( GTK_CONTAINER (vbox2), 5 );
	gtk_widget_show( vbox2 );

	// -------------------------- //

	fixed = gtk_radio_button_new_with_label( targetTypeRadio, "Fixed" );
	gtk_box_pack_start( GTK_BOX( vbox2 ), fixed, FALSE, FALSE, 3 );
  gtk_widget_show( fixed );
  targetTypeRadio = gtk_radio_button_group( GTK_RADIO_BUTTON( fixed ) );

	interpolated = gtk_radio_button_new_with_label( targetTypeRadio, "Interpolated" );
	gtk_box_pack_start( GTK_BOX( vbox2 ), interpolated, FALSE, FALSE, 3 );
  gtk_widget_show( interpolated );
  targetTypeRadio = gtk_radio_button_group( GTK_RADIO_BUTTON( interpolated ) );

	spline = gtk_radio_button_new_with_label( targetTypeRadio, "Spline" );
	gtk_box_pack_start( GTK_BOX( vbox2 ), spline, FALSE, FALSE, 3 );
  gtk_widget_show( spline );
  targetTypeRadio = gtk_radio_button_group( GTK_RADIO_BUTTON( spline ) );

  // -------------------------- //

  w = gtk_hseparator_new ();
  gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 2);
  gtk_widget_show (w);

	// -------------------------- //

	hbox = gtk_hbox_new( FALSE, 5 );
  gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, FALSE, 0 );
	gtk_widget_show( hbox );

	w = gtk_button_new_with_label ("Ok");
	gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
	gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDOK));
	gtk_widget_show (w);

	GTK_WIDGET_SET_FLAGS( w, GTK_CAN_DEFAULT );
	gtk_widget_grab_default( w );

	w = gtk_button_new_with_label ("Cancel");
	gtk_box_pack_start (GTK_BOX (hbox), w, TRUE, TRUE, 0);
	gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (dialog_button_callback), GINT_TO_POINTER (eIDCANCEL));
	gtk_widget_show (w);
	ret = eIDCANCEL;

	// -------------------------- //

	gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
	gtk_widget_show (window);
	gtk_grab_add (window);

	bool dialogError = TRUE;
	while (dialogError) {
		loop = 1;
		while (loop)
			gtk_main_iteration ();
 
		dialogError = FALSE;

		if( ret == eIDOK ) {
			const char *str = gtk_entry_get_text( GTK_ENTRY(name) );

			if( str && str[0] ) {
				int type;
				GList *li;

				if( gtk_toggle_button_get_active( (GtkToggleButton*)fixed ) )
					type = 0;
				else if( gtk_toggle_button_get_active( (GtkToggleButton*)interpolated ) )
					type = 1;
				else if( gtk_toggle_button_get_active( (GtkToggleButton*)spline ) )
					type = 2;

				// Add the target
				GetCurrentCam()->GetCam()->addTarget( str, static_cast<idCameraPosition::positionType>(type) );

				// Rebuild the listbox
				RefreshPathListCombo();

				// Select the last item in the listbox
				li = g_list_last( GTK_LIST(GTK_COMBO(g_pPathListCombo)->list)->children );
				gtk_list_select_child( GTK_LIST(GTK_COMBO(g_pPathListCombo)->list), GTK_WIDGET (li->data) );

				// If this was the first one, refresh the event list
				if( GetCurrentCam()->GetCam()->numTargets() == 1 ) {
					RefreshEventList();
				}

				// Go to editmode Add
				gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(g_pEditModeAddRadioButton), TRUE );

			} else {
				dialogError = TRUE;
			}
		}
	}

	gtk_grab_remove (window);
	gtk_widget_destroy (window);

  return TRUE;
}