File Manager Proje

Başlatan .py, 23 Ekim 2017 - 21:44:33

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

.py

https://i.hizliresim.com/1G57Pj.png
https://i.hizliresim.com/8YQ107.png


Herkes buradayken konuyu açayım. Dosya yöneticisi yazmayı düşünüyorum tasarım konusunda zerre anlamıyorum kendime haksızlık etmiyim eh işte biraz anlıyorum modül fonksiyon kısmı kısaca back-end kısmı benim tasarım kısmını halledebilecek bir aslan parçası gerek. Aslında bu proje tek kişide yapılabilir ama neyse.. Birlikte *bir şeyler yazmak isteyen arkadaşlara duyurulur. iş bölümü yaparız orası kolay iş * herkes yapabildiği kadar yapar. ortak *bir şeyler çıkartırız Son olarakta eğer proje biterse repodan paylaşırız. Bu projenin diğer dosya yöneticilerinden farklı bir özelliği *olacak projeyi başlatırsak onun ne olduğunuda söylerim. Evet yorumlarınızı bekliyorum.

GitHub: https://github.com/globalaplication/filemanager

Varsayılan Fonksiyonlar:

  • def file_dict_dir(getcwd, file_hide=False)
  • def file_info_detail_dict(type, atime, ctime, mtime, size, optionhide, contents, rating)
  • def manager_mkdir(default='New Folder')
  • def manager_newfile(default='New File')
  • def manager_file_selected()
  • def manager_file_rename()
  • def manager_file_remove()
  • def manager_file_cut()
  • def manager_file_copy()
  • def filelist_view(select_option)
  • def manager_new_places()
  • def device_list_dict()
  • def label_file_type_info(dir)
  • def only_type_list(type)
  • def only_type_file_dict_dir(getcwd, type, file_hide=False)



1.Aşama:

  • Sade Tasarım (GTK+)
  • Kodlama (Py/C)
2.Aşama:

  • Test Et
3.Aşama:

  • Yeni Modern Tasarım (GTK+)
  • Paketleme (DEB)

lnxdev

Bir çok dağıtımın bir çok dosya yöneticisini denedim aralarında neredeyse büyük bir fark yokken ve ayrıca neredeyse tüm özelliklere sahipken sizin yapacağınız uygulamanın diğerlerinden nasıl bir farkı olduğunu görmek isterim. Şahsi görüşüm bence tekerleği yeniden icat etmenize gerek yok.

.py

[mention=632323]@lnxdev[/mention] Aslında amacım forumdaki genç arkadaşların progralama potansiyelini görmek buarada programlama ile uğraşan arkadaşlara bir nebze olsun heyecan katmak. Herkez yapmış birde biz yapalım farklı olsun yada olmasın sonuçta önemli olan birşeyler ortaya çıkartmak ve bana göre en önemlisi ortaklaşa birşeyler yapmayı öğrenmek. Engellemeye çalışmak forumda programla ile uğraşan birşey yapamak isteyen arkadaşların oluşabilecek isteklerini kırmak hiç doğru değil. Sevgiler..

meda

Varolan pek çok sayıda projeye destek vermek daha makul sanki Nautilus, Dolphin, Deepin File Manager .... gibi
"BEDAVA Bedava yaşıyoruz, bedava;Hava bedava, bulut bedava;
Dere tepe bedava;Yağmur çamur bedava;Otomobillerin dışı,Sinemaların kapısı,Camekanlar bedava; Peynir ekmek değil ama Acı su bedava;Kelle fiyatına hürriyet, Esirlik bedava; Bedava yaşıyoruz, bedava. Orhan VELİ"

.py

Dolphin,  Nautilus ve Deepin Var biz onlara destek verelim deseydi acaba Dolphin şuan olurmuydu :)

mayavuzcan

#5
Alıntı yapılan: .py - 23 Ekim 2017 - 21:44:33
Herkes buradayken konuyu açayım. Dosya yöneticisi yazmayı düşünüyorum tasarım konusunda zerre anlamıyorum kendime haksızlık etmiyim eh işte biraz anlıyorum modül fonksiyon kısmı kısaca back-end kısmı benim tasarım kısmını halledebilecek bir aslan parçası gerek. Aslında bu proje tek kişide yapılabilir ama neyse.. Birlikte *bir şeyler yazmak isteyen arkadaşlara duyurulur. iş bölümü yaparız orası kolay iş * herkes yapabildiği kadar yapar. ortak *bir şeyler çıkartırız Son olarakta eğer proje biterse repodan paylaşırız. Bu projenin diğer dosya yöneticilerinden farklı bir özelliği *olacak projeyi başlatırsak onun ne olduğunuda söylerim. Evet yorumlarınızı bekliyorum.

