⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 st-shell.c

📁 linux下网络收音机的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
  g_return_if_fail(ST_IS_SHELL(shell));  g_return_if_fail(st_shell_can_reload(shell));  selected_tab = st_shell_get_selected_tab(shell);  st_browser_tab_reload(selected_tab);}static gbooleanst_shell_can_select_all (STShell *shell){  STBrowserTab *selected_tab;  g_return_val_if_fail(ST_IS_SHELL(shell), FALSE);  selected_tab = st_shell_get_selected_tab(shell);  return selected_tab != NULL;}static voidst_shell_select_all (STShell *shell){  STBrowserTab *selected_tab;  g_return_if_fail(ST_IS_SHELL(shell));  g_return_if_fail(st_shell_can_select_all(shell));  selected_tab = st_shell_get_selected_tab(shell);  st_stream_view_select_all(selected_tab->stream_view);}static gbooleanst_shell_can_find (STShell *shell){  STBrowserTab *selected_tab;  g_return_val_if_fail(ST_IS_SHELL(shell), FALSE);  selected_tab = st_shell_get_selected_tab(shell);  return selected_tab != NULL;}static voidst_shell_find (STShell *shell){  g_return_if_fail(ST_IS_SHELL(shell));  if (shell->priv->find)    gtk_window_present(GTK_WINDOW(shell->priv->find));  else    {      shell->priv->find = sgtk_find_dialog_new(GTK_WINDOW(shell->priv->window));      g_object_add_weak_pointer(G_OBJECT(shell->priv->find), (gpointer *) &shell->priv->find);      sgtk_find_dialog_set_token(SGTK_FIND_DIALOG(shell->priv->find), st_settings.find_token ? st_settings.find_token : "");      sgtk_find_dialog_set_history(SGTK_FIND_DIALOG(shell->priv->find), st_settings.find_history);      sgtk_find_dialog_set_case_sensitive(SGTK_FIND_DIALOG(shell->priv->find), st_settings.find_case_sensitive);      sgtk_find_dialog_set_wrap_around(SGTK_FIND_DIALOG(shell->priv->find), st_settings.find_wrap_around);      sgtk_find_dialog_set_previous_sensitive(SGTK_FIND_DIALOG(shell->priv->find), FIND_NAVIGATION_SENSITIVE);      sgtk_find_dialog_set_next_sensitive(SGTK_FIND_DIALOG(shell->priv->find), FIND_NAVIGATION_SENSITIVE);            g_object_connect(shell->priv->find,		       "signal::notify", st_shell_find_notify_h, NULL,		       "signal::response", st_shell_find_response_h, shell,		       NULL);      gtk_widget_show(shell->priv->find);    }}static voidst_shell_find_notify_h (GObject *object,			GParamSpec *pspec,			gpointer user_data){  sGtkFindDialog *dialog = SGTK_FIND_DIALOG(object);  const char *name = g_param_spec_get_name(pspec);  if (! strcmp(name, "token"))    {      const char *token;      token = sgtk_find_dialog_get_token(dialog);      g_free(st_settings.find_token);      st_settings.find_token = *token ? g_strdup(token) : NULL;      sgtk_find_dialog_set_previous_sensitive(dialog, FIND_NAVIGATION_SENSITIVE);      sgtk_find_dialog_set_next_sensitive(dialog, FIND_NAVIGATION_SENSITIVE);    }  else if (! strcmp(name, "history"))    {      sg_pointers_free(st_settings.find_history);      st_settings.find_history = sgtk_find_dialog_get_history(dialog);      if (g_slist_length(st_settings.find_history) > ST_SETTINGS_FIND_HISTORY_MAX_LENGTH)	{	  GSList *elem;	  elem = g_slist_nth(st_settings.find_history, ST_SETTINGS_FIND_HISTORY_MAX_LENGTH - 1);	  g_return_if_fail(elem != NULL);	  sg_pointers_free(elem->next);	  elem->next = NULL;	  sgtk_find_dialog_set_history(dialog, st_settings.find_history);	}    }  else if (! strcmp(name, "case-sensitive"))    {      st_settings.find_case_sensitive = sgtk_find_dialog_get_case_sensitive(dialog);      sgtk_find_dialog_set_previous_sensitive(dialog, FIND_NAVIGATION_SENSITIVE);      sgtk_find_dialog_set_next_sensitive(dialog, FIND_NAVIGATION_SENSITIVE);    }  else if (! strcmp(name, "wrap-around"))    {      st_settings.find_wrap_around = sgtk_find_dialog_get_wrap_around(dialog);      if (st_settings.find_wrap_around)	{	  sgtk_find_dialog_set_previous_sensitive(dialog, FIND_NAVIGATION_SENSITIVE);	  sgtk_find_dialog_set_next_sensitive(dialog, FIND_NAVIGATION_SENSITIVE);	}    }}static voidst_shell_find_response_h (GtkDialog *dialog,			  int response,			  gpointer data){  STShell *shell = data;  sGtkDirection direction;  const char *token;  switch (response)    {    case SGTK_RESPONSE_PREVIOUS:      direction = SGTK_PREVIOUS;      break;          case SGTK_RESPONSE_NEXT:      direction = SGTK_NEXT;      break;    case GTK_RESPONSE_DELETE_EVENT:    case GTK_RESPONSE_CLOSE:      gtk_widget_destroy(GTK_WIDGET(dialog));      return;			/* finish */    default:      g_return_if_reached();    }  token = sgtk_find_dialog_get_token(SGTK_FIND_DIALOG(dialog));  g_free(shell->priv->find_token);  shell->priv->find_token = *token ? g_strdup(token) : NULL;  shell->priv->find_case_sensitive = sgtk_find_dialog_get_case_sensitive(SGTK_FIND_DIALOG(dialog));  st_shell_find_real(shell, direction, sgtk_find_dialog_get_wrap_around(SGTK_FIND_DIALOG(dialog)));}static gbooleanst_shell_can_find_next (STShell *shell){  return st_shell_can_find(shell) && shell->priv->find_token;}static voidst_shell_find_next (STShell *shell){  g_return_if_fail(ST_IS_SHELL(shell));  st_shell_find_real(shell, SGTK_NEXT, TRUE);}static gbooleanst_shell_can_find_previous (STShell *shell){  return st_shell_can_find(shell) && shell->priv->find_token;}static voidst_shell_find_previous (STShell *shell){  g_return_if_fail(ST_IS_SHELL(shell));  st_shell_find_real(shell, SGTK_PREVIOUS, TRUE);}static voidst_shell_find_real (STShell *shell,		    sGtkDirection direction,		    gboolean wrap_around){  STBrowserTab *selected_tab;  gboolean found;  g_return_if_fail(ST_IS_SHELL(shell));    selected_tab = st_shell_get_selected_tab(shell);  found = st_stream_view_find(selected_tab->stream_view,			      direction,			      shell->priv->find_token,			      shell->priv->find_case_sensitive,			      wrap_around);    if (shell->priv->find)    {      if (found)	switch (direction)	  {	  case SGTK_PREVIOUS:	    sgtk_find_dialog_set_next_sensitive(SGTK_FIND_DIALOG(shell->priv->find), TRUE);	    break;	    	  case SGTK_NEXT:	    sgtk_find_dialog_set_previous_sensitive(SGTK_FIND_DIALOG(shell->priv->find), TRUE);	    break;		  default:	    g_return_if_reached();	  }      else	switch (direction)	  {	  case SGTK_PREVIOUS:	    sgtk_find_dialog_set_previous_sensitive(SGTK_FIND_DIALOG(shell->priv->find), FALSE);	    break;	    	  case SGTK_NEXT:	    sgtk_find_dialog_set_next_sensitive(SGTK_FIND_DIALOG(shell->priv->find), FALSE);	    break;		  default:	    g_return_if_reached();	  }    }}static gbooleanst_shell_can_search_in_all_categories (STShell *shell){  STBrowserTab *selected_tab;  g_return_val_if_fail(ST_IS_SHELL(shell), FALSE);  selected_tab = st_shell_get_selected_tab(shell);  return selected_tab    && st_handler_get_stock_category(selected_tab->handler, ST_CATEGORY_BAG_SEARCH);}static voidst_shell_search_in_all_categories (STShell *shell){  STBrowserTab *selected_tab;  STCategoryBag *search_category;  g_return_if_fail(ST_IS_SHELL(shell));  g_return_if_fail(st_shell_can_search_in_all_categories(shell));  selected_tab = st_shell_get_selected_tab(shell);  g_return_if_fail(selected_tab != NULL);  search_category = st_handler_get_stock_category(selected_tab->handler, ST_CATEGORY_BAG_SEARCH);  g_return_if_fail(search_category != NULL);  st_category_view_select_category(selected_tab->category_view, search_category);  st_browser_tab_reload(selected_tab);}gbooleanst_shell_can_tune_in (STShell *shell){  STBrowserTab *selected_tab;  g_return_val_if_fail(ST_IS_SHELL(shell), FALSE);  selected_tab = st_shell_get_selected_tab(shell);  return selected_tab && st_browser_tab_can_run_stream_task(selected_tab, ST_BROWSER_TAB_STREAM_TASK_TUNE_IN);}voidst_shell_tune_in (STShell *shell){  STBrowserTab *selected_tab;  g_return_if_fail(ST_IS_SHELL(shell));  g_return_if_fail(st_shell_can_tune_in(shell));  selected_tab = st_shell_get_selected_tab(shell);  st_browser_tab_run_stream_task(selected_tab, ST_BROWSER_TAB_STREAM_TASK_TUNE_IN);}gbooleanst_shell_can_record (STShell *shell){  STBrowserTab *selected_tab;  g_return_val_if_fail(ST_IS_SHELL(shell), FALSE);  selected_tab = st_shell_get_selected_tab(shell);  return selected_tab && st_browser_tab_can_run_stream_task(selected_tab, ST_BROWSER_TAB_STREAM_TASK_RECORD);}voidst_shell_record (STShell *shell){  STBrowserTab *selected_tab;  g_return_if_fail(ST_IS_SHELL(shell));  g_return_if_fail(st_shell_can_record(shell));  selected_tab = st_shell_get_selected_tab(shell);  st_browser_tab_run_stream_task(selected_tab, ST_BROWSER_TAB_STREAM_TASK_RECORD);}gbooleanst_shell_can_browse (STShell *shell){  STBrowserTab *selected_tab;  g_return_val_if_fail(ST_IS_SHELL(shell), FALSE);  selected_tab = st_shell_get_selected_tab(shell);  return selected_tab && st_browser_tab_can_run_stream_task(selected_tab, ST_BROWSER_TAB_STREAM_TASK_BROWSE);}voidst_shell_browse (STShell *shell){  STBrowserTab *selected_tab;  g_return_if_fail(ST_IS_SHELL(shell));  g_return_if_fail(st_shell_can_browse(shell));  selected_tab = st_shell_get_selected_tab(shell);  st_browser_tab_run_stream_task(selected_tab, ST_BROWSER_TAB_STREAM_TASK_BROWSE);}gbooleanst_shell_can_present_stream_properties (STShell *shell){  STBrowserTab *selected_tab;  g_return_val_if_fail(ST_IS_SHELL(shell), FALSE);  selected_tab = st_shell_get_selected_tab(shell);  return selected_tab    && st_stream_view_has_selected_streams(selected_tab->stream_view);}voidst_shell_present_stream_properties (STShell *shell){  g_return_if_fail(ST_IS_SHELL(shell));  if (shell->priv->stream_properties)    gtk_window_present(GTK_WINDOW(shell->priv->stream_properties));  else    {      shell->priv->stream_properties = st_stream_properties_dialog_new(GTK_WINDOW(shell->priv->window));      g_object_add_weak_pointer(G_OBJECT(shell->priv->stream_properties), (gpointer *) &shell->priv->stream_properties);      g_signal_connect(shell->priv->stream_properties,		       "response",		       G_CALLBACK(st_shell_stream_properties_response_h),		       shell);            st_shell_stream_properties_update_stream(shell);      gtk_widget_show(shell->priv->stream_properties);    }}static voidst_shell_stream_properties_response_h (GtkDialog *dialog,				       int response,				       gpointer data){  STShell *shell = data;  STBrowserTab *selected_tab = st_shell_get_selected_tab(shell);    switch (response)    {    case SGTK_RESPONSE_PREVIOUS:      st_stream_view_select_previous(selected_tab->stream_view);      break;    case SGTK_RESPONSE_NEXT:      st_stream_view_select_next(selected_tab->stream_view);      break;    case GTK_RESPONSE_APPLY:      st_stream_properties_dialog_apply(ST_STREAM_PROPERTIES_DIALOG(dialog));      break;    case GTK_RESPONSE_DELETE_EVENT:    case GTK_RESPONSE_CANCEL:      gtk_widget_hide(GTK_WIDGET(dialog));      st_stream_properties_dialog_cancel(ST_STREAM_PROPERTIES_DIALOG(dialog));      gtk_widget_destroy(GTK_WIDGET(dialog));      break;          case GTK_RESPONSE_OK:      gtk_widget_hide(GTK_WIDGET(dialog));      st_stream_properties_dialog_apply(ST_STREAM_PROPERTIES_DIALOG(dialog));      gtk_widget_destroy(GTK_WIDGET(dialog));      break;    }}voidst_shell_present_stream_columns (STShell *shell){  g_return_if_fail(ST_IS_SHELL(shell));  if (shell->priv->stream_columns)    gtk_window_present(GTK_WINDOW(shell->priv->stream_columns));  else    {      STBrowserTab *selected_tab;      shell->priv->stream_columns = st_stream_columns_dialog_new(GTK_WINDOW(shell->priv->window));    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -