Ejemplo n.º 1
0
/* This is called automatically when we recieve a drop */
static void
clist_drag_data_received(GtkWidget        *widget,
                         GdkDragContext   *context,
                         gint             x,
                         gint             y,
                         GtkSelectionData *data,
                         guint            drag_info,
                         guint            time,
                         FileView         *view)
{
  gint row, col;
  FileInfo *info;
  gchar dest_dir[PATH_MAX];

  gtk_clist_set_background(GTK_CLIST(view->clist), view->last_row,
                           &CLIST_COLOR);

  if (!gtk_clist_get_selection_info(GTK_CLIST(view->clist), x, y, &row, &col))
  {
    g_snprintf(dest_dir, sizeof(dest_dir), "%s/", view->dir);
  }
  else
  {
    info = gtk_clist_get_row_data(GTK_CLIST(view->clist), row);

    if (is_dir(info))
      g_snprintf(dest_dir, sizeof(dest_dir), "%s/%s/", view->dir, info->filename);
    else
      g_snprintf(dest_dir, sizeof(dest_dir), "%s/", view->dir);
  }

  create_drag_op_menu(dest_dir, (gchar *)data->data);
  gtk_drag_finish(context, FALSE, FALSE, time);
}
Ejemplo n.º 2
0
static gboolean fs_fsFNameList_event( GtkWidget * widget,
                                      GdkEvent * event,
                                      gpointer user_data )
{
  GdkEventButton *bevent;
  gint row, col;

  (void) user_data;

  bevent = (GdkEventButton *) event;

  if ( event->type == GDK_BUTTON_RELEASE && bevent->button == 2 )
  {
    if ( gtk_clist_get_selection_info( GTK_CLIST( widget ), bevent->x, bevent->y, &row, &col ) )
    {
      gtk_clist_get_text( GTK_CLIST( widget ), row, 1, &fsSelectedFile );
      g_free( fsSelectedFileUtf8 );
      fsSelectedFileUtf8 = g_filename_from_utf8( fsSelectedFile, -1, NULL, NULL, NULL );
      if ( fsSelectedFileUtf8 ) fsSelectedFile = fsSelectedFileUtf8;
      gtk_button_released( GTK_BUTTON( fsOk ) );
      return TRUE;
    }
  }

  return FALSE;
}
static gboolean plEvent ( GtkWidget * widget,
                          GdkEvent * event,
                          gpointer user_data )
{
  GdkEventButton *bevent;
  gint row, col;

  bevent = (GdkEventButton *) event;

  if ( event->type == GDK_BUTTON_RELEASE && bevent->button == 2 )
  {
    if ( gtk_clist_get_selection_info( GTK_CLIST( widget ), bevent->x, bevent->y, &row, &col ) )
    {
      switch ( (int) user_data )
      {
        case 0:
          CLFileSelected[row] = 1;
          plButtonReleased( NULL, (void *) 3 );
          CLFileSelected[row] = 0;
          return TRUE;

        case 1:
          CLListSelected[row] = 1;
          plButtonReleased( NULL, (void *) 2 );
          return TRUE;
      }
    }
  }

  return FALSE;
}
Ejemplo n.º 4
0
gboolean
on_clist_nodes_button_press_event(GtkWidget *unused_widget,
		GdkEventButton *event, gpointer unused_udata)
{
    gint row;
    gint col;
    GtkCList *clist_nodes = GTK_CLIST
        (gui_main_window_lookup("clist_nodes"));

	(void) unused_widget;
	(void) unused_udata;

    if (event->button != 3)
		return FALSE;

	update_sensitivity(clist_nodes->selection != NULL);

    if (
		!gtk_clist_get_selection_info(clist_nodes,
			event->x, event->y, &row, &col)
	)
		return FALSE;

    gtk_menu_popup(GTK_MENU(gui_popup_nodes()), NULL, NULL, NULL, NULL,
        event->button, event->time);

	return TRUE;
}
Ejemplo n.º 5
0
/* Callback for button press in the directory tree area */
static int
dirtree_select_cb( GtkWidget *ctree_w, GdkEventButton *ev_button )
{
	GNode *dnode;
	int row;

	/* If About presentation is up, end it */
	about( ABOUT_END );

	if (globals.fsv_mode == FSV_SPLASH)
		return FALSE;

	gtk_clist_get_selection_info( GTK_CLIST(ctree_w), ev_button->x, ev_button->y, &row, NULL );
	if (row < 0)
		return FALSE;

	dnode = (GNode *)gtk_clist_get_row_data( GTK_CLIST(ctree_w), row );
	if (dnode == NULL)
		return FALSE;

	/* A single-click from button 1 highlights the node, shows the
	 * name, and updates the file list if necessary. (and also selects
	 * the row, but GTK+ does that automatically for us) */
	if ((ev_button->button == 1) && (ev_button->type == GDK_BUTTON_PRESS)) {
		geometry_highlight_node( dnode, FALSE );
		window_statusbar( SB_RIGHT, node_absname( dnode ) );
		if (dnode != dirtree_current_dnode)
			filelist_populate( dnode );
		dirtree_current_dnode = dnode;
		return FALSE;
	}

	/* A double-click from button 1 gets the camera moving */
	if ((ev_button->button == 1) && (ev_button->type == GDK_2BUTTON_PRESS)) {
		camera_look_at( dnode );
		/* Preempt the forthcoming tree expand/collapse
		 * (the standard action spawned by a double-click) */
		gtk_signal_emit_stop_by_name( GTK_OBJECT(ctree_w), "button_press_event" );
		return TRUE;
	}

	/* A click from button 3 selects the row, highlights the node,
	 * shows the name, updates the file list if necessary, and brings
	 * up a context-sensitive menu */
	if (ev_button->button == 3) {
		gtk_clist_select_row( GTK_CLIST(ctree_w), row, 0 );
		geometry_highlight_node( dnode, FALSE );
		window_statusbar( SB_RIGHT, node_absname( dnode ) );
		if (dnode != dirtree_current_dnode)
			filelist_populate( dnode );
		dirtree_current_dnode = dnode;
		context_menu( dnode, ev_button );
		return FALSE;
	}

	return FALSE;
}
Ejemplo n.º 6
0
static int pattern_clist_event_callback (GtkWidget *widget, GdkEvent *event) {
  GdkEventButton *bevent = (GdkEventButton *) event;
  int row, column;
  int add;

  if ((event->type == GDK_BUTTON_PRESS ||
       event->type == GDK_2BUTTON_PRESS ||
       event->type == GDK_3BUTTON_PRESS) &&
      bevent->window == GTK_CLIST (pattern_clist)->clist_window) {

    if (gtk_clist_get_selection_info (GTK_CLIST (pattern_clist), 
                                       bevent->x, bevent->y, &row, &column)) {
      if (event->type == GDK_BUTTON_PRESS) {

	if (column >= 0) {
	  switch (column) {

	  case 0:
	  case 1:
	  case 2:
	    sync_pattern_data ();
	    add = (bevent->button == 3) || 
	           (bevent->state & (GDK_CONTROL_MASK | GDK_SHIFT_MASK)) != 0;
	    pattern_set_groups (row, column, add);
	    return TRUE;

	  case 3:
	    /* sync_pattern_data () is called by "select_row" callback */

	    gtk_clist_select_row (GTK_CLIST (pattern_clist), row, 0);

	    show_pattern_error (row);
	    return TRUE;

	  default:
	    break;

	  }
	}

      }

      if (event->type == GDK_2BUTTON_PRESS || event->type == GDK_3BUTTON_PRESS)
	return TRUE;
    }
  }
  return FALSE;
}
Ejemplo n.º 7
0
/* Callback for a click in the file list area */
static int
filelist_select_cb( GtkWidget *clist_w, GdkEventButton *ev_button )
{
	GNode *node;
	int row;

	/* If About presentation is up, end it */
	about( ABOUT_END );

	if (globals.fsv_mode == FSV_SPLASH)
		return FALSE;

	gtk_clist_get_selection_info( GTK_CLIST(clist_w), ev_button->x, ev_button->y, &row, NULL );
	if (row < 0)
		return FALSE;

	node = (GNode *)gtk_clist_get_row_data( GTK_CLIST(clist_w), row );
	if (node == NULL)
		return FALSE;

	/* A single-click from button 1 highlights the node and shows the
	 * name (and also selects the row, but GTK+ does that for us) */
	if ((ev_button->button == 1) && (ev_button->type == GDK_BUTTON_PRESS)) {
		geometry_highlight_node( node, FALSE );
		window_statusbar( SB_RIGHT, node_absname( node ) );
		return FALSE;
	}

	/* A double-click from button 1 gets the camera moving */
	if ((ev_button->button == 1) && (ev_button->type == GDK_2BUTTON_PRESS)) {
		camera_look_at( node );
		return FALSE;
	}

	/* A click from button 3 selects the row, highlights the node,
	 * shows the name, and pops up a context-sensitive menu */
	if (ev_button->button == 3) {
		gtk_clist_select_row( GTK_CLIST(clist_w), row, 0 );
		geometry_highlight_node( node, FALSE );
		window_statusbar( SB_RIGHT, node_absname( node ) );
		context_menu( node, ev_button );
		return FALSE;
	}

	return FALSE;
}
Ejemplo n.º 8
0
static void
mouse_click_cb(GtkWidget *widget, GdkEventButton *event, FileView *view)
{
  if (event->button == 1)
  { /* Left Button: selection */
    if (curr_view != view)
    {
      switch_views();
      gtk_widget_grab_focus(view->clist);
    }
  }
  else if (event->button == 2)
  { /* Middle Button: Drag and Drop */
    GtkTargetList *list;
    GdkDragContext *context;

    list = gtk_target_list_new(target_table, n_targets);
    context = gtk_drag_begin(curr_view->clist, list, GDK_ACTION_COPY |
      GDK_ACTION_MOVE | GDK_ACTION_LINK | GDK_ACTION_ASK,
      event->button, (GdkEvent *)event);
    gtk_drag_set_icon_default(context);
  }
  else if (event->button == 3)
  { /* Right Button: Menu */
    if (cfg.windows_right_click && (view->tagged == NULL))
    { /* if windows right click is enabled, we want to select the file */
      gint xmouse,ymouse,row,column;
      GdkModifierType mask;

      gdk_window_get_pointer(GTK_CLIST(view->clist)->clist_window,
                             &xmouse, &ymouse, &mask);
      gtk_clist_get_selection_info(GTK_CLIST(view->clist), xmouse, ymouse,
                                   &row, &column);
      /* don't screw up the current selection */
      if (!clist_row_is_selected(view->clist, row))
        gtk_clist_unselect_all(GTK_CLIST(view->clist));
      focus_row(view, row, FALSE, FALSE, TRUE);
    }

    if (event->state & GDK_CONTROL_MASK)
      show_user_command_menu(event->button, event->time);
    else
      show_menu(event->button, event->time);
  }
}
Ejemplo n.º 9
0
void on_main_popup_delete_activate(GtkMenuItem * menuitem, gpointer user_data)
{
    gint row, col;
    popup_info_t *info;

    fprintf( stderr, "on_main_popup_delete_activate\n" );

    if (info = (popup_info_t *) user_data)
    {
        gtk_clist_get_selection_info(GTK_CLIST(main_clist),
                                     info->x, info->y, &row, &col);

        //printf("bloa! (x %d y %d is row %d col %d)\n");
    }
    else
        printf("%s",
               _("Oops.  NULL info in on_main_popup_delete_activate\n"));

}
Ejemplo n.º 10
0
static gint mimeview_button_pressed(GtkWidget *widget, GdkEventButton *event,
				    MimeView *mimeview)
{
	GtkCList *clist = GTK_CLIST(widget);
	gint row, column;

	if (!event) return FALSE;

	if (event->button == 2 || event->button == 3) {
		if (!gtk_clist_get_selection_info(clist, event->x, event->y,
						  &row, &column))
			return FALSE;
		gtk_clist_unselect_all(clist);
		gtk_clist_select_row(clist, row, column);
		gtkut_clist_set_focus_row(clist, row);
	}
	part_button_pressed(mimeview, event, mimeview_get_selected_part(mimeview));

	return TRUE;
}
Ejemplo n.º 11
0
/* This handles the highlighting of the rows */
static gboolean
clist_drag_motion(GtkWidget         *widget,
                  GdkDragContext    *context,
                  gint              x,
                  gint              y,
                  guint             time,
                  FileView          *view)
{
  gint row, col;

  gtk_clist_set_background(GTK_CLIST(view->clist), view->last_row,
                           &CLIST_COLOR);

  if (gtk_clist_get_selection_info(GTK_CLIST(view->clist), x, y, &row, &col))
  {
    gtk_clist_set_background(GTK_CLIST(view->clist), row, &DRAG_HILIGHT);
    view->last_row = row;
  }
    
  return TRUE;  
}
Ejemplo n.º 12
0
static gint
gradient_select_button_press (GtkWidget      *widget,
			      GdkEventButton *bevent,
			      gpointer        data)
{
  GradientSelect *gsp;

  gsp = (GradientSelect *) data;

  if (bevent->button == 1 && bevent->type == GDK_2BUTTON_PRESS)
    {
      gradient_select_edit_callback (widget, data);

      return TRUE;
    }

  if (bevent->button == 2)
    {
      GSList *list = NULL;
      gint row;
      gint column;

      gtk_clist_get_selection_info (GTK_CLIST (gsp->clist),
				    bevent->x, bevent->y,
				    &row, &column);

      if (gradients_list)
	list = g_slist_nth (gradients_list, row);

      if (list)
	gsp->dnd_gradient = (gradient_t *) list->data;
      else
	gsp->dnd_gradient = NULL;

      return TRUE;
    }

  return FALSE;
}
Ejemplo n.º 13
0
/**
 * Callback function to toggle selected LDIF field.
 * \param clist List to update.
 * \param event Event object.
 * \param data  Data.
 */