Ben raziyim nereden başlamam gerek python öğrenmek istiyordum zaten


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 24 Ekim 2017 - 02:16:17

Alıntı yapılan: lnxdev - 23 Ekim 2017 - 22:33:57
Bir çok dağıtımın bir çok dosya yöneticisini denedim aralarında neredeyse büyük bir fark yokken ve ayrıca neredeyse tüm özelliklere sahipken sizin yapacağınız uygulamanın diğerlerinden nasıl bir farkı olduğunu görmek isterim. Şahsi görüşüm bence tekerleği yeniden icat etmenize gerek yok.

Dediğiniz doğru olabilir ama kimsenin amacı para kazanmak değilki yeni bir şirket kurmakta değil amaç sadece programlama kodlama veya yeni birşeyler öğrenme burası özgür bir dünya şahsen ben diğer görev yöneticisi yerine kendi yaptığımı kullanmak isterim bu oldukça motive edicide olur :)

.py

[mention=632338]@mayavuzcan[/mention] Programlama deneyiminiz var mı

illedelinux

Dosya yöneticisi yapmak yerine dosya taşıma için bir yazılım yapmayı düşünürseniz bence daha makul olur.
Bilindiği gibi dosya taşırken uzun sürmesi, kararsız olması, çökmesi, her dosyayı taşımaması gibi bir çok eksisi mevcut.
Dağıtımlar bu konuda ilerleme kaydedememiş, dosya taşıma halen sıkıntılı ve Windows'un oldukça gerisinde, tabi kullanıcıya da ayrı bir eziyet.
Mevcut dosya yöneticileri daha gelişmiş olursa elbette iyi olur ama bence soruna çözüm gerektiren dosya taşıma daha öncelikli durumda...
GNU/Linux kullanmıyorum, onu yaşıyorum...

mayavuzcan

Alıntı yapılan: .py - 24 Ekim 2017 - 02:32:41
[mention=632338]@mayavuzcan[/mention] Programlama deneyiminiz var mı

Yazilim Mühendisliği öğrencisiyim c++ java python ve c gibi dillerde ufak ufak projeler yaptım en son windowsu bırakıp kendimi özgür yazılım alanında geliştirme kararı aldım ve yapabilme ihtimalim olduğuna inanıyorum

.py

[mention=632341]@illedelinux[/mention] Evet haklısınız taşıma konusunda başarızlar ben dolphin dosya yöneticisini kullanıyorum sürekli ya eksik taşıyor yada seçtiğim halde kopyalamıyor. gibi gibi..

[mention=632342]@mayavuzcan[/mention] Tasarım konusunda deneyimim yok ben daha çok modül yazıyorum tasarımı PyQt ile yazmayı düşünüyorum sizde araştırın karar verelim nasıl yapacağımıza dediğim gibi ben daha çok modül ve fonksiyon üretme konusunda başarılı olduğumu düşünüyorum.

mayavuzcan

[mention=632343]@.py[/mention]

tamamdır hocam ben yarın hocalarımada danışırım hayırlı geceler

meda

Alıntı yapılan: .py - 24 Ekim 2017 - 02:10:18
Dolphin,  Nautilus ve Deepin Var biz onlara destek verelim deseydi acaba Dolphin şuan olurmuydu :)
Zaten pek çok kişi sizin gibi düşünüp bir ucundan çeke çeke bu kadar dağınık, düzensiz ... hale getirdi. Thunar, Dolphin, Nautilus .... sürümlerindeki hatalar eksikler giderilmeden bir üst sürüme geçiliyor. Dosya yöneticileri yapılıp sonra birileri destek verirse devam edip 1-2 yıl sonra güncelleme, hata düzeltmesi ile uğraşan çeviren olmayınca onca emek çöpe.  ;D O dediğin zamanlar çok geride kaldı zira sistemler gelişti ihtiyaçlar farklılaştı ....

