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

📄 text_dialog.cpp

📁 完整的RTP RTSP代码库
💻 CPP
📖 第 1 页 / 共 3 页
字号:
/* * The contents of this file are subject to the Mozilla Public * License Version 1.1(the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/MPL/ *  * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. *  * The Original Code is MPEG4IP. *  * The Initial Developer of the Original Code is Cisco Systems Inc. * Portions created by Cisco Systems Inc. are * Copyright(C) Cisco Systems Inc. 2005.  All Rights Reserved. *  * Contributor(s):  *		Bill May 		wmay@cisco.com */#define __STDC_LIMIT_MACROS#include "mp4live.h"#include "mp4live_gui.h"#include "support.h"#include "text_source.h"#include "text_encoder.h"#include "profile_text.h"static void  EnableFromTextMenu (GtkWidget *dialog, 				 uint index){  bool enable = index != 0;  GtkWidget *wid;  wid = lookup_widget(dialog, "TextFileEntry");  gtk_widget_set_sensitive(wid, enable);  wid = lookup_widget(dialog, "FileBrowseButton");  gtk_widget_set_sensitive(wid, enable);}static voidon_TextSourceDialog_response           (GtkDialog       *dialog,                                        gint             response_id,                                        gpointer         user_data){  if (GTK_RESPONSE_OK == response_id) {    GtkWidget *temp;    temp = lookup_widget(GTK_WIDGET(dialog), "TextSourceMenu");    uint index = gtk_option_menu_get_history(GTK_OPTION_MENU(temp));    const char *type = NULL;    switch (index) {    case 0: type = TEXT_SOURCE_DIALOG; break;    case 1: type = TEXT_SOURCE_TIMED_FILE; break;    case 2: type = TEXT_SOURCE_FILE_WITH_DIALOG; break;    }    if (type != NULL) {      MyConfig->SetStringValue(CONFIG_TEXT_SOURCE_TYPE, type);      if (index != 0) {	temp = lookup_widget(GTK_WIDGET(dialog), "TextFileEntry");	MyConfig->SetStringValue(CONFIG_TEXT_SOURCE_FILE_NAME, 				 gtk_entry_get_text(GTK_ENTRY(temp)));      }      MainWindowDisplaySources();    }  }  gtk_widget_destroy(GTK_WIDGET(dialog));}static voidon_TextSourceMenu_changed              (GtkOptionMenu   *optionmenu,                                        gpointer         user_data){  GtkWidget *dialog = GTK_WIDGET(user_data);  EnableFromTextMenu(dialog, gtk_option_menu_get_history(optionmenu));}static voidon_FileBrowseButton_clicked            (GtkButton       *button,                                        gpointer         user_data){  GtkWidget *dialog = GTK_WIDGET(user_data);  GtkWidget *entry = lookup_widget(dialog, "TextFileEntry");  FileBrowser(entry, dialog, NULL);}void create_TextSourceDialog (void){  GtkWidget *TextSourceDialog;  GtkWidget *dialog_vbox10;  GtkWidget *table7;  GtkWidget *label193;  GtkWidget *TextSourceMenu;  GtkWidget *menu17;  GtkWidget *text_entry_dialog1;  GtkWidget *timed_from_file1;  GtkWidget *file_with_queued_dialog1;  GtkWidget *label194;  GtkWidget *hbox103;  GtkWidget *TextFileEntry;  GtkWidget *FileBrowseButton;  GtkWidget *alignment27;  GtkWidget *hbox104;  GtkWidget *image33;  GtkWidget *label195;  GtkWidget *dialog_action_area9;  GtkWidget *cancelbutton7;  GtkWidget *okbutton9;  TextSourceDialog = gtk_dialog_new();  gtk_window_set_title(GTK_WINDOW(TextSourceDialog), _("Text Source"));  gtk_window_set_modal(GTK_WINDOW(TextSourceDialog), TRUE);  dialog_vbox10 = GTK_DIALOG(TextSourceDialog)->vbox;  gtk_widget_show(dialog_vbox10);  table7 = gtk_table_new(2, 2, FALSE);  gtk_widget_show(table7);  gtk_box_pack_start(GTK_BOX(dialog_vbox10), table7, TRUE, TRUE, 2);  gtk_table_set_row_spacings(GTK_TABLE(table7), 9);  gtk_table_set_col_spacings(GTK_TABLE(table7), 17);  label193 = gtk_label_new(_("Text Source:"));  gtk_widget_show(label193);  gtk_table_attach(GTK_TABLE(table7), label193, 0, 1, 0, 1,                   (GtkAttachOptions)(GTK_FILL),                   (GtkAttachOptions)(0), 0, 0);  gtk_misc_set_alignment(GTK_MISC(label193), 0, 0.5);  TextSourceMenu = gtk_option_menu_new();  gtk_widget_show(TextSourceMenu);  gtk_table_attach(GTK_TABLE(table7), TextSourceMenu, 1, 2, 0, 1,                   (GtkAttachOptions)(GTK_FILL),                   (GtkAttachOptions)(0), 0, 0);  menu17 = gtk_menu_new();  text_entry_dialog1 = gtk_menu_item_new_with_mnemonic(_("Dialog with Text Entry"));  gtk_widget_show(text_entry_dialog1);  gtk_container_add(GTK_CONTAINER(menu17), text_entry_dialog1);  timed_from_file1 = gtk_menu_item_new_with_mnemonic(_("File with Timing Info"));  gtk_widget_show(timed_from_file1);  gtk_container_add(GTK_CONTAINER(menu17), timed_from_file1);  file_with_queued_dialog1 = gtk_menu_item_new_with_mnemonic(_("Dialog Using File"));  gtk_widget_show(file_with_queued_dialog1);  gtk_container_add(GTK_CONTAINER(menu17), file_with_queued_dialog1);  gtk_option_menu_set_menu(GTK_OPTION_MENU(TextSourceMenu), menu17);  label194 = gtk_label_new(_("File:"));  gtk_widget_show(label194);  gtk_table_attach(GTK_TABLE(table7), label194, 0, 1, 1, 2,                   (GtkAttachOptions)(GTK_FILL),                   (GtkAttachOptions)(0), 0, 0);  gtk_misc_set_alignment(GTK_MISC(label194), 0, 0.5);  hbox103 = gtk_hbox_new(FALSE, 0);  gtk_widget_show(hbox103);  gtk_table_attach(GTK_TABLE(table7), hbox103, 1, 2, 1, 2,                   (GtkAttachOptions)(GTK_FILL),                   (GtkAttachOptions)(GTK_FILL), 0, 0);  TextFileEntry = gtk_entry_new();  gtk_widget_show(TextFileEntry);  gtk_box_pack_start(GTK_BOX(hbox103), TextFileEntry, TRUE, TRUE, 0);  FileBrowseButton = gtk_button_new();  gtk_widget_show(FileBrowseButton);  gtk_box_pack_start(GTK_BOX(hbox103), FileBrowseButton, FALSE, FALSE, 0);  alignment27 = gtk_alignment_new(0.5, 0.5, 0, 0);  gtk_widget_show(alignment27);  gtk_container_add(GTK_CONTAINER(FileBrowseButton), alignment27);  hbox104 = gtk_hbox_new(FALSE, 2);  gtk_widget_show(hbox104);  gtk_container_add(GTK_CONTAINER(alignment27), hbox104);  image33 = gtk_image_new_from_stock("gtk-open", GTK_ICON_SIZE_BUTTON);  gtk_widget_show(image33);  gtk_box_pack_start(GTK_BOX(hbox104), image33, FALSE, FALSE, 0);  label195 = gtk_label_new_with_mnemonic(_("Browse"));  gtk_widget_show(label195);  gtk_box_pack_start(GTK_BOX(hbox104), label195, FALSE, FALSE, 0);  dialog_action_area9 = GTK_DIALOG(TextSourceDialog)->action_area;  gtk_widget_show(dialog_action_area9);  gtk_button_box_set_layout(GTK_BUTTON_BOX(dialog_action_area9), GTK_BUTTONBOX_END);  cancelbutton7 = gtk_button_new_from_stock("gtk-cancel");  gtk_widget_show(cancelbutton7);  gtk_dialog_add_action_widget(GTK_DIALOG(TextSourceDialog), cancelbutton7, GTK_RESPONSE_CANCEL);  GTK_WIDGET_SET_FLAGS(cancelbutton7, GTK_CAN_DEFAULT);  okbutton9 = gtk_button_new_from_stock("gtk-ok");  gtk_widget_show(okbutton9);  gtk_dialog_add_action_widget(GTK_DIALOG(TextSourceDialog), okbutton9, GTK_RESPONSE_OK);  GTK_WIDGET_SET_FLAGS(okbutton9, GTK_CAN_DEFAULT);  g_signal_connect((gpointer) TextSourceDialog, "response",                    G_CALLBACK(on_TextSourceDialog_response),                    NULL);  g_signal_connect((gpointer) TextSourceMenu, "changed",                    G_CALLBACK(on_TextSourceMenu_changed),                    TextSourceDialog);  g_signal_connect((gpointer) FileBrowseButton, "clicked",                    G_CALLBACK(on_FileBrowseButton_clicked),                    TextSourceDialog);  /* Store pointers to all widgets, for use by lookup_widget(). */  GLADE_HOOKUP_OBJECT_NO_REF(TextSourceDialog, TextSourceDialog, "TextSourceDialog");  GLADE_HOOKUP_OBJECT_NO_REF(TextSourceDialog, dialog_vbox10, "dialog_vbox10");  GLADE_HOOKUP_OBJECT(TextSourceDialog, table7, "table7");  GLADE_HOOKUP_OBJECT(TextSourceDialog, label193, "label193");  GLADE_HOOKUP_OBJECT(TextSourceDialog, TextSourceMenu, "TextSourceMenu");  GLADE_HOOKUP_OBJECT(TextSourceDialog, menu17, "menu17");  GLADE_HOOKUP_OBJECT(TextSourceDialog, text_entry_dialog1, "text_entry_dialog1");  GLADE_HOOKUP_OBJECT(TextSourceDialog, timed_from_file1, "timed_from_file1");  GLADE_HOOKUP_OBJECT(TextSourceDialog, file_with_queued_dialog1, "file_with_queued_dialog1");  GLADE_HOOKUP_OBJECT(TextSourceDialog, label194, "label194");  GLADE_HOOKUP_OBJECT(TextSourceDialog, hbox103, "hbox103");  GLADE_HOOKUP_OBJECT(TextSourceDialog, TextFileEntry, "TextFileEntry");  GLADE_HOOKUP_OBJECT(TextSourceDialog, FileBrowseButton, "FileBrowseButton");  GLADE_HOOKUP_OBJECT(TextSourceDialog, alignment27, "alignment27");  GLADE_HOOKUP_OBJECT(TextSourceDialog, hbox104, "hbox104");  GLADE_HOOKUP_OBJECT(TextSourceDialog, image33, "image33");  GLADE_HOOKUP_OBJECT(TextSourceDialog, label195, "label195");  GLADE_HOOKUP_OBJECT_NO_REF(TextSourceDialog, dialog_action_area9, "dialog_action_area9");  GLADE_HOOKUP_OBJECT(TextSourceDialog, cancelbutton7, "cancelbutton7");  GLADE_HOOKUP_OBJECT(TextSourceDialog, okbutton9, "okbutton9");  const char *type = MyConfig->GetStringValue(CONFIG_TEXT_SOURCE_TYPE);  uint index = 0;  if (strcmp(type, TEXT_SOURCE_TIMED_FILE) == 0) {    index = 1;  } else if (strcmp(type, TEXT_SOURCE_DIALOG) == 0) {    index = 0;  } else if (strcmp(type, TEXT_SOURCE_FILE_WITH_DIALOG) == 0) {    index = 2;  }  gtk_option_menu_set_history(GTK_OPTION_MENU(TextSourceMenu), index);  const char *file = MyConfig->GetStringValue(CONFIG_TEXT_SOURCE_FILE_NAME);  if (file != NULL) {    gtk_entry_set_text(GTK_ENTRY(TextFileEntry), file);  }  EnableFromTextMenu(TextSourceDialog, index);  gtk_widget_show(TextSourceDialog);}/************************************************************************* * Text profile dialog *************************************************************************/static const char **encoderNames = NULL;static GtkWidget *TextProfileDialog;voidon_TextProfileEncoder_changed          (GtkOptionMenu   *optionmenu,                                        gpointer         user_data){  uint32_t encoderIndex = gtk_option_menu_get_history(optionmenu);  bool set;  set = text_encoder_table[encoderIndex].get_gui_options != NULL;  if (set) {    set = (text_encoder_table[encoderIndex].get_gui_options)(NULL, NULL);  }  GtkWidget *temp = lookup_widget(TextProfileDialog, "TextEncoderSettingsButton");  gtk_widget_set_sensitive(temp, set);}voidon_TextEncoderSettingsButton_clicked   (GtkButton       *button,                                        gpointer         user_data){  CTextProfile *profile = (CTextProfile *)user_data;  GtkWidget *temp;  temp = lookup_widget(TextProfileDialog, "TextProfileEncoder");  encoder_gui_options_base_t **settings_array;  uint settings_array_count;  uint index = gtk_option_menu_get_history(GTK_OPTION_MENU(temp));    if ((text_encoder_table[index].get_gui_options)(&settings_array, &settings_array_count) == false) {    return;  }    CreateEncoderSettingsDialog(profile, TextProfileDialog,			      text_encoder_table[index].dialog_selection_name,			      settings_array,			      settings_array_count);}static voidon_TextProfileDialog_response          (GtkDialog       *dialog,                                        gint             response_id,                                        gpointer         user_data){  GtkWidget *wid;  CTextProfile *ret_profile = NULL;  if (GTK_RESPONSE_OK == response_id) {    CTextProfile *tp = (CTextProfile *)user_data;    if (tp == NULL) {      wid = lookup_widget(GTK_WIDGET(dialog), 			  "TextProfileEntry");      const char *name = gtk_entry_get_text(GTK_ENTRY(wid));      if (name == NULL || *name == '\0') {	ShowMessage("Error", "Must enter profile name");	return;      }      if (AVFlow->m_text_profile_list->FindProfile(name) != NULL) {	ShowMessage("Error", "Profile already exists");	return;      }      if (AVFlow->m_text_profile_list->CreateConfig(name) == false) {	ShowMessage("Error", "profile creation error");	return;      }      tp = AVFlow->m_text_profile_list->FindProfile(name);      ret_profile = tp;    }    wid = lookup_widget(GTK_WIDGET(dialog), "TextProfileEncoder");        tp->SetStringValue(CFG_TEXT_ENCODING, 		       text_encoder_table[gtk_option_menu_get_history(GTK_OPTION_MENU(wid))].text_encoding);    wid = lookup_widget(GTK_WIDGET(dialog), "TextRepeatTimeSpinner");    tp->SetFloatValue(CFG_TEXT_REPEAT_TIME_SECS,		      gtk_spin_button_get_value_as_float(GTK_SPIN_BUTTON(wid)));        tp->Update();  }  free(encoderNames);  OnTextProfileFinished(ret_profile);  gtk_widget_destroy(GTK_WIDGET(dialog));}void create_TextProfileDialog(CTextProfile *tp){  GtkWidget *dialog_vbox11;  GtkWidget *table8;  GtkWidget *TextProfileEncoder;  GtkWidget *label211;  GtkWidget *label212;  GtkObject *TextRepeatTimeSpinner_adj;  GtkWidget *TextRepeatTimeSpinner;  GtkWidget *label213;  GtkWidget *TextProfileName;  GtkWidget *label224;  GtkWidget *TextEncoderSettingsButton;  GtkWidget *alignment38;  GtkWidget *hbox117;  GtkWidget *image43;  GtkWidget *label225;  GtkWidget *dialog_action_area10;  GtkWidget *cancelbutton8;  GtkWidget *okbutton10;  TextProfileDialog = gtk_dialog_new();  gtk_window_set_title(GTK_WINDOW(TextProfileDialog), _("Text Encoder"));  gtk_window_set_modal(GTK_WINDOW(TextProfileDialog), TRUE);  gtk_window_set_resizable(GTK_WINDOW(TextProfileDialog), FALSE);  gtk_window_set_type_hint(GTK_WINDOW(TextProfileDialog), GDK_WINDOW_TYPE_HINT_DIALOG);  dialog_vbox11 = GTK_DIALOG(TextProfileDialog)->vbox;  gtk_widget_show(dialog_vbox11);  table8 = gtk_table_new(4, 2, FALSE);  gtk_widget_show(table8);  gtk_box_pack_start(GTK_BOX(dialog_vbox11), table8, TRUE, TRUE, 0);  gtk_table_set_row_spacings(GTK_TABLE(table8), 11);  gtk_table_set_col_spacings(GTK_TABLE(table8), 7);  TextProfileEncoder = gtk_option_menu_new();  gtk_widget_show(TextProfileEncoder);  gtk_table_attach(GTK_TABLE(table8), TextProfileEncoder, 1, 2, 1, 2,                   (GtkAttachOptions)(GTK_FILL),                   (GtkAttachOptions)(0), 0, 0);

⌨️ 快捷键说明

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