/* WebDownloader for X-Window * Copyright (C) 1999-2002 Koshelev Maxim * This Program is free but not GPL!!! You can't modify it * without agreement with author. You can't distribute modified * program but you can distribute unmodified program. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ #include #include "themes.h" #include "list.h" #include "saveload.h" #include "addd.h" #include "prefs.h" #include "buttons.h" #include "about.h" #include "misc.h" #include "colors.h" #include "dndtrash.h" #include "lod.h" #include "../var.h" #include "../savelog.h" #include "../ntlocale.h" #include "../config.h" #include "../xml.h" #include enum BUTTONS_BITS{ BBIT_ADD = 1, BBIT_ADD_CLIPBOARD = 1<<1, BBIT_DEL = 1<<2, BBIT_STOP = 1<<3, BBIT_CONTINUE = 1<<4, BBIT_DEL_COMPLETED = 1<<5, BBIT_UP = 1<<6, BBIT_DOWN = 1<<7, BBIT_LOG = 1<<8, BBIT_SPEED1 = 1<<9, BBIT_SPEED2 = 1<<10, BBIT_SPEED3 = 1<<11, BBIT_OPTIONS = 1<<12, BBIT_DEL_ALL = 1<<13, BBIT_SAVE = 1<<14, BBIT_LOAD = 1<<15, BBIT_DND_TRASH = 1<<16 }; char *BUTTONS_TEXT[]={ N_(" Add new download "), N_(" Paste from clipboard "), N_(" Del downloads "), N_(" Stop downloads "), N_(" Continue/restart downloads "), N_(" Del Completed downloads "), N_(" Move up "), N_(" Move down "), N_(" View log "), N_(" Speed level one "), N_(" Speed level two "), N_(" Unlimited speed "), N_(" Options "), N_(" Delete all downloads "), N_(" Save list "), N_(" Load list "), N_(" DnD basket "), N_(" Switch percentage mode to"), N_(" Configure buttons ") }; GtkWidget *ButtonsBar; GtkWidget *buttons_array[BUTTON_LAST]; GtkWidget *pixmaps_array[BUTTON_LAST]; GdkPixmap *progress_pixmap[3]={NULL,NULL,NULL}; GdkBitmap *progress_bitmap[3]={NULL,NULL,NULL}; GdkPixbuf *progress_pixbuf[3]={NULL,NULL,NULL}; d4x::Theme::SlaveImage *D4X_PROGRESS_MODE_BUTTON; GtkWidget *BConfigWindow=(GtkWidget *)NULL; GtkWidget *BConfigButtons[BUTTON_LAST]; tConfirmedDialog *AskDeleteAll=(tConfirmedDialog *)NULL; void buttons_pixmaps_init(){ }; void buttons_configure_close(){ if (BConfigWindow) gtk_widget_destroy(BConfigWindow); BConfigWindow=(GtkWidget *)NULL; }; void buttons_cfg_init(){ int none_visible=1; for (int i=0;iactive)){ CFG.BUTTONS_FLAGS^=(1<window); return; }; GtkWidget *vbox=gtk_vbox_new(FALSE,0); for (int i=BUTTON_ADD;iactive= (CFG.BUTTONS_FLAGS & (1<file",NULL); GtkWidget *rval=gtk_image_new_from_pixbuf(pixbuf_from_theme(path,(const char**)xpm)); delete[] path; return (rval); }; GtkWidget *new_pixmap_mon(char **xpm, const std::string &themename) { d4x::Theme::Image *img=new d4x::Theme::Image(xpm,std::string("buttonsbar ")+themename+">file"); d4x::CUR_THEME->monitor(img); return (GTK_WIDGET(img->img)); }; void del_all_downloads(){ _aa_.del_all(); if (AskDeleteAll) AskDeleteAll->done(); }; static void _ask_delete_all_check_(GtkWidget *widget, tConfirmedDialog *parent){ CFG.CONFIRM_DELETE_ALL=!(GTK_TOGGLE_BUTTON(parent->check)->active); del_all_downloads(); }; void ask_delete_all(...) { if (!AskDeleteAll) AskDeleteAll=new tConfirmedDialog; if (CFG.CONFIRM_DELETE_ALL){ if (AskDeleteAll->init(_("Delete ALL downloads?"),_("Delete all?"))) g_signal_connect(G_OBJECT(AskDeleteAll->ok_button), "clicked", G_CALLBACK(_ask_delete_all_check_), AskDeleteAll); }else del_all_downloads(); }; void buttons_speed_set_text(){ char text[MAX_LEN]; sprintf(text,"%s (%i B/s)",_(" Speed level one "),CFG.SPEED_LIMIT_1); gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(buttons_array[BUTTON_SPEED1]), GTK_TOOLBAR(ButtonsBar)->tooltips,text,NULL); sprintf(text,"%s (%i B/s)",_(" Speed level two "),CFG.SPEED_LIMIT_2); gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(buttons_array[BUTTON_SPEED2]), GTK_TOOLBAR(ButtonsBar)->tooltips,text,NULL); }; void set_speed_buttons() { if (CFG.WITHOUT_FACE) return; switch (CFG.SPEED_LIMIT) { case 1: { gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(buttons_array[BUTTON_SPEED1]),TRUE); break; }; case 2: { gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(buttons_array[BUTTON_SPEED2]),TRUE); break; }; case 3: default:{ gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(buttons_array[BUTTON_SPEED3]),TRUE); break; }; }; dnd_trash_menu_prepare(); }; static void set_speed_limit() { if (gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(buttons_array[BUTTON_SPEED1]))) CFG.SPEED_LIMIT=1; else { if (gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(buttons_array[BUTTON_SPEED2]))) CFG.SPEED_LIMIT=2; else CFG.SPEED_LIMIT=3; }; main_menu_speed_prepare(); dnd_trash_menu_prepare(); }; static void dnd_trash_toggle(){ // if (GTK_TOGGLE_BUTTON(buttons_array[BUTTON_DND_TRASH])->active) if (gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(buttons_array[BUTTON_DND_TRASH]))) dnd_trash_init(); else dnd_trash_destroy(); }; void set_dndtrash_button(){ if (CFG.DND_TRASH) { if (!gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(buttons_array[BUTTON_DND_TRASH]))){ gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(buttons_array[BUTTON_DND_TRASH]),TRUE); }; }else{ if (gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(buttons_array[BUTTON_DND_TRASH]))){ gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(buttons_array[BUTTON_DND_TRASH]),FALSE); }; }; }; gint buttons_save_press(GtkWidget *widget,GdkEventButton *event, gint code){ if (event->button==3){ g_signal_emit_by_name(G_OBJECT(widget),"pressed",NULL); return TRUE; }; return FALSE; }; gint buttons_save_release(GtkButton *button,GdkEventButton *event,gint code){ if (event->button==3){ button->button_down=FALSE; GtkStateType new_state = (button->in_button ? GTK_STATE_PRELIGHT : GTK_STATE_NORMAL); if (GTK_WIDGET_STATE(button)!=new_state){ gtk_widget_set_state(GTK_WIDGET(button),new_state); gtk_widget_queue_draw(GTK_WIDGET(button)); }; switch (code){ case BUTTON_SAVE: save_list(); break; case BUTTON_OPTIONS: open_edit_for_selected(); break; }; return TRUE; }; return FALSE; }; void buttons_progress_set_text(){ char data[10]; *data=0; sprintf(data,"%i ",CFG.PROGRESS_MODE>=2?1:CFG.PROGRESS_MODE+2); char *text=sum_strings(_(BUTTONS_TEXT[BUTTON_PROGRESS])," ",data,NULL); gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(buttons_array[BUTTON_PROGRESS]), GTK_TOOLBAR(ButtonsBar)->tooltips,text,NULL); D4X_PROGRESS_MODE_BUTTON->reinit(d4x::PBM_ONLY_TEXT+CFG.PROGRESS_MODE); delete[] text; }; void buttons_progress_toggle(){ CFG.PROGRESS_MODE+=1; if (CFG.PROGRESS_MODE>2) CFG.PROGRESS_MODE=0; gtk_widget_queue_draw(D4X_QUEUE->qv.ListOfDownloads); buttons_progress_set_text(); }; static void bb_move_up(){ D4X_QUEUE->qv.move_up(); }; static void bb_move_down(){ D4X_QUEUE->qv.move_down(); }; static void bb_open_logs(){ D4X_QUEUE->qv.open_logs(); }; GtkWidget *d4x_gtk_toolbar_append_button(GtkWidget *toolbar,GtkWidget *icon,gchar *text,GCallback handler){ GtkWidget *button=GTK_WIDGET(gtk_tool_button_new(icon,text)); gtk_toolbar_insert(GTK_TOOLBAR(toolbar),GTK_TOOL_ITEM(button),-1); gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(button),GTK_TOOLBAR(ButtonsBar)->tooltips,text,NULL); g_signal_connect(G_OBJECT(button),"clicked",handler, NULL); return(button); }; GtkWidget *d4x_gtk_toolbar_append_radio_button(GtkWidget *toolbar,GtkWidget *icon,gchar *text,GCallback handler,GtkWidget *group){ GtkWidget *button = group==NULL?GTK_WIDGET(gtk_radio_tool_button_new(NULL)):GTK_WIDGET(gtk_radio_tool_button_new_from_widget(GTK_RADIO_TOOL_BUTTON(group))); gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(button),icon); gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(button),GTK_TOOLBAR(ButtonsBar)->tooltips,text,NULL); gtk_toolbar_insert(GTK_TOOLBAR(toolbar),GTK_TOOL_ITEM(button),-1); g_signal_connect(G_OBJECT(button),"clicked",handler, NULL); return(button); }; GtkWidget *d4x_gtk_toolbar_append_toggle_button(GtkWidget *toolbar,GtkWidget *icon,gchar *text,GCallback handler){ GtkWidget *button = GTK_WIDGET(gtk_toggle_tool_button_new()); gtk_tool_item_set_tooltip(GTK_TOOL_ITEM(button),GTK_TOOLBAR(ButtonsBar)->tooltips,text,NULL); gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(button),icon); gtk_toolbar_insert(GTK_TOOLBAR(toolbar),GTK_TOOL_ITEM(button),-1); g_signal_connect(G_OBJECT(button),"clicked",handler, NULL); return(button); }; void init_buttons_bar() { #include "pixmaps/add.xpm" #include "pixmaps/add_clipboard.xpm" #include "pixmaps/del.xpm" #include "pixmaps/stop_bar.xpm" #include "pixmaps/continue.xpm" #include "pixmaps/del_com.xpm" #include "pixmaps/prefs.xpm" #include "pixmaps/openlog.xpm" #include "pixmaps/del_all.xpm" #include "pixmaps/up_bar.xpm" #include "pixmaps/down_bar.xpm" #include "pixmaps/speed1.xpm" #include "pixmaps/speed2.xpm" #include "pixmaps/speed3.xpm" #include "pixmaps/save.xpm" #include "pixmaps/dndtrash_bar.xpm" #include "pixmaps/cfgbt.xpm" #include "pixmaps/load.xpm" ButtonsBar=gtk_toolbar_new (); gtk_toolbar_set_orientation(GTK_TOOLBAR(ButtonsBar),GTK_ORIENTATION_HORIZONTAL); gtk_toolbar_set_style(GTK_TOOLBAR(ButtonsBar),GTK_TOOLBAR_ICONS); gtk_container_set_border_width(GTK_CONTAINER(ButtonsBar),0); gtk_toolbar_set_tooltips(GTK_TOOLBAR(ButtonsBar),TRUE); gtk_toolbar_set_show_arrow (GTK_TOOLBAR(ButtonsBar),FALSE); // gtk_toolbar_set_space_style(GTK_TOOLBAR(ButtonsBar), GTK_TOOLBAR_SPACE_LINE); // gtk_toolbar_set_button_relief(GTK_TOOLBAR(ButtonsBar), GTK_RELIEF_NONE); pixmaps_array[BUTTON_ADD]=new_pixmap_mon(add_xpm,"add"); buttons_array[BUTTON_ADD]=d4x_gtk_toolbar_append_button(ButtonsBar,pixmaps_array[BUTTON_ADD],_(BUTTONS_TEXT[BUTTON_ADD]),G_CALLBACK(init_add_window)); pixmaps_array[BUTTON_ADD_CLIPBOARD]=new_pixmap_mon(add_clipboard_xpm,"clipboardadd"); buttons_array[BUTTON_ADD_CLIPBOARD]=d4x_gtk_toolbar_append_button(ButtonsBar,pixmaps_array[BUTTON_ADD_CLIPBOARD],_(BUTTONS_TEXT[BUTTON_ADD_CLIPBOARD]),G_CALLBACK(init_add_clipboard_window)); pixmaps_array[BUTTON_DEL]=new_pixmap_mon(del_xpm,"del"); buttons_array[BUTTON_DEL]=d4x_gtk_toolbar_append_button(ButtonsBar,pixmaps_array[BUTTON_DEL],_(BUTTONS_TEXT[BUTTON_DEL]),G_CALLBACK(ask_delete_download)); gtk_toolbar_insert(GTK_TOOLBAR(ButtonsBar),gtk_separator_tool_item_new(),-1); pixmaps_array[BUTTON_CONTINUE]=new_pixmap_mon(continue_xpm,"continue"); buttons_array[BUTTON_CONTINUE]=d4x_gtk_toolbar_append_button(ButtonsBar,pixmaps_array[BUTTON_CONTINUE],_(BUTTONS_TEXT[BUTTON_CONTINUE]),G_CALLBACK(continue_downloads)); pixmaps_array[BUTTON_STOP]=new_pixmap_mon(stop_bar_xpm,"stop"); buttons_array[BUTTON_STOP]=d4x_gtk_toolbar_append_button(ButtonsBar,pixmaps_array[BUTTON_STOP],_(BUTTONS_TEXT[BUTTON_STOP]),G_CALLBACK(stop_downloads)); pixmaps_array[BUTTON_DEL_COMPLETED]=new_pixmap_mon(del_com_xpm,"delcompleted"); buttons_array[BUTTON_DEL_COMPLETED]=d4x_gtk_toolbar_append_button(ButtonsBar,pixmaps_array[BUTTON_DEL_COMPLETED],_(BUTTONS_TEXT[BUTTON_DEL_COMPLETED]),G_CALLBACK(ask_delete_completed_downloads)); pixmaps_array[BUTTON_UP]=new_pixmap_mon(up_bar_xpm,"moveup"); buttons_array[BUTTON_UP]=d4x_gtk_toolbar_append_button(ButtonsBar,pixmaps_array[BUTTON_UP],_(BUTTONS_TEXT[BUTTON_UP]),G_CALLBACK(bb_move_up)); pixmaps_array[BUTTON_DOWN]=new_pixmap_mon(down_bar_xpm,"movedown"); buttons_array[BUTTON_DOWN]=d4x_gtk_toolbar_append_button(ButtonsBar,pixmaps_array[BUTTON_DOWN],_(BUTTONS_TEXT[BUTTON_DOWN]),G_CALLBACK(bb_move_down)); pixmaps_array[BUTTON_LOG]=new_pixmap_mon(openlog_xpm,"openlog"); buttons_array[BUTTON_LOG]=d4x_gtk_toolbar_append_button(ButtonsBar,pixmaps_array[BUTTON_LOG],_(BUTTONS_TEXT[BUTTON_LOG]),G_CALLBACK(bb_open_logs)); gtk_toolbar_insert(GTK_TOOLBAR(ButtonsBar),gtk_separator_tool_item_new(),-1); pixmaps_array[BUTTON_OPTIONS]=new_pixmap_mon(prefs_xpm,"preferences"); buttons_array[BUTTON_OPTIONS]=d4x_gtk_toolbar_append_button(ButtonsBar,pixmaps_array[BUTTON_OPTIONS],_(BUTTONS_TEXT[BUTTON_OPTIONS]),G_CALLBACK(d4x_prefs_init)); gtk_toolbar_insert(GTK_TOOLBAR(ButtonsBar),gtk_separator_tool_item_new(),-1); pixmaps_array[BUTTON_SPEED1]=new_pixmap_mon(speed1_xpm,"speedlow"); pixmaps_array[BUTTON_SPEED2]=new_pixmap_mon(speed2_xpm,"speedmedium"); pixmaps_array[BUTTON_SPEED3]=new_pixmap_mon(speed3_xpm,"speedhigh"); // buttons_array[BUTTON_]=d4x_gtk_toolbar_append_button(ButtonsBar,pixmaps_array[BUTTON_],_(BUTTONS_TEXT[BUTTON_]),G_CALLBACK()); buttons_array[BUTTON_SPEED1]=d4x_gtk_toolbar_append_radio_button(ButtonsBar,pixmaps_array[BUTTON_SPEED1],_(BUTTONS_TEXT[BUTTON_SPEED1]), G_CALLBACK(set_speed_limit),NULL); buttons_array[BUTTON_SPEED2]=d4x_gtk_toolbar_append_radio_button(ButtonsBar,pixmaps_array[BUTTON_SPEED2],_(BUTTONS_TEXT[BUTTON_SPEED2]), G_CALLBACK(set_speed_limit),buttons_array[BUTTON_SPEED1]); buttons_array[BUTTON_SPEED3]=d4x_gtk_toolbar_append_radio_button(ButtonsBar,pixmaps_array[BUTTON_SPEED3],_(BUTTONS_TEXT[BUTTON_SPEED3]), G_CALLBACK(set_speed_limit),buttons_array[BUTTON_SPEED2]); gtk_toolbar_insert(GTK_TOOLBAR(ButtonsBar),gtk_separator_tool_item_new(),-1); pixmaps_array[BUTTON_DEL_ALL]=new_pixmap_mon(del_all_xpm,"clearlist"); buttons_array[BUTTON_DEL_ALL]=d4x_gtk_toolbar_append_button(ButtonsBar,pixmaps_array[BUTTON_DEL_ALL],_(BUTTONS_TEXT[BUTTON_DEL_ALL]),G_CALLBACK(ask_delete_all)); pixmaps_array[BUTTON_SAVE]=new_pixmap_mon(save_xpm,"save"); buttons_array[BUTTON_SAVE]=d4x_gtk_toolbar_append_button(ButtonsBar,pixmaps_array[BUTTON_SAVE],_(BUTTONS_TEXT[BUTTON_SAVE]),G_CALLBACK(init_save_list)); pixmaps_array[BUTTON_LOAD]=new_pixmap_mon(load_xpm,"load"); buttons_array[BUTTON_LOAD]=d4x_gtk_toolbar_append_button(ButtonsBar,pixmaps_array[BUTTON_LOAD],_(BUTTONS_TEXT[BUTTON_LOAD]),G_CALLBACK(init_load_list)); D4X_PROGRESS_MODE_BUTTON=new d4x::Theme::SlaveImage(d4x::PBM_ONLY_TEXT); d4x::CUR_THEME->monitor(D4X_PROGRESS_MODE_BUTTON); pixmaps_array[BUTTON_PROGRESS]=GTK_WIDGET(D4X_PROGRESS_MODE_BUTTON->img); buttons_array[BUTTON_PROGRESS]=d4x_gtk_toolbar_append_button(ButtonsBar,pixmaps_array[BUTTON_PROGRESS], _(BUTTONS_TEXT[BUTTON_PROGRESS]),G_CALLBACK(buttons_progress_toggle)); pixmaps_array[BUTTON_DND_TRASH]=new_pixmap_mon (dndtrash_bar_xpm,"dnd"); buttons_array[BUTTON_DND_TRASH]=d4x_gtk_toolbar_append_toggle_button(ButtonsBar,pixmaps_array[BUTTON_DND_TRASH], _(BUTTONS_TEXT[BUTTON_DND_TRASH]),G_CALLBACK(dnd_trash_toggle)); pixmaps_array[BUTTON_CONFIGURE] = new_pixmap (cfgbt_xpm,NULL); buttons_array[BUTTON_CONFIGURE]=d4x_gtk_toolbar_append_button(ButtonsBar,pixmaps_array[BUTTON_CONFIGURE], _(BUTTONS_TEXT[BUTTON_CONFIGURE]),G_CALLBACK(buttons_configure)); gtk_tool_item_set_homogeneous(GTK_TOOL_ITEM(buttons_array[BUTTON_CONFIGURE]),FALSE); /* g_signal_connect(G_OBJECT (buttons_array[BUTTON_SAVE]), "button_press_event", G_CALLBACK (buttons_save_press), GINT_TO_POINTER(BUTTON_SAVE)); g_signal_connect(G_OBJECT (buttons_array[BUTTON_SAVE]), "button_release_event", G_CALLBACK (buttons_save_release),GINT_TO_POINTER(BUTTON_SAVE)); g_signal_connect(G_OBJECT (buttons_array[BUTTON_OPTIONS]), "button_press_event", G_CALLBACK (buttons_save_press), GINT_TO_POINTER(BUTTON_OPTIONS)); g_signal_connect(G_OBJECT (buttons_array[BUTTON_OPTIONS]), "button_release_event", G_CALLBACK (buttons_save_release),GINT_TO_POINTER(BUTTON_OPTIONS)); */ set_speed_buttons(); set_dndtrash_button(); GtkTooltips *tooltips=((GtkToolbar *)(ButtonsBar))->tooltips; gtk_tooltips_force_window(tooltips); GtkStyle *current_style =gtk_style_copy(gtk_widget_get_style(tooltips->tip_window)); char *tcolor=d4x_xml_find_obj_value(D4X_THEME_DATA,"buttonsbar tipcolor"); if (tcolor){ gdk_color_parse(tcolor,&(current_style->bg[GTK_STATE_NORMAL])); }else{ current_style->bg[GTK_STATE_NORMAL] = LYELLOW; }; gtk_widget_set_style(tooltips->tip_window, current_style); gtk_widget_show(ButtonsBar); buttons_speed_set_text(); buttons_progress_set_text(); }; void buttons_theme_changed(){ GtkTooltips *tooltips=((GtkToolbar *)(ButtonsBar))->tooltips; GtkStyle *current_style =gtk_style_copy(gtk_widget_get_style(tooltips->tip_window)); char *tcolor=d4x_xml_find_obj_value(D4X_THEME_DATA,"buttonsbar tipcolor"); if (tcolor){ gdk_color_parse(tcolor,&(current_style->bg[GTK_STATE_NORMAL])); }else{ current_style->bg[GTK_STATE_NORMAL] = LYELLOW; }; gtk_widget_set_style(tooltips->tip_window, current_style); }; void prepare_buttons() { if (!D4X_QUEUE) return; if (D4X_QUEUE->count()) gtk_widget_set_sensitive(buttons_array[BUTTON_DEL_ALL],TRUE); else gtk_widget_set_sensitive(buttons_array[BUTTON_DEL_ALL],FALSE); if (D4X_QUEUE->qv.last_selected==NULL) { gtk_widget_set_sensitive(buttons_array[BUTTON_DEL],FALSE); gtk_widget_set_sensitive(buttons_array[BUTTON_STOP],FALSE); gtk_widget_set_sensitive(buttons_array[BUTTON_CONTINUE],FALSE); gtk_widget_set_sensitive(buttons_array[BUTTON_LOG],FALSE); gtk_widget_set_sensitive(buttons_array[BUTTON_UP],FALSE); gtk_widget_set_sensitive(buttons_array[BUTTON_DOWN],FALSE); } else { gtk_widget_set_sensitive(buttons_array[BUTTON_DEL],TRUE); gtk_widget_set_sensitive(buttons_array[BUTTON_STOP],TRUE); gtk_widget_set_sensitive(buttons_array[BUTTON_CONTINUE],TRUE); gtk_widget_set_sensitive(buttons_array[BUTTON_LOG],TRUE); gtk_widget_set_sensitive(buttons_array[BUTTON_UP],TRUE); gtk_widget_set_sensitive(buttons_array[BUTTON_DOWN],TRUE); }; };