Ejemplo n.º 1
0
void ListFiles(void)
{
/*  int i,k; */
  unsigned char Taste=0;
  AltPos=Pos; AltCPos=CPos;
  Pos=0; CPos=2; DisplayFiles();
  for(;;) {
    Taste=getch();
    if (Taste==27) { DatName1[0]=0; break; }
    if (Taste==73) { Pos-=21; if (Pos<0) { Pos=0; CPos=2; } DisplayFiles(); Taste=0; }
    if (Taste==81) { Pos+=21; if (Pos>Dateien-22) { Pos=Dateien-22; CPos=23; if (Pos<0) { Pos=0; CPos=Dateien+1; } } DisplayFiles(); Taste=0; }
    if (Taste==72 && CPos==2 && Pos>0) { Pos--; DisplayFiles(); Taste=0; }
    if (Taste==80 && CPos==23) { Pos++; if (Pos>Dateien-22) Pos=Dateien-22; DisplayFiles(); Taste=0; }
    if (Taste==72 && CPos==2 && Pos==0) Taste=0;
    if (Taste==80 && CPos<Dateien+1) { CPos++; DisplayFiles(); Taste=0; }
    if (Taste==72) { CPos--; DisplayFiles(); Taste=0; }
    if (Taste==79) { Pos=Dateien-22; CPos=23; if (Pos<0) { Pos=0; CPos=Dateien+1; } DisplayFiles(); }
    if (Taste==71) { Pos=0; CPos=2; DisplayFiles(); }
    if ( ((Taste>94 && Taste<123) || (Taste>32 && Taste<58)) && SPos<8) {
      SuchStr[SPos]=Taste; SuchStr[SPos+1]=0; Print(27,22,0,15,"           "); Print(27,22,0,15,SuchStr);
      SPos++; if (SPos>0) DateiSuchen();
    }
    if (Taste==8 && SPos>0) {
      SPos--; SuchStr[SPos]=0; Print(27,22,0,15,"           "); Print(27,22,0,15,SuchStr);
      if (SPos>0) DateiSuchen();
    }
	 if (Taste==13) { strcpy(DatName1,Datai->FileName); break; }
  }
  if (Datai->Date==0 && strlen(DatName1)>0) { chdir(Datai->FileName); GetDir(WildCard); }
  Pos=AltPos; CPos=AltCPos; Dateien=0;
  DisplayFiles(); SuchStr[0]=0; SPos=0; CWeg();
}
Ejemplo n.º 2
0
/*----------------------------------------------------------------------------------------------------------------------*/
void FileOpenHome(GtkWidget *But,gpointer Unused)
{
char *Str,L2Str[LONG_TEXT_FIELD];

Str=getenv("HOME"); strcpy(FileX->Path,Str); gtk_entry_set_text(GTK_ENTRY(FileX->PEntry),FileX->Path);
DisplayFiles();
gtk_entry_set_text(GTK_ENTRY(FileX->FEntry),""); gtk_widget_set_sensitive(FileX->But,FALSE);
gtk_label_set_text(GTK_LABEL(FileX->Label1),"");
sprintf(L2Str,"%d files found",FileX->Files); gtk_label_set_text(GTK_LABEL(FileX->Label2),L2Str);
}
Ejemplo n.º 3
0
/*----------------------------------------------------------------------------------------------------------------------*/
void FileOpenReScan(GtkWidget *But,gpointer Unused)
{
gchar L2Str[LONG_TEXT_FIELD];
gchar *Entry;

Entry=gtk_entry_get_text(GTK_ENTRY(FileX->PEntry)); strcpy(FileX->Path,Entry);
DisplayFiles();
sprintf(L2Str,"%d files found",FileX->Files); gtk_label_set_text(GTK_LABEL(FileX->Label2),L2Str);
gtk_entry_set_text(GTK_ENTRY(FileX->FEntry),""); gtk_widget_set_sensitive(FileX->But,FALSE);
gtk_label_set_text(GTK_LABEL(FileX->Label1),"");
}
Ejemplo n.º 4
0
/*----------------------------------------------------------------------------------------------------------------------*/
void FileOpenUp(GtkWidget *But,gpointer Unused)
{
gchar L2Str[LONG_TEXT_FIELD];

strcpy(strrchr(FileX->Path,'/'),"\0"); if (strlen(FileX->Path)==0) strcpy(FileX->Path,"/");
gtk_entry_set_text(GTK_ENTRY(FileX->PEntry),FileX->Path);
DisplayFiles();
gtk_entry_set_text(GTK_ENTRY(FileX->FEntry),""); gtk_widget_set_sensitive(FileX->But,FALSE);
gtk_label_set_text(GTK_LABEL(FileX->Label1),"");
sprintf(L2Str,"%d files found",FileX->Files); gtk_label_set_text(GTK_LABEL(FileX->Label2),L2Str);
}
Ejemplo n.º 5
0
void DateiSuchen(void)
{
  int i;
  Datai=Da;
  for (i=0;i<Dateien;i++) {
	 if (strnicmp(SuchStr,Datai->FileName,SPos)==0) {
		Pos=i-10; CPos=12; if (Pos<0 || Dateien<22) { CPos=i+2; Pos=0; break; }
		if (Pos>Dateien-22) { Pos=Dateien-22; CPos=Dateien-i; CPos=24-CPos; }
		break;
	 }
	 Datai++;
  }
  DisplayFiles();
}
Ejemplo n.º 6
0
/*----------------------------------------------------------------------------------------------------------------------*/
gint FSelect(GtkWidget *But,GdkEventButton *Event,gpointer Data)
{
gint I;
struct stat StatBuf;
gchar FullPath[NAME_MAX+255+5],FName[MAX_DIR_STRLEN],*Str,L2Str[LONG_TEXT_FIELD];

I=GPOINTER_TO_INT(Data); 
if (!strcmp(FileX->Path,"/")) sprintf(FullPath,"%s%s",FileX->Path,FileX->Names[I]);                  //If the path is "/"
else                          sprintf(FullPath,"%s%c%s",FileX->Path,'/',FileX->Names[I]);               //All other cases
stat(FullPath,&StatBuf);
if (Event->type==GDK_2BUTTON_PRESS)                                                                        //Double Click
   { 
   if (S_ISREG(StatBuf.st_mode))                                                                      //Double Click File 
      { 
      strcpy(FileX->TargetFile,FileX->Names[FileX->Index]); 
      gtk_signal_emit_by_name(GTK_OBJECT(FileX->But),"clicked",NULL); 
      }
   else                                                                                             //Double Click Folder
      {
      strcpy(FileX->Path,FullPath); gtk_entry_set_text(GTK_ENTRY(FileX->PEntry),FileX->Path);
      DisplayFiles();
      gtk_entry_set_text(GTK_ENTRY(FileX->FEntry),""); gtk_widget_set_sensitive(FileX->But,FALSE);
      gtk_label_set_text(GTK_LABEL(FileX->Label1),"");
      sprintf(L2Str,"%d files found",FileX->Files); gtk_label_set_text(GTK_LABEL(FileX->Label2),L2Str);
      }
   return TRUE;
   }
FileX->Index=I;                                                                                            //Single Click
if (S_ISREG(StatBuf.st_mode))                                                                         //Single Click File
   {
   strcpy(FName,FileX->Names[FileX->Index]);  if ((Str=strstr(FName,FileX->Mask))) Str[0]='\0';  //Get rid of mask and ff
   gtk_entry_set_text(GTK_ENTRY(FileX->FEntry),FName);
   AbbreviateFileName(L2Str,FileX->Names[FileX->Index],20);
   gtk_label_set_text(GTK_LABEL(FileX->Label1),L2Str);
   strcpy(FileX->TargetFile,FileX->Names[FileX->Index]);
   gtk_widget_set_sensitive(FileX->But,TRUE);
   }
return FALSE;
}
Ejemplo n.º 7
0
/*----------------------------------------------------------------------------------------------------------------------*/
void FileOpenNew(gchar *Title,GtkWidget *Parent,gint X,gint Y,gboolean OpenToRead,gchar *StartPath,gchar *Mask,
                 gboolean MaskEditable,void (*CallBack)(GtkWidget *,gpointer),gboolean Persist)
