Пример #1
0
void gtk_clist_update_selection(GtkWidget *widget)
{
  GtkCList *clist = GTK_CLIST(widget);
  GList *oldsel, *selpt;
  gint i;

  oldsel = clist->selection;
  clist->selection = NULL;
  if (widget->hWnd) {
    for (i = 0; i < clist->rows; i++) {
      if (SendMessage(widget->hWnd, LB_GETSEL, (WPARAM)i, 0) > 0) {
        clist->selection = g_list_append(clist->selection, GINT_TO_POINTER(i));
      }
    }

    for (selpt = oldsel; selpt; selpt = g_list_next(selpt)) {
      gint row = GPOINTER_TO_INT(selpt->data);

      if (!g_list_find(clist->selection, GINT_TO_POINTER(row))) {
        gtk_signal_emit(GTK_OBJECT(widget), "unselect_row", row, 0, NULL);
      }
    }

    for (selpt = clist->selection; selpt; selpt = g_list_next(selpt)) {
      gint row = GPOINTER_TO_INT(selpt->data);

      if (!g_list_find(oldsel, GINT_TO_POINTER(row))) {
        gtk_signal_emit(GTK_OBJECT(widget), "select_row", row, 0, NULL);
      }
    }
  }
  g_list_free(oldsel);
}
Пример #2
0
void ColorSelector::_released()
{
    _held = false;
#ifdef DUMP_CHANGE_INFO
    g_message("%s:%d: About to signal %s in %s", __FILE__, __LINE__,
               "RELEASED",
               FOO_NAME(_csel));
#endif
    gtk_signal_emit(GTK_OBJECT(_csel), csel_signals[RELEASED]);
    gtk_signal_emit(GTK_OBJECT(_csel), csel_signals[CHANGED]);
}
Пример #3
0
/* Zpracování událostí - tato funkce pøidává popis události do seznamu
 * zachycených událostí, ale vrací FALSE, proto¾e chceme, aby se události dál
 * normálnì zpracovávaly. */
