Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2009, 18:20   #11
heart
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 64
По умолчанию

спасибо за помощь, все получилось.

Код:
int main (int argc, char **argv)
{
	GtkTextBuffer *buffer;
	
	GtkBuilder  *builder; 
	GtkWidget   *textview;						
	GtkWidget   *mainwindow;						//виджет - окно 
	

	gtk_init(&argc, &argv);							//инициализируем gtk
	builder = gtk_builder_new ();						//создаем новый GtkBuilder объект
    	gtk_builder_add_from_file(builder, "primer.xml", NULL);			//загружаем описание интерфейса из XML файла
	mainwindow = GTK_WIDGET(gtk_builder_get_object(builder, "window1")); 	//связываем наше окно с окном из файла
	textview =  GTK_WIDGET(gtk_builder_get_object(builder, "textview1"));
  	buffer = GTK_TEXT_BUFFER(gtk_builder_get_object(builder, "buffer"));
	gtk_builder_connect_signals (builder, NULL);				
	gtk_text_buffer_set_text (buffer, "привет, это какой-то текст", -1);
	gtk_widget_show (mainwindow);     					//показываем окно
    	gtk_main();								//запускаем главный цикл приложения
    	return 0;
}
heart вне форума Ответить с цитированием
Старый 07.12.2009, 15:39   #12
heart
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 64
По умолчанию привет, решил не создавать новую тему.

Привет ни как не получается сделать, делаю так как написано в документации, но компилировать не хочет. Прога такая, по нажатию на кнопку создать filechooserdialog, причем для создания filechooserdialog я glade не использую, пробую так:

Код:
//Жмем на кнопку.
void on_imagemenuitem2_activate (GtkObject *object, gpointer user_data)
{	

GtkWidget *dialog;

dialog = gtk_file_chooser_dialog_new ("open file",
                                      NULL,
                                      gtk_file_chooser_action_open,
                                      gtk_stock_cancel, gtk_response_cancel,
                                      gtk_stock_open, gtk_response_accept,
                                      NULL);

if (gtk_dialog_run (gtk_dialog (dialog)) == gtk_response_accept)
  {
    char *filename;

    filename = gtk_file_chooser_get_filename (gtk_file_chooser (dialog));
    open_file (filename);
    g_free (filename);
  }

gtk_widget_destroy (dialog);

}
heart вне форума Ответить с цитированием
Старый 08.12.2009, 00:34   #13
oleg kutkov
Unix C++ developer
Форумчанин
 
Аватар для oleg kutkov
 
Регистрация: 16.04.2007
Сообщений: 651
По умолчанию

Вот как я делаю:

Диалог открытия файла:
Код:
gchar *result;
GtkWidget *filedlg;
filedlg = gtk_file_chooser_dialog_new("Выбор файла", (GtkWindow*)parent, 
GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL);
if (gtk_dialog_run (GTK_DIALOG(filedlg)) == GTK_RESPONSE_ACCEPT)	//отображаем и проверяем нажатую кнопку
//если нажали ОК - присваиваем результату полное имя выбранного файла
result = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER (filedlg));
gtk_widget_destroy(filedlg);
Диалог сохранения файла:
Код:
gchar *result;
GtkWidget *filedlg;
gchar *filename = "file.txt";
filedlg = gtk_file_chooser_dialog_new("Сохранить файл как...", (GtkWindow*)parent, 
GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL);
//задаем имя файла
gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(filedlg), filename);
//если нажали ОК - присваиваем результату полное имя выбранного файла
if (gtk_dialog_run (GTK_DIALOG(filedlg)) == GTK_RESPONSE_ACCEPT)
result = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(filedlg));
gtk_widget_destroy(filedlg);
Это все работает, использую в рабочей программе.
Может быть расскажете, как именно не компилирует, какие ошибки ?

З.Ы. параметр parent - это родительское окно, как правило это главное окно, поэтому тут можно передать виджет mainwindow (или как он называется в вашем случае).