/* Must have FileX=g_new(struct FileSelectType,1) just before reference to FileOpenNew
   Title=Window title, Parent=Window wrt to which the file browser will be set_transient (keep NULL if not needed)
   X,Y=Window position, OpenToRead=TRUE to open file for read or FALSE to open file for write
   StartPath=initial directory, eg. "." or "/home/lamps/lamps"
   Mask eg. ".ban" (limited to 3 chars); "" will give all files; "d" will give all files ending in 'd'
   MaskEditable=TRUE allows the user to change the Mask
   CallBack=name of callback routine eg. &ReadFile, must g_free(FileX) in this except if Persist=TRUE
   Persist=TRUE keeps the browser open after selection and the "Cancel" button is replaced by "Dismiss" 
           in this case do not g_free(FileX) in CallBack                                                                */
{
GtkWidget *VBox,*HBox,*But,*ScrollW,*Label,*Arrow,*PxW;
#include "Home.xpm"
GdkBitmap *Msk; GdkPixmap *PxMp; GtkStyle *St;
gint i,StatOut;
struct stat StatBuf;
gchar L2Str[LONG_TEXT_FIELD];
static GdkColor Red  = {0,0xFFFF,0x0000,0x0000};
static GdkColor Blue = {0,0x0000,0x0000,0xFFFF};
GtkStyle *RedStyle,*BlueStyle;

RedStyle=gtk_style_copy(gtk_widget_get_default_style());
RedStyle->fg[0]=RedStyle->text[0]=Red;
BlueStyle=gtk_style_copy(gtk_widget_get_default_style());
BlueStyle->fg[0]=BlueStyle->text[0]=Blue;

strcpy(FileX->Mask,Mask); FileX->Index=-1; FileX->N=0;
for (i=0;i<MAX_DIR_ENTRIES;++i) strcpy(FileX->Names[i],""); 

FileX->Win=gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_grab_add(FileX->Win);
if (Parent) gtk_window_set_transient_for(GTK_WINDOW(FileX->Win),GTK_WINDOW(Parent));
gtk_window_set_title(GTK_WINDOW(FileX->Win),Title);
gtk_signal_connect(GTK_OBJECT(FileX->Win),"delete_event",GTK_SIGNAL_FUNC(FileOpenDelete),NULL);
gtk_container_set_border_width(GTK_CONTAINER(FileX->Win),10);
gtk_widget_set_usize(GTK_WIDGET(FileX->Win),500,466);
gtk_widget_set_uposition(GTK_WIDGET(FileX->Win),X,Y);
gtk_widget_show(FileX->Win);
St=gtk_widget_get_style(FileX->Win);

VBox=gtk_vbox_new(FALSE,0); gtk_container_add(GTK_CONTAINER(FileX->Win),VBox);

HBox=gtk_hbox_new(FALSE,0); gtk_box_pack_start(GTK_BOX(VBox),HBox,FALSE,FALSE,10);
if (OpenToRead) Label=gtk_label_new("Look in:"); else Label=gtk_label_new("Save in:");
gtk_box_pack_start(GTK_BOX(HBox),Label,FALSE,FALSE,10);
if (!strcmp(StartPath,".")) getcwd(FileX->Path,LONG_TEXT_FIELD); else strcpy(FileX->Path,StartPath);
StatOut=stat(FileX->Path,&StatBuf);                                  //Check if the supplied StartPath is a valid directory
if (StatOut==-1) getcwd(FileX->Path,LONG_TEXT_FIELD);                                                       //stat in error
else if (!S_ISDIR(StatBuf.st_mode)) getcwd(FileX->Path,LONG_TEXT_FIELD);                                  //Not a directory
FileX->PEntry=gtk_entry_new_with_max_length(LONG_TEXT_FIELD); gtk_entry_set_text(GTK_ENTRY(FileX->PEntry),FileX->Path);
gtk_widget_set_usize(GTK_WIDGET(FileX->PEntry),320,24);
gtk_box_pack_start(GTK_BOX(HBox),FileX->PEntry,FALSE,FALSE,0);
But=gtk_button_new(); gtk_box_pack_start(GTK_BOX(HBox),But,FALSE,FALSE,0);
Arrow=gtk_arrow_new(GTK_ARROW_UP,GTK_SHADOW_IN); gtk_container_add (GTK_CONTAINER(But),Arrow);
gtk_signal_connect(GTK_OBJECT(But),"clicked",GTK_SIGNAL_FUNC(FileOpenUp),NULL);
But=gtk_button_new(); gtk_box_pack_start(GTK_BOX(HBox),But,FALSE,FALSE,0);
gtk_signal_connect(GTK_OBJECT(But),"clicked",GTK_SIGNAL_FUNC(FileOpenHome),NULL);
PxMp=gdk_pixmap_create_from_xpm_d((FileX->Win)->window,&Msk,&St->bg[GTK_STATE_NORMAL],(gchar **)Home_xpm);
PxW=gtk_pixmap_new(PxMp,Msk); gtk_container_add(GTK_CONTAINER(But),PxW);
But=gtk_button_new_with_label("Rescan"); gtk_box_pack_start(GTK_BOX(HBox),But,FALSE,FALSE,0);
gtk_signal_connect(GTK_OBJECT(But),"clicked",GTK_SIGNAL_FUNC(FileOpenReScan),NULL);

ScrollW=gtk_scrolled_window_new(NULL,NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(ScrollW),GTK_POLICY_NEVER,GTK_POLICY_ALWAYS);
gtk_box_pack_start(GTK_BOX(VBox),ScrollW,FALSE,FALSE,0);
gtk_widget_set_usize(GTK_WIDGET(ScrollW),0,340);

FileX->Table=gtk_table_new(1,3,FALSE); 
gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(ScrollW),FileX->Table);
gtk_table_set_row_spacings(GTK_TABLE(FileX->Table),0); gtk_table_set_col_spacings(GTK_TABLE(FileX->Table),0);
DisplayFiles();