static gint gtk_ev_event(GtkWidget *widget, GdkEvent *event)
{
    GtkEv *ev;

    g_return_val_if_fail(widget, FALSE);
    g_return_val_if_fail(GTK_IS_EV(widget), FALSE);
    g_return_val_if_fail(event, FALSE);

    ev = GTK_EV(widget);

    if(event->any.window == widget->window) {
        if(GTK_WIDGET_CLASS(parent_class)->event)
            return GTK_WIDGET_CLASS(parent_class)->event(widget, event);
    } else {
        /* Událost je buï urèena pro ev->ev_win, nebo je to klávesnicová
         * událost poslaná z toplevel GtkWindow */
        gchar *text;

        text = event_to_text(event);
        gtk_ev_push_text(ev, text);
        g_free(text);

        /* Zajistit pøeètení dal¹í motion event */
        if(event->type == GDK_MOTION_NOTIFY)
            gdk_window_get_pointer(ev->ev_win, NULL, NULL, NULL);
    }
    
    gtk_signal_emit(GTK_OBJECT(widget), ev_signals[EVENT_RECEIVED],
                    event->type);

    return FALSE;
}
Пример #4
0
GEVASEV_HANDLER_RET
gevasev_clicks_mouse_up(GtkObject * object, GtkObject * gevasobj, int _b,
						int _x, int _y)
{
	GdkEvent *gev;
	gboolean return_val = FALSE;
	GtkgEvasEvHClicks *ev;
	g_return_val_if_fail(object != NULL, GEVASEV_HANDLER_RET_NEXT);
	g_return_val_if_fail(GTK_IS_GEVASEVH_CLICKS_SIGNAL(object),
						 GEVASEV_HANDLER_RET_NEXT);
	ev = GTK_GEVASEVH_CLICKS_SIGNAL(object);

	gev = gevas_get_current_event(gevasobj_get_gevas(gevasobj));
	if (gev && gev->type == GDK_BUTTON_RELEASE) {
		if (gevasobj == ev->last_obj && (_b == ev->last_button)
			&& (gev->button.time - ev->last_time < ev->dclick_millis)
			) {
			gtk_signal_emit(GTK_OBJECT(object),
							_gevasevh_clicks_signals[SIG_DCLICK],
							(gpointer) gevasobj,
							(gint) _b, (gint) _x, (gint) _y, &return_val);
		}
		ev->last_time = gev->button.time;
		ev->last_obj = gevasobj;
		ev->last_button = _b;
	}

	return GEVASEV_HANDLER_RET_NEXT;
}
Пример #5
0
/* Clear the given window, when asked to. */
void gnome_clear_nhwindow(winid wid)
{
    if (gnome_windowlist[wid].win != NULL) {
        gtk_signal_emit (GTK_OBJECT (gnome_windowlist[wid].win),
                         ghack_signals[GHSIG_CLEAR]);
    }
}
Пример #6
0
static void
playlist_songpos_changed (GtkAdjustment *adj,
			  Playlist *p)
{
    int newpos;

    g_assert(IS_PLAYLIST(p));

    /* In gtk+-1.2.10, the GtkAdjustment loses this setting when the
       upper value is changed by the program. */
    adj->page_increment = 5.0;
    newpos = rint(adj->value);

    if(newpos == p->current_position)
	return;

    p->current_position = newpos;

    gtk_spin_button_set_value(GTK_SPIN_BUTTON(p->spin_songpat), p->patterns[newpos]);

    if (!p->frozen)
	playlist_draw_contents (p);

    if(!p->signals_disabled)
	gtk_signal_emit(GTK_OBJECT(p),
			playlist_signals[SIG_CURRENT_POSITION_CHANGED],
			newpos);
}
static void
on_transfer_item_finish (C2TransferItem *ti, C2TransferList *tl)
{
	GtkWidget *progress;
	GSList *list;

	if (GTK_TOGGLE_BUTTON (tl->close)->active && g_slist_length (tl->list) == 1)
		gtk_timeout_add (2500, (GtkFunction) on_last_finish_timeout, tl);
	else
		tl->list = g_slist_remove (tl->list, ti);
	
	progress = ti->progress_byte;
	
	gtk_widget_hide (progress);

	progress = ti->progress_mail;
	
	gtk_progress_set_percentage (GTK_PROGRESS (progress), 1.0);
	gtk_widget_set_sensitive (ti->cancel_button, FALSE);

	if (!g_slist_length (tl->list))
	{
		gtk_signal_emit (GTK_OBJECT (tl), signals[FINISH]);
		tl->finished = 1;
	}
}
Пример #8
0
/* Next output to window will start at (x,y), also moves
 displayable cursor to (x,y).  For backward compatibility,
 1 <= x < cols, 0 <= y < rows, where cols and rows are
 the size of window.
*/
void gnome_curs(winid wid, int x, int y)
{
    if (wid != -1 && gnome_windowlist[wid].win != NULL) {
        gtk_signal_emit( GTK_OBJECT (gnome_windowlist[wid].win),
                         ghack_signals[GHSIG_CURS], x, y);
    }
}
Пример #9
0
static void combo_changed(GtkComboBox *combo)
{
     if (!updating_flag)
	  gtk_signal_emit(GTK_OBJECT(combo),combo_signals[CHANGED_SIGNAL]);
     if (GTK_COMBO_BOX_CLASS(parent_class)->changed)
	  GTK_COMBO_BOX_CLASS(parent_class)->changed(combo);
}
Пример #10
0
// Called from subclasses to update color and broadcast if needed
void ColorSelector::_updateInternals( const SPColor& color, gfloat alpha, gboolean held )
{
    g_return_if_fail( ( 0.0 <= alpha ) && ( alpha <= 1.0 ) );
    gboolean colorDifferent = ( !color.isClose( _color, _epsilon )
                                || ( fabs((_alpha) - (alpha)) >= _epsilon ) );

    gboolean grabbed = held && !_held;
    gboolean released = !held && _held;

    // Store these before emmiting any signals
    _held = held;
    if ( colorDifferent )
    {
        _color = color;
        _alpha = alpha;
    }

    if ( grabbed )
    {
#ifdef DUMP_CHANGE_INFO
        g_message("%s:%d: About to signal %s to color %08x::%s in %s", __FILE__, __LINE__,
                   "GRABBED",
                   color.toRGBA32( alpha ), (color.icc?color.icc->colorProfile.c_str():"<null>"), FOO_NAME(_csel));
#endif
        gtk_signal_emit(GTK_OBJECT(_csel), csel_signals[GRABBED]);
    }
    else if ( released )
    {
#ifdef DUMP_CHANGE_INFO
        g_message("%s:%d: About to signal %s to color %08x::%s in %s", __FILE__, __LINE__,
                   "RELEASED",
                   color.toRGBA32( alpha ), (color.icc?color.icc->colorProfile.c_str():"<null>"), FOO_NAME(_csel));
#endif
        gtk_signal_emit(GTK_OBJECT(_csel), csel_signals[RELEASED]);
    }

    if ( colorDifferent || released )
    {
#ifdef DUMP_CHANGE_INFO
        g_message("%s:%d: About to signal %s to color %08x::%s in %s", __FILE__, __LINE__,
                   (_held ? "CHANGED" : "DRAGGED" ),
                   color.toRGBA32( alpha ), (color.icc?color.icc->colorProfile.c_str():"<null>"), FOO_NAME(_csel));
#endif
        gtk_signal_emit(GTK_OBJECT(_csel), csel_signals[_held ? CHANGED : DRAGGED]);
    }
}
Пример #11
0
/*
delay_output()  -- Causes a visible delay of 50ms in the output.
	       Conceptually, this is similar to wait_synch() followed
	       by a nap(50ms), but allows asynchronous operation.
*/
void gnome_delay_output()
{
    if (gnome_windowlist[WIN_MESSAGE].win != NULL) {
	gtk_signal_emit( GTK_OBJECT (gnome_windowlist[WIN_MESSAGE].win),
	ghack_signals[GHSIG_DELAY],
	(guint) 50);
    }
}
Пример #12
0
/*
end_menu(window, prompt)
                -- Stop adding entries to the menu and flushes the window
                   to the screen (brings to front?).  Prompt is a prompt
                   to give the user.  If prompt is NULL, no prompt will
                   be printed.
                ** This probably shouldn't flush the window any more (if
                ** it ever did).  That should be select_menu's job.  -dean
*/
void gnome_end_menu(winid wid, const char *prompt)
{
    if (wid != -1 && gnome_windowlist[wid].win != NULL) {
        gtk_signal_emit( GTK_OBJECT (gnome_windowlist[wid].win),
                         ghack_signals[GHSIG_END_MENU],
                         prompt);
    }
}
Пример #13
0
void
bst_canvas_source_update_links (BstCanvasSource *csource)
{
  g_return_if_fail (BST_IS_CANVAS_SOURCE (csource));

  if (csource->source)
    gtk_signal_emit (GTK_OBJECT (csource), csource_signals[SIGNAL_UPDATE_LINKS]);
}
Пример #14
0
void gnome_cliparound_proper(winid wid, int x, int y)
{
    if (wid != -1 && gnome_windowlist[wid].win != NULL) {
        gtk_signal_emit( GTK_OBJECT (gnome_windowlist[wid].win),
                         ghack_signals[GHSIG_CLIPAROUND],
                         (guint) x,
                         (guint) y);
    }
}
Пример #15
0
static void
sample_display_set_data (SampleDisplay *s,
			 void *data,
			 int type,
			 int len,
			 gboolean copy)
{
    g_return_if_fail(s != NULL);
    g_return_if_fail(IS_SAMPLE_DISPLAY(s));

    gboolean len_changed = ( s->datalen != len );
    if(!data || !len) {
	s->datalen = 0;
    } else {
	if(copy) {
	    if(s->datacopy) {
		if(s->datacopylen < len * type / 8) {
		    g_free(s->data);
		    s->data = g_new(gint8, len * type / 8);
		    s->datacopylen = len * type / 8;
		}
	    } else {
		s->data = g_new(gint8, len * type / 8);
		s->datacopylen = len * type / 8;
	    }
	    g_assert(s->data != NULL);
	    memcpy(s->data, data, len * type / 8);
	    s->datalen = len;
	} else {
	    if(s->datacopy) {
		g_free(s->data);
	    }
	    s->data = data;
	    s->datalen = len;
	}
	s->datacopy = copy;
	s->datatype = type;
    }

    s->old_mixerpos = -1;
    s->mixerpos = -1;
	
    if( len_changed ) {
	s->win_start = 0;
	s->win_length = len;
	gtk_signal_emit(GTK_OBJECT(s), sample_display_signals[SIG_WINDOW_CHANGED], s->win_start, s->win_start + s->win_length);

	s->sel_start = -1;
	s->old_ss = s->old_se = -1;
	s->selecting = 0;

	s->loop_start = -1;
    }

    gtk_widget_queue_draw(GTK_WIDGET(s));    
}
Пример #16
0
void ColorSelector::_grabbed()
{
    _held = TRUE;
#ifdef DUMP_CHANGE_INFO
    g_message("%s:%d: About to signal %s in %s", __FILE__, __LINE__,
               "GRABBED",
               FOO_NAME(_csel));
#endif
    gtk_signal_emit(GTK_OBJECT(_csel), csel_signals[GRABBED]);
}
Пример #17
0
/* Start using window as a menu.  You must call start_menu()
   before add_menu().  After calling start_menu() you may not
   putstr() to the window.  Only windows of type NHW_MENU may
   be used for menus.
*/
void gnome_start_menu(winid wid)
{
    if (wid != -1) {
        if (gnome_windowlist[wid].win == NULL && gnome_windowlist[wid].type != 0) {
            gnome_create_nhwindow_by_id(gnome_windowlist[wid].type, wid);
        }
        gtk_signal_emit( GTK_OBJECT (gnome_windowlist[wid].win),
                         ghack_signals[GHSIG_START_MENU]);
    }
}
Пример #18
0
/* -- Display the window on the screen.  If there is data
                   pending for output in that window, it should be sent.
                   If blocking is TRUE, display_nhwindow() will not
                   return until the data has been displayed on the screen,
                   and acknowledged by the user where appropriate.
                -- All calls are blocking in the tty window-port.
                -- Calling display_nhwindow(WIN_MESSAGE,???) will do a
                   --more--, if necessary, in the tty window-port.
*/
void gnome_display_nhwindow(winid wid, BOOLEAN_P block)
{
    if (gnome_windowlist[wid].win != NULL) {
        gtk_signal_emit( GTK_OBJECT (gnome_windowlist[wid].win),
                         ghack_signals[GHSIG_DISPLAY],
                         block);
        if (block && (gnome_windowlist[wid].type == NHW_MAP))
            (void) gnome_nhgetch();
    }
}
Пример #19
0
void
gtk_file_browser_path_changed (GtkFileBrowser *file_browser)
{
	g_return_if_fail (file_browser != NULL);
	g_return_if_fail (GTK_IS_FILE_BROWSER (file_browser));

	rescan (file_browser);

	gtk_signal_emit (GTK_OBJECT (file_browser),
		file_browser_signals[SIG_PATH_CHANGED], file_browser->path, NULL);
}
Пример #20
0
/*
putstr(window, attr, str)
                -- Print str on the window with the given attribute.  Only
                   printable ASCII characters (040-0126) must be supported.
                   Multiple putstr()s are output on separate lines.
Attributes
                   can be one of
                        ATR_NONE (or 0)
                        ATR_ULINE
                        ATR_BOLD
                        ATR_BLINK
                        ATR_INVERSE
                   If a window-port does not support all of these, it may map
                   unsupported attributes to a supported one (e.g. map them
                   all to ATR_INVERSE).  putstr() may compress spaces out of
                   str, break str, or truncate str, if necessary for the
                   display.  Where putstr() breaks a line, it has to clear
                   to end-of-line.
                -- putstr should be implemented such that if two putstr()s
                   are done consecutively the user will see the first and
                   then the second.  In the tty port, pline() achieves this
                   by calling more() or displaying both on the same line.
*/
void gnome_putstr(winid wid, int attr, const char *text)
{
    if ((wid >= 0) &&
            (wid < MAXWINDOWS) &&
            (gnome_windowlist[wid].win != NULL)) {
        gtk_signal_emit( GTK_OBJECT (gnome_windowlist[wid].win),
                         ghack_signals[GHSIG_PUTSTR],
                         (guint) attr,
                         text);
    }
}
Пример #21
0
void gtk_breakpoints_remove (GtkBreakpoints *breakpoints, GtkBreakpoint *bkpt)
{
	bkpt->enabled = 0;

	breakpoints->list = g_list_remove (breakpoints->list,bkpt);

	gtk_signal_emit (GTK_OBJECT (breakpoints), breakpoints_signals[SIG_REMOVE],
		bkpt);
	
	g_free (bkpt);
}
Пример #22
0
static gint
sp_canvas_arena_send_event (SPCanvasArena *arena, GdkEvent *event)
{
	gint ret;

	ret = FALSE;

	/* Send event to arena */
	gtk_signal_emit (GTK_OBJECT (arena), signals[ARENA_EVENT], arena->active, event, &ret);

	return ret;
}
Пример #23
0
void
gtk_hex_entry_value_changed (GtkHexEntry *hex_entry)
{
	g_return_if_fail (hex_entry != NULL);
	g_return_if_fail (GTK_IS_HEX_ENTRY (hex_entry));

	if (hex_entry->modified == FALSE)
	{
		make_copy (hex_entry,TRUE);
	}

	gtk_signal_emit (GTK_OBJECT (hex_entry), hex_entry_signals[SIG_VALUE_CHANGED]);
}
Пример #24
0
void gv_manager_set_busy( GvManager *manager, int busy_flag )