Mesela son zamanlarda bulut hesapları kullanımı artmaya başladı. Onedrive, Dropbox, Gdrive, Mega, Yandisk ... eklenti yahut özellik adına birşeyler yapılabilir.
"BEDAVA Bedava yaşıyoruz, bedava;Hava bedava, bulut bedava;
Dere tepe bedava;Yağmur çamur bedava;Otomobillerin dışı,Sinemaların kapısı,Camekanlar bedava; Peynir ekmek değil ama Acı su bedava;Kelle fiyatına hürriyet, Esirlik bedava; Bedava yaşıyoruz, bedava. Orhan VELİ"

.py


Alıntı yapılan: meda - 24 Ekim 2017 - 15:28:21
Mesela son zamanlarda bulut hesapları kullanımı artmaya başladı. Onedrive, Dropbox, Gdrive, Mega, Yandisk ... eklenti yahut özellik adına *bir şeyler yapılabilir.
Eğer APi destekleri varsa neden olmasın katkıda bulunduğun için teşekkürler iyi fikir.

meda

Alıntı yapılan: .py - 24 Ekim 2017 - 15:50:50

Alıntı yapılan: meda - 24 Ekim 2017 - 15:28:21
Mesela son zamanlarda bulut hesapları kullanımı artmaya başladı. Onedrive, Dropbox, Gdrive, Mega, Yandisk ... eklenti yahut özellik adına *bir şeyler yapılabilir.
Eğer APi destekleri varsa neden olmasın katkıda bulunduğun için teşekkürler iyi fikir.
Nautilus 1-2 veya sürüm önce Gdrive desteği gelmişti akıbeti ne durumda Gnome Shell yahut Nautilus kullanmadığımdan bilmiyorum. Dahası akıllı telefonlarımızdaki uygulamalar gibi paylaşım veya gönderim özelliği arttırılabilir.
"BEDAVA Bedava yaşıyoruz, bedava;Hava bedava, bulut bedava;
Dere tepe bedava;Yağmur çamur bedava;Otomobillerin dışı,Sinemaların kapısı,Camekanlar bedava; Peynir ekmek değil ama Acı su bedava;Kelle fiyatına hürriyet, Esirlik bedava; Bedava yaşıyoruz, bedava. Orhan VELİ"

mthnzbk


.py

Alıntı yapılan: mthnzbk - 24 Ekim 2017 - 17:00:03
...

rahat rahat eleştirebilrisiniz ne gereği var diyebilrisiniz. :) Ne yazdınız vazgeçtiniz.

unixmania

Zamaninda eglence olsun diye yazmistim.Rutin isleri yapabiliyor.

derlemek icin:  "gcc dosya.c `pkg-config --libs --cflags gtk+-3.0`"


#define _GNU_SOURCE

#include <errno.h>

#include <dirent.h>

#include <string.h>

#include <sys/stat.h>

#include <sys/sendfile.h>

#include <fcntl.h>

#include <gtk/gtk.h>

typedef struct {

  long            ino;

  long            off;

  unsigned short  size;

  unsigned char   type;

  char            name[];

} dirent;

/*

  mode=0 -> delete

  mode=1 -> copy

  mode=2 -> move

  mode=3 -> rename

  mode=4 -> new file

  mode=5 -> new folder

*/

void worker(GtkWidget* wid, void* data)

{

  const char *name  = gtk_entry_get_text((GtkEntry*)wid);

  char *sfile = basename(gtk_file_chooser_get_filename((GtkFileChooser*)data));

  int mode = *((int*)g_object_get_data((GObject*)wid, "mymode"));

  if(sfile && name){

    if(mode == 3)

      rename(sfile, name);

    if(mode == 4)

      creat(name, 0644);

    if(mode == 5)

      mkdir(name, 0744);

  }

  gtk_widget_hide(wid);

}

gboolean hide(GtkWidget* wid, GdkEvent* ev, void* data)

{

  gtk_widget_hide(wid);

  return 0;

}

gboolean keys(GtkWidget* wid, GdkEvent* ev, void* data)