HBox=gtk_hbox_new(FALSE,0); gtk_box_pack_start(GTK_BOX(VBox),HBox,FALSE,FALSE,10);
Label=gtk_label_new("File Name:"); gtk_box_pack_start(GTK_BOX(HBox),Label,FALSE,FALSE,0);
gtk_widget_set_usize(GTK_WIDGET(Label),100,0);
FileX->FEntry=gtk_entry_new_with_max_length(LONG_TEXT_FIELD); 
gtk_box_pack_start(GTK_BOX(HBox),FileX->FEntry,FALSE,FALSE,0);
gtk_widget_set_usize(GTK_WIDGET(FileX->FEntry),160,0);
gtk_signal_connect(GTK_OBJECT(FileX->FEntry),"changed",GTK_SIGNAL_FUNC(FileChanged),NULL);
FileX->Label1=gtk_label_new(""); gtk_box_pack_start(GTK_BOX(HBox),FileX->Label1,FALSE,FALSE,0);
SetStyleRecursively(FileX->Label1,RedStyle); gtk_widget_set_usize(GTK_WIDGET(FileX->Label1),170,0);
if (OpenToRead) FileX->But=gtk_button_new_with_label("Open"); else FileX->But=gtk_button_new_with_label("Save");
gtk_box_pack_start(GTK_BOX(HBox),FileX->But,FALSE,FALSE,0);
gtk_widget_set_usize(GTK_WIDGET(FileX->But),50,0); gtk_widget_set_sensitive(FileX->But,FALSE);
gtk_signal_connect(GTK_OBJECT(FileX->But),"clicked",GTK_SIGNAL_FUNC(CallBack),NULL);
if (!Persist) gtk_signal_connect_object(GTK_OBJECT(FileX->But),"clicked",GTK_SIGNAL_FUNC(gtk_widget_destroy),
                                        GTK_OBJECT(FileX->Win));

