i would like to make a sidebar widget from the Paned gtk objects



hello,
i'm new here, hope i'm doing this right. I want to
create a sidebar widget similar to that in mozilla.
this can be accomplished with the VPaned and HPaned
gtk+ widgets. the code i have that accomplishes this
for a left sidebar is a callback connected to the
HPaned object with ...

g_signal_connect (G_OBJECT (left_sidebar),
"button-press-event",
		    G_CALLBACK (toggle_left_sidebar), NULL );

... and implemented in the code below ...

/** @brief Gtk callback that toggles the left sidebar
to hide or show it
 * @param widget GtkWidget * - the left_sidebar widget
to manipulate
 * @param event GdkEventButton * - used to process the
right (mouse 3) button
 *        click
 * @param data gpointer - not used in this function,
required for callback
 *        function format
 * @return gboolean - returns TRUE to stop propogation
if the right mouse
 *          button is pressed. Returns FALSE otherwise
so that other handlers
 *          can recieve this event
 * @todo has static variable unhid_pos
 */
static gboolean
toggle_left_sidebar (GtkWidget *widget,
		     GdkEventButton *event,
		     gpointer data )
{
  static gint unhid_pos;

  if (event->button == RIGHT_MOUSE_BUTTON) {
    if (get_left_sidebar_hidden()) {
      gtk_paned_set_position (GTK_PANED (widget),
unhid_pos);
      set_left_sidebar_hidden(FALSE);
    } else {
      unhid_pos = gtk_paned_get_position (GTK_PANED
(widget));
      gtk_paned_set_position (GTK_PANED (widget), 0);
      set_left_sidebar_hidden (TRUE);
    }
    return TRUE;
  }
  return FALSE;
}

... i also have code for a right side bar implemented
as follows it is different from the above ...

/** @brief callback to toggle hiding or showing the
right sidebar
 *         on a right (mouse3) click
 * @param widget the sidebar widget
 * @param event the mouse press event
 * @param data not used, here for compliant gtk
callback function
 * @todo has static variable unhid_pos
 */
static gboolean
toggle_right_sidebar (GtkWidget *widget,
		      GdkEventButton *event,
		      gpointer data )
{
  static gint unhid_pos;

  if (event->button == RIGHT_MOUSE_BUTTON) {
    if (get_right_sidebar_hidden()) {
      gtk_paned_set_position (GTK_PANED (widget),
(((widget->allocation.width) - unhid_pos) * -1));
      set_right_sidebar_hidden(FALSE);
    } else {
      unhid_pos = (widget->allocation.width) -
(gtk_paned_get_position (GTK_PANED (widget)) * -1);
      gtk_paned_set_position (GTK_PANED (widget),
widget->allocation.width);
      set_right_sidebar_hidden (TRUE);
    }
    return TRUE;
  }
  return FALSE;
}

... i would like to implement this directly into the
Paned ojbects as opposed to new widgets, i would like
input on it. and if anyone is already developing
something like this let me know so i'm not duplicating
work.

Thanks,
Charles W. Lambert
email: cwlambert76 yahoo com

__________________________________________________
Do you Yahoo!?
Yahoo! Shopping - Send Flowers for Valentine's Day
http://shopping.yahoo.com



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]