{

  int state, keyval, infd, outfd, mode;

  GdkEventKey *key;

  GtkWidget *entri;

  struct stat buf;

  GSList      *gsl;

  gboolean     ret;

  char *curr, *source, *dest;

  errno  = 0;

  ret    = 0;

  key    = (GdkEventKey*) ev;

  state  = key->state;

  keyval = key->keyval;

  entri = (GtkWidget*)g_object_get_data((GObject*)wid, "entri");

  if(keyval == GDK_KEY_F2 && gtk_file_chooser_get_filename((GtkFileChooser*)wid)){

    gtk_widget_show(entri);

    gtk_widget_grab_focus(entri);

    *((int*)g_object_get_data((GObject*)entri, "mymode")) = 3;

    ret = 1;

  }

  if(state == GDK_CONTROL_MASK && keyval == GDK_KEY_n){

    gtk_widget_show(entri);

    gtk_widget_grab_focus(entri);

    *((int*)g_object_get_data((GObject*)entri, "mymode")) = 4;

    ret = 1;

  }

  if(state == GDK_MOD1_MASK && keyval == GDK_KEY_n){

    gtk_widget_show(entri);

    gtk_widget_grab_focus(entri);

    *((int*)g_object_get_data((GObject*)entri, "mymode")) = 5;

    ret = 1;

  }

  if(state == GDK_CONTROL_MASK && keyval == GDK_KEY_c){

    *((GSList*)data) = *gtk_file_chooser_get_filenames((GtkFileChooser*) wid);

    *((int*)g_object_get_data((GObject*)entri, "mymode")) = 1;

    ret = 1;

  }

  if(state == GDK_CONTROL_MASK && keyval == GDK_KEY_x){

    *((GSList*)data) = *gtk_file_chooser_get_filenames((GtkFileChooser*) wid);

    *((int*)g_object_get_data((GObject*)entri, "mymode")) = 2;

    ret = 1;

  }

  if(state == GDK_CONTROL_MASK && keyval == GDK_KEY_v){

    gsl  = (GSList*)data;

    mode = *((int*)g_object_get_data((GObject*)entri, "mymode"));

    curr = gtk_file_chooser_get_current_folder((GtkFileChooser*) wid);

  chdir(curr);

    while(gsl && gsl->data){

      source = (char*) gsl->data;

      dest = malloc(sizeof(curr) + strlen(basename(source)) + 1);

      strcpy(dest, curr);

      strcpy(dest + strlen(curr), "/");

      strcpy(dest + strlen(curr) + 1, basename(source));

      stat(source, &buf);

      if(S_ISREG(buf.st_mode)){

        infd  = open(source, O_RDONLY | O_CLOEXEC | O_NONBLOCK);

        outfd = open(dest, O_RDWR | O_CLOEXEC | O_NONBLOCK | O_CREAT, 0644);

        sendfile(outfd, infd, 0, buf.st_size);

        close(infd);

        close(outfd);

        sync();

        if(mode == 2)

          unlink(source);

      }

      if(S_ISDIR(buf.st_mode) && mode == 2)

        rename(source, dest);

      if(S_ISDIR(buf.st_mode) && mode == 1){

    ret = fork();

    if(!ret)

         execve("/usr/bin/cp", (char*[5]) {"cp", "-a", source, ".", 0}, 0);

    else

     wait(0);

   }

      gsl = gsl->next;

    }

    ret = 1;

  }

  if(keyval == GDK_KEY_Delete){

    gsl = gtk_file_chooser_get_filenames((GtkFileChooser*) wid);

    while(gsl && gsl->data){

      source = (char*) gsl->data;

      stat(source, &buf);

      if(S_ISREG(buf.st_mode))

        unlink(source);

      if(S_ISDIR(buf.st_mode)){

    ret = fork();

     if(!ret)

         execve("/usr/bin/rm", (char*[4]) {"rm", "-rf", source, 0}, 0);

    else

     wait(0);

   }

      gsl = gsl->next;

    }

    ret = 1;

  }

  return ret;

}

int main(int argc, char *argv[])