{
    if( !manager->busy_flag == !busy_flag )
        return;

    if( !manager->busy_flag )
        gtk_idle_add( gv_manager_idle_handler, NULL );

    manager->busy_flag = busy_flag;

    gtk_signal_emit(GTK_OBJECT(manager), 
                    manager_signals[BUSY_CHANGED]);
}
Пример #25
0
void combo_set_items(Combo *combo, GList *item_strings, int default_index)
{
     updating_flag = TRUE;
     gtk_combo_set_popdown_strings(GTK_COMBO(combo),item_strings);
     if (default_index < g_list_length(item_strings) && default_index >= 0) {
	  gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(combo)->entry),
			     (gchar *)g_list_nth_data(item_strings,
						      default_index));
	  combo->chosen_index = default_index;
     } else
	  combo->chosen_index = 0;
     updating_flag = FALSE;
     gtk_signal_emit(GTK_OBJECT(combo),combo_signals[CHANGED_SIGNAL]);
}
Пример #26
0
static void list_select_child(GtkList *list, GtkWidget *child, 
			      gpointer user_data)
{
     Combo *combo = COMBO(user_data);          
     int idx;
     if (updating_flag) return;
     idx = gtk_list_child_position(list,child);
     if (GTK_WIDGET_VISIBLE(GTK_COMBO(combo)->popwin)) {
	  combo->next_chosen_index = idx;
	  return;
     }
     combo->chosen_index = idx;
     gtk_signal_emit(GTK_OBJECT(combo),combo_signals[CHANGED_SIGNAL]);
}
Пример #27
0
/** c2_imap_reconnect
 * 
 * @imap: A locked imap object
 *
 * This function attempts to reconnect and restore 
 * proper state of an imap object.
 * 
 * Return Value:
 * 0 on success, -1 otherwise
 **/