Последний раз редактировалось oleg kutkov; 08.12.2009 в 00:40.
oleg kutkov вне форума Ответить с цитированием
Старый 08.12.2009, 14:23   #14
heart
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 64
По умолчанию

В очередной раз меня выручили, спасибо)))
Дело было в следующем:

Код:
dialog = gtk_file_chooser_dialog_new ("open file",
                                      NULL,
                                      gtk_file_chooser_action_open,
                                      gtk_stock_cancel, gtk_response_cancel,
                                      gtk_stock_open, gtk_response_accept,
                                      NULL);
Компилятор ругался мол gtk_response_cancel - и остальные не описаны, просто нужно было их написать в верхнем регистре.
heart вне форума Ответить с цитированием
Старый 13.12.2009, 16:43   #15
heart
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 64
По умолчанию не получается достать данные из TextBuffer

При компиляции, такое предупреждение:

Код:
primer.c: В функции ‘SaveFile’:
primer.c:65: предупреждение: в присваивании указатель преобразуется в целое без приведения типа
Вот код функции он вроде правильный, но при попытки сохранить данные прога вылетает.
Код:
void SaveFile(char *filename)
{
	FILE *f;	
	gchar save_text;
	GtkTextIter   start,end;	
	gtk_text_buffer_get_start_iter(buffer, &start); 		//начальный итер
	gtk_text_buffer_get_end_iter(buffer, &end);			//конечный итер
	save_text=gtk_text_buffer_get_text (buffer,&start,&end, FALSE); //Берем текст из буфера
	f=fopen(filename,"w");						//открываем файл
	fprintf(f,"%s",save_text);					//записываем содержимое буфера
	fclose(f);
}
heart вне форума Ответить с цитированием
Старый 13.12.2009, 17:04   #16
oleg kutkov
Unix C++ developer
Форумчанин
 
Аватар для oleg kutkov
 
Регистрация: 16.04.2007
Сообщений: 651
По умолчанию

Цитата:
Сообщение от heart Посмотреть сообщение
При компиляции, такое предупреждение:

Код:
primer.c: В функции ‘SaveFile’:
primer.c:65: предупреждение: в присваивании указатель преобразуется в целое без приведения типа
Можно написать (int) перед указателем, но в целом не страшно.

Вот код функции он вроде правильный, но при попытки сохранить данные прога вылетает.
Код:
void SaveFile(char *filename)
{
	FILE *f;	
	gchar save_text;
	GtkTextIter   start,end;	
	gtk_text_buffer_get_start_iter(buffer, &start); 		//начальный итер
	gtk_text_buffer_get_end_iter(buffer, &end);			//конечный итер
	save_text=gtk_text_buffer_get_text (buffer,&start,&end, FALSE); //Берем текст из буфера
	f=fopen(filename,"w");						//открываем файл
	fprintf(f,"%s",save_text);					//записываем содержимое буфера
	fclose(f);
}
Код:
gchar save_text;
- это всего лишь один символ, то же самое что и char, а далее идет попытка запихнуть в этот символ всю строку:
Код:
save_text=gtk_text_buffer_get_text (buffer,&start,&end, FALSE);
Наверное все таки надо
Код:
gchar *save_text;
?
oleg kutkov вне форума Ответить с цитированием
Старый 13.12.2009, 17:08   #17
heart
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 64
По умолчанию

И впрямь! чет я затупил, спасибо) А как связать vscrollbar1 с vscrollbar1 чтобы когда я двигал vscrollbar1 текст прокручивался, чет ума не приложу как сделать.
heart вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кроссплатформенный анимированный осциллограф (GTK+, Cairo) oleg kutkov Qt и кроссплатформенное программирование С/С++ 15 22.10.2015 20:13
обновление в блоге - Кроссплатформенный анимированный осциллограф (GTK+, Cairo) Pblog Обсуждение статей 0 16.08.2009 16:00