HBox=gtk_hbox_new(FALSE,0); gtk_box_pack_start(GTK_BOX(VBox),HBox,FALSE,FALSE,0);
if (OpenToRead) Label=gtk_label_new("Files of type:"); else Label=gtk_label_new("Save as type:");
gtk_box_pack_start(GTK_BOX(HBox),Label,FALSE,FALSE,0);
gtk_widget_set_usize(GTK_WIDGET(Label),100,0);
FileX->MEntry=gtk_entry_new_with_max_length(4); 
gtk_box_pack_start(GTK_BOX(HBox),FileX->MEntry,FALSE,FALSE,0);
gtk_entry_set_text(GTK_ENTRY(FileX->MEntry),Mask); 
gtk_widget_set_usize(GTK_WIDGET(FileX->MEntry),110,0);
if (MaskEditable) gtk_entry_set_editable(GTK_ENTRY(FileX->MEntry),TRUE);
else              gtk_entry_set_editable(GTK_ENTRY(FileX->MEntry),FALSE);
gtk_signal_connect(GTK_OBJECT(FileX->MEntry),"changed",GTK_SIGNAL_FUNC(MaskChanged),NULL);
But=gtk_button_new_with_label("Rescan"); gtk_box_pack_start(GTK_BOX(HBox),But,FALSE,FALSE,0);
sprintf(L2Str,"%d files found",FileX->Files);
FileX->Label2=gtk_label_new(L2Str); gtk_box_pack_start(GTK_BOX(HBox),FileX->Label2,FALSE,FALSE,0);
gtk_widget_set_usize(GTK_WIDGET(FileX->Label2),170,0);
gtk_signal_connect(GTK_OBJECT(But),"clicked",GTK_SIGNAL_FUNC(FileOpenReScan),NULL);
SetStyleRecursively(FileX->Label2,BlueStyle); gtk_widget_set_usize(GTK_WIDGET(But),50,0);
if (Persist) But=gtk_button_new_with_label("Dismiss"); 
else         But=gtk_button_new_with_label("Cancel"); 
gtk_box_pack_start(GTK_BOX(HBox),But,FALSE,FALSE,0);
gtk_signal_connect(GTK_OBJECT(But),"clicked",GTK_SIGNAL_FUNC(FileOpenCancel),FileX->Win);
gtk_widget_set_usize(GTK_WIDGET(But),50,0);
gtk_widget_show_all(FileX->Win);
gtk_style_unref(RedStyle); gtk_style_unref(BlueStyle);
}