static void imp_ldif_field_list_toggle(
		GtkCList *clist, GdkEventButton *event, gpointer data )
{
	Ldif_FieldRec *rec;
	gboolean toggle = FALSE;

	if( ! event ) return;
	if( impldif_dlg.rowIndSelect < 0 ) return;
	if( event->button == 1 ) {
		/* If single click in select column */
		if( event->type == GDK_BUTTON_PRESS ) {
			gint x = event->x;
			gint y = event->y;
			gint row, col;

			gtk_clist_get_selection_info( clist, x, y, &row, &col );
			if( col != FIELD_COL_SELECT ) return;
			if( row > impldif_dlg.rowCount ) return;

			/* Set row */
			impldif_dlg.rowIndSelect = row;
			toggle = TRUE;
		}

		/* If double click anywhere in row */
		else if( event->type == GDK_2BUTTON_PRESS ) {
			toggle = TRUE;
		}
	}
	/* Toggle field selection */
	if( toggle ) {
		rec = gtk_clist_get_row_data(
			clist, impldif_dlg.rowIndSelect );
		if( rec ) {
			ldif_field_toggle( rec );
			imp_ldif_update_row( clist );
		}
	}
}
Ejemplo n.º 14
0
void gcb_event_clist_popup(GtkWidget *w, GdkEventButton *s, struct gchan *o)
{
    GtkWidget *tmpwid;
    GtkWidget *menupop=gtk_menu_new();
    gint row=-1, col;

    if(s->button == 3) {
        tmpwid=gtk_menu_item_new_with_label("Add File...");
        gtk_signal_connect(GTK_OBJECT(tmpwid), "activate",
                           (GtkSignalFunc) spawnfilew, o);
        gtk_menu_append(GTK_MENU(menupop), tmpwid);

        tmpwid=gtk_menu_item_new_with_label("Add Url...");
        gtk_signal_connect(GTK_OBJECT(tmpwid), "activate",
                           (GtkSignalFunc) httpwin, o);
        gtk_menu_append(GTK_MENU(menupop), tmpwid);

        tmpwid=gtk_menu_item_new_with_label("Delete");

        gtk_clist_get_selection_info(GTK_CLIST(w), (int) s->x, (int) s->y,
                                     &row, &col);
        o->rem=row;
        gtk_signal_connect(GTK_OBJECT(tmpwid), "activate",
                           (GtkSignalFunc) gcb_rem_from_playlist, o);
        gtk_menu_append(GTK_MENU(menupop), tmpwid);
        tmpwid=gtk_menu_item_new_with_label("Cancel");
        gtk_signal_connect(GTK_OBJECT(tmpwid), "activate",
                           (GtkSignalFunc) gtk_widget_destroy, NULL);
        gtk_menu_append(GTK_MENU(menupop), tmpwid);

        gtk_signal_connect(GTK_OBJECT(menupop), "selection-done",
                           (GtkSignalFunc) gtk_widget_destroy, menupop);
        gtk_menu_popup(GTK_MENU(menupop), NULL, NULL, NULL, NULL,
                       s->button, s->time);

        gtk_widget_show_all(menupop);

    }
}
Ejemplo n.º 15
0
static void
url_clicklist (GtkWidget * widget, GdkEventButton * event)
{
	int row, col;
	char *text;

	if (event->button == 3)
	{
		if (gtk_clist_get_selection_info
			 (GTK_CLIST (widget), event->x, event->y, &row, &col) < 0)
			return;
		gtk_clist_unselect_all (GTK_CLIST (widget));
		gtk_clist_select_row (GTK_CLIST (widget), row, 0);
		if (gtk_clist_get_text (GTK_CLIST (widget), row, 0, &text))
		{
			if (text && text[0])
			{
				menu_urlmenu (event, text);
			}
		}
	}
}