static gint
c2_imap_reconnect(C2IMAP *imap)
{
	C2NetObjectByte *byte;
	
	c2_net_object_disconnect(C2_NET_OBJECT(imap));
	c2_net_object_destroy_byte(C2_NET_OBJECT(imap));
	gdk_input_remove(imap->input_tag);
	imap->input_tag = -1;
	
	if(!(byte = c2_net_object_run(C2_NET_OBJECT(imap))))
	{
		imap->state = C2IMAPDisconnected;
		gtk_signal_emit(GTK_OBJECT(imap), signals[NET_ERROR]);
		c2_imap_set_error(imap, _("Error connecting to IMAP server."));
		return -1;
	}

        imap->input_tag = gdk_input_add(byte->sock, GDK_INPUT_READ,
                                (GdkInputFunction)c2_imap_on_net_traffic, imap);


	imap->input_tag = gdk_input_add(byte->sock, GDK_INPUT_READ, 
			(GdkInputFunction)c2_imap_on_net_traffic, imap);

	imap->login(imap);
	
	if(imap->state == C2IMAPSelected)
		if(c2_imap_select_mailbox(imap, imap->selected_mailbox) < 0)
		{
			c2_net_object_disconnect(C2_NET_OBJECT(imap));
			gtk_signal_emit(GTK_OBJECT(imap), signals[LOGOUT]);
			return -1;
		}

	return 0;
}
Пример #28
0
void gv_manager_set_preference(GvManager *manager, 
                               const char *name, const char *value )

