static void real_slot_set_short_status (NemoWindowSlot *slot, const gchar *status) { gboolean show_statusbar; gboolean disable_chrome; nemo_floating_bar_cleanup_actions (NEMO_FLOATING_BAR (slot->floating_bar)); nemo_floating_bar_set_show_spinner (NEMO_FLOATING_BAR (slot->floating_bar), FALSE); show_statusbar = g_settings_get_boolean (nemo_window_state, NEMO_WINDOW_STATE_START_WITH_STATUS_BAR); g_object_get (nemo_window_slot_get_window (slot), "disable-chrome", &disable_chrome, NULL); if (status == NULL || show_statusbar || disable_chrome) { gtk_widget_hide (slot->floating_bar); return; } nemo_floating_bar_set_label (NEMO_FLOATING_BAR (slot->floating_bar), status); gtk_widget_show (slot->floating_bar); }
void nemo_window_slot_set_content_view_widget (NemoWindowSlot *slot, NemoView *new_view) { NemoWindow *window; GtkWidget *widget; window = nemo_window_slot_get_window (slot); if (slot->content_view != NULL) { /* disconnect old view */ nemo_window_disconnect_content_view (window, slot->content_view); widget = GTK_WIDGET (slot->content_view); gtk_widget_destroy (widget); g_object_unref (slot->content_view); slot->content_view = NULL; } if (new_view != NULL) { widget = GTK_WIDGET (new_view); gtk_container_add (GTK_CONTAINER (slot->view_overlay), widget); gtk_widget_show (widget); slot->content_view = new_view; g_object_ref (slot->content_view); /* connect new view */ nemo_window_connect_content_view (window, new_view); } }
/* nemo_window_slot_update_title: * * Re-calculate the slot title. * Called when the location or view has changed. * @slot: The NemoWindowSlot in question. * */ void nemo_window_slot_update_title (NemoWindowSlot *slot) { NemoWindow *window; char *title; gboolean do_sync = FALSE; title = nemo_compute_title_for_location (slot->location); window = nemo_window_slot_get_window (slot); if (g_strcmp0 (title, slot->title) != 0) { do_sync = TRUE; g_free (slot->title); slot->title = title; title = NULL; } if (strlen (slot->title) > 0 && slot->current_location_bookmark != NULL) { do_sync = TRUE; } if (do_sync) { nemo_window_sync_title (window, slot); } if (title != NULL) { g_free (title); } }
/* nemo_window_slot_update_icon: * * Re-calculate the slot icon * Called when the location or view or icon set has changed. * @slot: The NemoWindowSlot in question. */ void nemo_window_slot_update_icon (NemoWindowSlot *slot) { NemoWindow *window; NemoIconInfo *info; const char *icon_name; GdkPixbuf *pixbuf; window = nemo_window_slot_get_window (slot); info = NEMO_WINDOW_CLASS (G_OBJECT_GET_CLASS (window))->get_icon (window, slot); icon_name = NULL; if (info) { icon_name = nemo_icon_info_get_used_name (info); if (icon_name != NULL) { /* Gtk+ doesn't short circuit this (yet), so avoid lots of work * if we're setting to the same icon. This happens a lot e.g. when * the trash directory changes due to the file count changing. */ if (g_strcmp0 (icon_name, gtk_window_get_icon_name (GTK_WINDOW (window))) != 0) { gtk_window_set_icon_name (GTK_WINDOW (window), icon_name); } } else { pixbuf = nemo_icon_info_get_pixbuf_nodefault (info); if (pixbuf) { gtk_window_set_icon (GTK_WINDOW (window), pixbuf); g_object_unref (pixbuf); } } g_object_unref (info); } }
static void real_active (NemoWindowSlot *slot) { NemoWindow *window; NemoWindowPane *pane; int page_num; window = nemo_window_slot_get_window (slot); pane = slot->pane; page_num = gtk_notebook_page_num (GTK_NOTEBOOK (pane->notebook), GTK_WIDGET (slot)); g_assert (page_num >= 0); gtk_notebook_set_current_page (GTK_NOTEBOOK (pane->notebook), page_num); /* sync window to new slot */ nemo_window_push_status (window, slot->status_text); nemo_window_sync_allow_stop (window, slot); nemo_window_sync_title (window, slot); nemo_window_sync_zoom_widgets (window); nemo_window_pane_sync_location_widgets (slot->pane); nemo_window_pane_sync_search_widgets (slot->pane); if (slot->viewed_file != NULL) { nemo_window_load_view_as_menus (window); nemo_window_load_extension_menus (window); } }
void nemo_window_slot_make_hosting_pane_active (NemoWindowSlot *slot) { g_assert (NEMO_IS_WINDOW_PANE (slot->pane)); nemo_window_set_active_slot (nemo_window_slot_get_window (slot), slot); }
static void real_inactive (NemoWindowSlot *slot) { NemoWindow *window; window = nemo_window_slot_get_window (slot); g_assert (slot == nemo_window_get_active_slot (window)); }
void nemo_window_slot_set_allow_stop (NemoWindowSlot *slot, gboolean allow) { NemoWindow *window; g_assert (NEMO_IS_WINDOW_SLOT (slot)); slot->allow_stop = allow; window = nemo_window_slot_get_window (slot); nemo_window_sync_allow_stop (window, slot); }
static void notebook_page_added_cb (GtkNotebook *notebook, GtkWidget *page, guint page_num, gpointer user_data) { NemoWindowPane *pane; NemoWindowSlot *slot; NemoWindowSlot *dummy_slot; gboolean dnd_slot; pane = NEMO_WINDOW_PANE (user_data); slot = NEMO_WINDOW_SLOT (page); //Slot has been dropped onto another pane (new window or tab bar of other window) //So reassociate the pane if needed. if (slot->pane != pane) { slot->pane->slots = g_list_remove (slot->pane->slots, slot); slot->pane = pane; pane->slots = g_list_append (pane->slots, slot); g_signal_emit_by_name (slot, "changed-pane"); nemo_window_set_active_slot (nemo_window_slot_get_window (slot), slot); } dnd_slot = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (slot), "dnd-window-slot")); if (!dnd_slot) { //Slot does not come from dnd window creation. return; } g_object_set_data (G_OBJECT (page), "dnd-window-slot", GINT_TO_POINTER (FALSE)); dummy_slot = g_list_nth_data (pane->slots, 0); if (dummy_slot != NULL) { nemo_window_pane_close_slot (dummy_slot->pane, dummy_slot); } gtk_widget_show (GTK_WIDGET (pane)); gtk_widget_show (GTK_WIDGET (pane->window)); }
void nemo_window_slot_set_status (NemoWindowSlot *slot, const char *status, const char *short_status) { NemoWindow *window; g_assert (NEMO_IS_WINDOW_SLOT (slot)); g_free (slot->status_text); slot->status_text = g_strdup (status); if (slot->content_view != NULL) { set_floating_bar_status (slot, short_status); } window = nemo_window_slot_get_window (slot); if (slot == nemo_window_get_active_slot (window)) { nemo_window_push_status (window, slot->status_text); } }
static gboolean notebook_switch_page_cb (GtkNotebook *notebook, GtkWidget *page, unsigned int page_num, NemoWindowPane *pane) { NemoWindowSlot *slot; GtkWidget *widget; widget = gtk_notebook_get_nth_page (GTK_NOTEBOOK (pane->notebook), page_num); g_assert (widget != NULL); /* find slot corresponding to the target page */ slot = NEMO_WINDOW_SLOT (widget); g_assert (slot != NULL); nemo_window_set_active_slot (nemo_window_slot_get_window (slot), slot); return FALSE; }