source: titan/plugins/filemanager/filemanager.h @ 25932

Last change on this file since 25932 was 25932, checked in by obi, 9 years ago

next step translate

File size: 12.4 KB
RevLine 
[16910]1#ifndef FILEMANAGER_H
2#define FILEMANAGER_H
[16909]3
[22725]4int filemanagerrename(int aktfilelist, struct skin* filelist1, struct skin* filelistpath1, struct skin* filelist2, struct skin* filelistpath2)
[18587]5{
[22725]6        int ret = 0;
7        char* tmpstr = NULL, *file1 = NULL;
[18587]8
9        if(filelistpath1 == NULL || filelistpath2 == NULL)
[22725]10                return 1;
[18626]11
[18587]12        if(filelist1 == NULL || filelist1->select == NULL)
[22725]13                return 1;
[18626]14
[18587]15        if(filelist2 == NULL || filelist2->select == NULL)
[22725]16                return 1;
[18587]17
18        if(aktfilelist == 0)
19                tmpstr = ostrcat(filelist1->select->text, NULL, 0, 0);
20        else
21                tmpstr = ostrcat(filelist2->select->text, NULL, 0, 0);
[18599]22               
[18587]23        char* search = textinput(_("Rename"), tmpstr);
24        free(tmpstr); tmpstr = NULL;
25
26        if(search != NULL)
27        {
28                if(aktfilelist == 0)
29                {
30                        file1 = createpath(filelistpath1->text, filelist1->select->text);
31                        tmpstr = createpath(filelistpath1->text, search);
[18593]32                }
33                else
[18587]34                {
35                        file1 = createpath(filelistpath2->text, filelist2->select->text);
36                        tmpstr = createpath(filelistpath2->text, search);
37                }
38
[22725]39                ret = rename(file1, tmpstr);
[18587]40
41                free(tmpstr); tmpstr = NULL;
42                free(search); search = NULL;
43        }
[22725]44       
45        return ret;
[18587]46}
47
[22725]48int filemanagercreatefolder(int aktfilelist, struct skin* filelist1, struct skin* filelistpath1, struct skin* filelist2, struct skin* filelistpath2)
[18588]49{
[22725]50        int ret = 0;
[18594]51        char* tmpstr = NULL;
[18588]52
53        if(filelistpath1 == NULL || filelistpath2 == NULL)
[22725]54                return 1;
[18626]55
[18588]56        if(filelist1 == NULL || filelist1->select == NULL)
[22725]57                return 1;
[18626]58
[18588]59        if(filelist2 == NULL || filelist2->select == NULL)
[22725]60                return 1;
[18588]61
62        char* search = textinputhist(_("Create Folder"), " ", "searchhist");
63        if(search != NULL)
64        {
[24125]65                strstrip(search);
66               
[18588]67                if(aktfilelist == 0)
68                        tmpstr = createpath(filelistpath1->text, search);
69                else
70                        tmpstr = createpath(filelistpath2->text, search);
71
[22725]72                ret = mkdir(tmpstr, 0777);
[18588]73        }
74
75        free(tmpstr); tmpstr = NULL;
76        free(search); search = NULL;
[22725]77       
78        return ret;
[18588]79}
80                       
[18626]81void filemanagermenu(int aktfilelist, struct skin* filelist1, struct skin* filelistpath1, struct skin* filelist2, struct skin* filelistpath2)
[18587]82{
83        struct menulist* mlist = NULL, *mbox = NULL;
[25932]84        char* skintitle = _("Menu");
[18587]85
[25932]86        addmenulist(&mlist, _("Rename"), NULL, NULL, 0, 0);
87        addmenulist(&mlist, _("Create Folder"), NULL, NULL, 0, 0);
[18587]88
89        mbox = menulistbox(mlist, NULL, skintitle, NULL, NULL, 1, 0);
90        if(mbox != NULL)
91        {
[25932]92                if(ostrcmp(mbox->name, _("Rename")) == 0)
[22725]93                {
94                        if(filemanagerrename(aktfilelist, filelist1, filelistpath1, filelist2, filelistpath1) != 0)
95                                textbox(_("Message"), _("Can't rename file !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);           
96                }
[25932]97                else if(ostrcmp(mbox->name, _("Create Folder")) == 0)
[22725]98                {
99                        if(filemanagercreatefolder(aktfilelist, filelist1, filelistpath1, filelist2, filelistpath1) != 0)
100                                textbox(_("Message"), _("Can't create directory !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
101                }
[18587]102        }
103
104        freemenulist(mlist, 1); mlist = NULL;
105}
106
[16909]107void screenfilemanager()
108{
109        int rcret = 0, aktfilelist = 0, ret = 0;
[17026]110        long bgcol1 = 0, bgcol2 = 0;
[16909]111        struct skin* filemanager = getscreen("filemanager");
112        struct skin* filemanager1 = getscreen("filemanager1");
113        struct skin* filemanager2 = getscreen("filemanager2");
114        struct skin* filelistpath1 = getscreennode(filemanager1, "filelistpath");
115        struct skin* filelist1 = getscreennode(filemanager1, "filelist");
116        struct skin* filelistpath2 = getscreennode(filemanager2, "filelistpath");
117        struct skin* filelist2 = getscreennode(filemanager2, "filelist");
[24454]118        char* file1 = NULL, *file2 = NULL, *cmd = NULL, *tmpstr = NULL;
[18379]119        struct skin* tmpfilelist = filelist1;
[16909]120
121        filelist1->aktline = 0;
122        filelist1->aktpage = 0;
123        changemask(filelist1, "*");
124        changeinput(filelist1, "/");
125        changetext(filelistpath1, filelist1->input);
126       
127        filelist2->aktline = 0;
128        filelist2->aktpage = 0;
[18379]129        changemask(filelist2, "*");
[16909]130        changeinput(filelist2, "/");
131        changetext(filelistpath2, filelist2->input);
132
133        delmarkedscreennodes(filemanager1, FILELISTDELMARK);
134        delmarkedscreennodes(filemanager2, FILELISTDELMARK);
135        createfilelist(filemanager1, filelist1, 0);
136        createfilelist(filemanager2, filelist2, 0);
137
[17026]138        bgcol1 = filelistpath1->bgcol;
139        bgcol2 = filelistpath2->bgcol;
140
141        filelistpath1->bgcol = convertcol("markcol");
[16909]142       
143        drawscreen(filemanager, 0, 1);
144        drawscreen(filemanager1, 0, 1);
145        drawscreen(filemanager2, 0, 0);
146        addscreenrc(filemanager1, filelist1);
[18379]147        delrc(getrcconfigint("rcff", NULL), filemanager1, filelist1);
148        delrc(getrcconfigint("rcfr", NULL), filemanager1, filelist1);
[18220]149
[16909]150        while(1)
151        {
152                if(aktfilelist == 0)
[18379]153                {
[16909]154                        rcret = waitrc(filemanager1, 0, 0);
[18379]155                        tmpfilelist = filelist1;
156                }
[16909]157                else
[18379]158                {
[16909]159                        rcret = waitrc(filemanager2, 0, 0);
[18379]160                        tmpfilelist = filelist2;
161                }
[16909]162               
163                if(rcret == getrcconfigint("rcexit", NULL)) break;
[18379]164
[18220]165                if(status.security == 1)
[16909]166                {
[18379]167                        if((rcret == getrcconfigint("rcgreen", NULL) || rcret == getrcconfigint("rcyellow", NULL)) && tmpfilelist->select != NULL && ostrcmp(tmpfilelist->select->text, "..") != 0) //copy - move
[16909]168                        {
[18379]169                                if(aktfilelist == 0)
170                                        file1 = createpath(filelistpath1->text, filelist1->select->text);
171                                else
172                                        file1 = createpath(filelistpath2->text, filelist2->select->text);
173
[18220]174                                if(file1 != NULL)
[16909]175                                {
[22725]176                                        int copy = 1;
177                                       
[18220]178                                        if(rcret == getrcconfigint("rcgreen", NULL))
179                                        {
[23722]180                                                tmpstr = ostrcat(tmpstr, _("Really copy this file/dir?"), 1, 0);
[22725]181                                                copy = 1;
182                                                //not need with screencopy start
[23225]183                                                //cmd = ostrcat(cmd, "cp -r ", 1, 0);
[22725]184                                                //not need with screencopy end
[18220]185                                        }
186                                        if(rcret == getrcconfigint("rcyellow", NULL))
187                                        {
[23722]188                                                tmpstr = ostrcat(tmpstr, _("Really move this file/dir?"), 1, 0);
[22725]189                                                copy = 0;
190                                                //not need with screencopy start
[23225]191                                                //cmd = ostrcat(cmd, "mv -f ", 1, 0);
[22725]192                                                //not need with screencopy end
[18220]193                                        }
194                                       
195                                        tmpstr = ostrcat(tmpstr, "\n\n", 1, 0);
196                                        tmpstr = ostrcat(tmpstr, _("From"), 1, 0);
197                                        tmpstr = ostrcat(tmpstr, ": ", 1, 0);                           
198                                        tmpstr = ostrcat(tmpstr, file1, 1, 0);
199                                        tmpstr = ostrcat(tmpstr, "\n", 1, 0);
200                                        tmpstr = ostrcat(tmpstr, _("To"), 1, 0);
201                                        tmpstr = ostrcat(tmpstr, ": ", 1, 0);
[22725]202                                       
[18379]203                                        if(aktfilelist == 0)
204                                                tmpstr = ostrcat(tmpstr, filelistpath2->text, 1, 0);
205                                        else
206                                                tmpstr = ostrcat(tmpstr, filelistpath1->text, 1, 0);
[22725]207                                       
[18220]208                                        ret = textbox(_("Message"), tmpstr, _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 1000, 300, 0, 0);
[22725]209                                       
[23225]210                                       
[22725]211                                        if(ret == 1)
212                                        {
213                                                if(copy == 0)
[23229]214                                                {
215                                                        if(aktfilelist == 0)
[24454]216                                                        {
217                                                                file2 = createpath(filelistpath2->text, filelist1->select->text);
218                                                                if(rename(file1, file2) != 0)
219                                                                        screencopy(_("Move File"), file1, filelistpath2->text, 1);
220                                                                free(file2); file2 = NULL;
221                                                        }
[23229]222                                                        else
[24454]223                                                        {
224                                                                file2 = createpath(filelistpath1->text, filelist2->select->text);
225                                                                if(rename(file1, file2) != 0)
226                                                                        screencopy(_("Move File"), file1, filelistpath1->text, 1);
227                                                                free(file2); file2 = NULL;
228                                                        }
[23229]229                                                }
[22725]230                                                else
[23229]231                                                {
232                                                        if(aktfilelist == 0)
233                                                                screencopy(_("Copy File"), file1, filelistpath2->text, 0);
234                                                        else
235                                                                screencopy(_("Copy File"), file1, filelistpath1->text, 0);
236                                                }
[22725]237                                        }
[23225]238                                       
[18220]239                                        free(tmpstr); tmpstr = NULL;
240                                       
[22725]241                                        //not need with screencopy start
[23225]242                                        /*
[22419]243                                        cmd = ostrcat(cmd, "\"", 1, 0);
[18220]244                                        cmd = ostrcat(cmd, file1, 1, 0);
[22419]245                                        cmd = ostrcat(cmd, "\" \"", 1, 0);
[18379]246                                        if(aktfilelist == 0)
247                                                cmd = ostrcat(cmd, filelistpath2->text, 1, 0);
248                                        else
249                                                cmd = ostrcat(cmd, filelistpath1->text, 1, 0);
[22419]250                                        cmd = ostrcat(cmd, "\"", 1, 0);
[18220]251                                        if(ret == 1) system(cmd);
252                                        free(cmd); cmd = NULL;
[23225]253                                        */
[22725]254                                        //not need with screencopy end
[16909]255                                }
[18220]256                                free(file1); file1 = NULL;
257                               
258                                if(ret == 1)
[16909]259                                {
[18220]260                                        delmarkedscreennodes(filemanager1, FILELISTDELMARK);
261                                        delmarkedscreennodes(filemanager2, FILELISTDELMARK);
262                                        createfilelist(filemanager1, filelist1, 0);
263                                        createfilelist(filemanager2, filelist2, 0);
[16909]264                                }
[18220]265                                drawscreen(filemanager, 0, 1);
266                                drawscreen(filemanager1, 0, 1);
267                                drawscreen(filemanager2, 0, 0);
[16909]268                        }
269                       
[18379]270                        if(rcret == getrcconfigint("rcred", NULL) && tmpfilelist->select != NULL && ostrcmp(tmpfilelist->select->text, "..") != 0) //delete
[16909]271                        {
[18379]272                                if(aktfilelist == 0)
273                                        file1 = createpath(filelistpath1->text, filelist1->select->text);
274                                else
275                                        file1 = createpath(filelistpath2->text, filelist2->select->text);
[18220]276                                if(file1 != NULL)
277                                {
[23722]278                                        tmpstr = ostrcat(tmpstr, _("Really delete this file/dir?"), 1, 0);
[18220]279                                        tmpstr = ostrcat(tmpstr, "\n\n", 1, 0);
280                                        tmpstr = ostrcat(tmpstr, file1, 1, 0);
281                                        ret = textbox(_("Message"), tmpstr, _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 1000, 200, 0, 0);
282                                        free(tmpstr); tmpstr = NULL;
283                                       
[19043]284                                        cmd = ostrcat(cmd, "rm -rf ", 1, 0);
[22419]285                                        cmd = ostrcat(cmd, "\"", 1, 0);
[18220]286                                        cmd = ostrcat(cmd, file1, 1, 0);
[22419]287                                        cmd = ostrcat(cmd, "\"", 1, 0);
[22725]288                                        if(ret == 1)
289                                        {
290                                                if(system(cmd) != 0)
291                                                        textbox(_("Message"), _("Can't remove file/dir !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
292                                        }
[18220]293                                        free(cmd); cmd = NULL;                 
294                                }
295                                free(file1); file1 = NULL;
296                               
297                                if(ret == 1)
298                                {
299                                        delmarkedscreennodes(filemanager1, FILELISTDELMARK);
300                                        delmarkedscreennodes(filemanager2, FILELISTDELMARK);
301                                        createfilelist(filemanager1, filelist1, 0);
302                                        createfilelist(filemanager2, filelist2, 0);
303                                }
304                                drawscreen(filemanager, 0, 1);
305                                drawscreen(filemanager1, 0, 1);
306                                drawscreen(filemanager2, 0, 0);
[16909]307                        }
[18549]308                       
[18588]309                        if(rcret == getrcconfigint("rcblue", NULL) && tmpfilelist->select != NULL && ostrcmp(tmpfilelist->select->text, "..") != 0) //view
[16909]310                        {
[18379]311                                if(aktfilelist == 0)
312                                        file1 = createpath(filelistpath1->text, filelist1->select->text);
313                                else
314                                        file1 = createpath(filelistpath2->text, filelist2->select->text);
[18465]315
[22725]316                                if(getfilesize(file1) < 1048576 && (cmpfilenameext(file1, ".txt") == 0 || cmpfilenameext(file1, ".sh") == 0 || cmpfilenameext(file1, ".cfg") == 0 || cmpfilenameext(file1, ".conf") == 0))
[18220]317                                {
[18465]318                                        tmpstr = readfiletomem(file1, 0);
319                                        if(tmpstr != NULL)
320                                        {
321                                                textbox(file1, tmpstr, _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 1000, 600, 0, 0);
322
323                                                drawscreen(filemanager, 0, 1);
324                                                drawscreen(filemanager1, 0, 1);
325                                                drawscreen(filemanager2, 0, 0);
326                                        }
327                                        free(tmpstr); tmpstr = NULL;
328                                }
329                                else
330                                {
331                                        textbox(_("Message"), _("Can't show this file!"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 10, 0);
332
[18220]333                                        drawscreen(filemanager, 0, 1);
334                                        drawscreen(filemanager1, 0, 1);
335                                        drawscreen(filemanager2, 0, 0);
336                                }
337                                free(file1); file1 = NULL;
[16909]338                        }
[18549]339
[22725]340                        if(rcret == getrcconfigint("rcmenu", NULL)) //menu
[18585]341                        {
[18626]342                                filemanagermenu(aktfilelist, filelist1, filelistpath1, filelist2, filelistpath2);
[18585]343
[18628]344                                delmarkedscreennodes(filemanager1, FILELISTDELMARK);
345                                delmarkedscreennodes(filemanager2, FILELISTDELMARK);
346                                createfilelist(filemanager1, filelist1, 0);
347                                createfilelist(filemanager2, filelist2, 0);
348                                       
[18585]349                                drawscreen(filemanager, 0, 1);
350                                drawscreen(filemanager1, 0, 1);
351                                drawscreen(filemanager2, 0, 0);
352                        }
[16909]353                }
[18220]354                else
[19989]355                        textbox(_("Message"), _("Registration needed, please contact Atemio !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 800, 200, 0, 0);
[16909]356               
357                if(rcret == getrcconfigint("rcff", NULL) || rcret == getrcconfigint("rcfr", NULL)) //change filelist
358                {
359                        if(aktfilelist == 0)
360                        {
361                                aktfilelist = 1;
362                                delownerrc(filemanager1);
363                                delownerrc(filemanager2);
364                                addscreenrc(filemanager2, filelist2);
[18379]365                                delrc(getrcconfigint("rcff", NULL), filemanager2, filelist2);
366                                delrc(getrcconfigint("rcfr", NULL), filemanager2, filelist2);
[16909]367                                filelistpath1->bgcol = 0;
[17026]368                                filelistpath2->bgcol = convertcol("markcol");
[16909]369                        }
370                        else
371                        {
372                                aktfilelist = 0;
373                                delownerrc(filemanager1);
374                                delownerrc(filemanager2);
375                                addscreenrc(filemanager1, filelist1);
[18379]376                                delrc(getrcconfigint("rcff", NULL), filemanager1, filelist1);
377                                delrc(getrcconfigint("rcfr", NULL), filemanager1, filelist1);
[17026]378                                filelistpath1->bgcol = convertcol("markcol");
[16909]379                                filelistpath2->bgcol = 0;
380                        }
381                        drawscreen(filemanager1, 0, 1);
382                        drawscreen(filemanager2, 0, 0);
383                }
384       
385        }
[18220]386       
[17026]387        delmarkedscreennodes(filemanager1, FILELISTDELMARK);
388        delmarkedscreennodes(filemanager2, FILELISTDELMARK);
389        filelistpath1->bgcol = bgcol1;
390        filelistpath2->bgcol = bgcol2;
[16909]391        delownerrc(filemanager1);
392        delownerrc(filemanager2);
393        clearscreen(filemanager);
394}
395
396#endif
Note: See TracBrowser for help on using the repository browser.