{

  GtkWidget *win, *cho, *entri, *head;

  GSList flist;

  int mymode;

  gtk_init(&argc, &argv);

  win = gtk_window_new (GTK_WINDOW_TOPLEVEL);

  gtk_window_set_default_size ((GtkWindow*) win, 800, 600);

  gtk_window_set_title((GtkWindow*)win, "");

  //gtk_window_set_decorated((GtkWindow*)win, 0);

  //g_object_set(gtk_settings_get_default(), "gtk-dialogs-use-header", 0, 0);

  cho = gtk_file_chooser_widget_new(GTK_FILE_CHOOSER_ACTION_OPEN);

  gtk_file_chooser_set_select_multiple((GtkFileChooser*)cho, 1);

  entri = gtk_entry_new();

  head = gtk_header_bar_new();

  gtk_header_bar_pack_start((GtkHeaderBar*)head, entri);

  gtk_header_bar_set_show_close_button((GtkHeaderBar*)head, 1);

  gtk_window_set_titlebar((GtkWindow*)win, head);

  g_object_set_data((GObject*)entri, "mymode", &mymode);

  g_object_set_data((GObject*)cho, "entri", entri);

  g_signal_connect(cho, "key-press-event", G_CALLBACK(keys), &flist);

  g_signal_connect(entri, "activate", G_CALLBACK(worker), cho);

  g_signal_connect(entri, "focus-out-event", G_CALLBACK(hide), 0);

  g_signal_connect(win, "destroy", G_CALLBACK(gtk_main_quit), 0);

  gtk_container_add(GTK_CONTAINER(win), cho);

  gtk_widget_show_all(win);

  gtk_widget_hide(entri);

  gtk_main();

  return 0;

}

.py


Hyakuya

Yardım lazımsa benimde çorbada tuzum olsun xd orta c,c++,c# bilgim ve basit düzeyde java bilgim var ama tecrübem hiç yok bende bu tür bir şey arıyordum

.py

Proje'yi pythonda yazdım Proje beta seviyesine ulaştı. Yardımcı olmak isterseniz proje dosyalarını incelebilirsiniz. şuan itibariyle proje dosyalarını paylaşmadım (en yakın zamanda proje dosyalarını githubta paylaşıcam)

tbinxt

Alıntı yapılan: .py - 08 Kasım 2017 - 12:57:20
Proje'yi pythonda yazdım Proje beta seviyesine ulaştı. Yardımcı olmak isterseniz proje dosyalarını incelebilirsiniz. şuan itibariyle proje dosyalarını paylaşmadım (en yakın zamanda proje dosyalarını githubta paylaşıcam)

Paylaş dostum paylaş,bizde destek atarız.

.py



Bir ay kadar ara vermiştim tekrar yazmaya başladım tasarım konusunda karar veremiyorum birşeyi farkettim bütün dosya yöneticileri birbirine benziyor bende yukarıdaki gibi birşey yazmaya karar verdim resimdeki gördüğünüz dosya yöneticisi tasarladığım uygulama yakın bir zamanda açık kaynak olarak paylaşıcam tasarm konusunda yeni fikirleri olan arkadaşlar varsa düşüncelerini paylaşabilir
https://i.hizliresim.com/WG5XdL.png

Barlow

Uygulamada kullanılan menülerin, wigdetlerın dosya yöneticisi ile nasıl birleştiğini merak ettim doğrusu :) Normalde önce pencere yöneticisi altta da programcının eklediği widgetlar bulunması gerekmez miydi?
Eğer sen, başkalarından kendine saygı beklersen bu onlar için büyük bir şeydir. Sadece kendine saygı duyabilirsen diğerleri de sana saygı duymaya mecbur kalır.

-Dostoyevski-

.py

Alıntı yapılan: Barlow - 20 Aralık 2017 - 15:55:58
Uygulamada kullanılan menülerin, wigdetlerın dosya yöneticisi ile nasıl birleştiğini merak ettim doğrusu :) Normalde önce pencere yöneticisi altta da programcının eklediği widgetlar bulunması gerekmez miydi?

tam ekran açınca masaüstüyle birleşti altta gördüğünüz başlat çubuğu dosya yöneticisi ile ilgisi yok
https://i.hizliresim.com/1G57Pj.png

meda

#24
Fikir vermesi açısından Wifi-Direct veya Airdrop benzeri wifi, bluetooth üzerinden sürükle bırak dosya paylaşım özelliği güzel olur. Yanlış hatırlamıyorsam Windows 10 2018 ilkbahar güncellemesi ile benzer bir özellik sunacaktı.

Sağ tıkla paylaşım özelliği çok faydalı bulduğum özelliklerden zenginleştirilebilir.
"BEDAVA Bedava yaşıyoruz, bedava;Hava bedava, bulut bedava;
Dere tepe bedava;Yağmur çamur bedava;Otomobillerin dışı,Sinemaların kapısı,Camekanlar bedava; Peynir ekmek değil ama Acı su bedava;Kelle fiyatına hürriyet, Esirlik bedava; Bedava yaşıyoruz, bedava. Orhan VELİ"