{
    /* don't do anything if it is already set */

    if( gv_properties_get( &(manager->preferences), name ) != NULL 
        && strcmp(gv_properties_get(&(manager->preferences),name),value) == 0 )
        return;

    gv_properties_set( &(manager->preferences), name, value );

    gtk_signal_emit(GTK_OBJECT(manager), 
                    manager_signals[PREFERENCES_CHANGED]);
}
Пример #29
0
/*
print_glyph(window, x, y, glyph)
                -- Print the glyph at (x,y) on the given window.  Glyphs are
                   integers at the interface, mapped to whatever the window-
                   port wants (symbol, font, color, attributes, ...there's
                   a 1-1 map between glyphs and distinct things on the map).
*/
void gnome_print_glyph(winid wid,XCHAR_P x,XCHAR_P y,int glyph)
{
    if (wid != -1 && gnome_windowlist[wid].win != NULL) {
        GdkImlibImage *im;

        im = ghack_image_from_glyph( glyph, FALSE);

        gtk_signal_emit (GTK_OBJECT (gnome_windowlist[wid].win),
                         ghack_signals[GHSIG_PRINT_GLYPH],
                         (guint) x,
                         (guint) y,
                         im,
                         NULL);
    }
}
static void
destroy (GtkObject *object)
{
	C2TransferList *tl = C2_TRANSFER_LIST (object);
	GSList *l;

	for (l = tl->list; l; l = g_slist_next (l))
	{
		if (C2_IS_TRANSFER_ITEM (l->data))
			gtk_object_destroy (GTK_OBJECT (l->data));
	}
	
	g_slist_free (tl->list);

	gtk_signal_emit (GTK_OBJECT (tl), signals[FINISH]);
}