deniz-ozcan / Pynar-Flowchart

Portable Flowchart Maker with PyQt5
0 stars 0 forks source link

Görev 3 #3

Closed ttbilgin closed 1 year ago

ttbilgin commented 2 years ago

Pynar Editörde yazılmış (ekranda kod editöründe açık olan) kodu Flowchart'a çeviren bir Sistem geliştireceğiz.

Bunun için ilk adım olarak şu sitedeki https://pypi.org/project/pyflowchart/ paketini indir ve kur. Bu sitede "Python to Flowchart" başlığındaki örneği çok iyi incele. Python kodundan nasıl flowchart üretiyor test et. Tabiki bu göresel bir flowchart yapmıyor ama https://flowchart.js.org/ uygulamasının girdi formatında çıktı üretiyor. pyflowchart konsol çıktısını alıp https://flowchart.js.org/ uygulamasına verirsen SVG formatında Flowchart çiziyor.

Sen şimdi bunları incele. pyflowchart ve flowchart.js nin nasıl çalıştığını öğrendiğinde buraya cevap olarak bildir. O zaman sonraki adımları yazacağım.

deniz-ozcan commented 2 years ago

Hocam merhabalar. Bazı şeyler öğrensem de tam olarak anlayamadım. Nodelar üzerinde hareket ederek graph çiziyor nodeları zaten pyflowcharttan alıyor fakat işin içine 9000 satırlık svg çizici js kütüphanesi olan raphaelde karışınca ve tam olarak iyi bi javasciptçi olmadığım için anlamakta zorlaşıyor benim adıma. Yaptığım araştırmalara göre ve yazdığım gui programına göre sadece test.py dosyasının içindekileri değiştirip main.pyı çalıştırırsanız. https://flowchart.js.org/ Burda ki gibi çıktı veriyor. Aynı zamanda verdiği çıktıyı yaptığım program pdf formatında kullanıcının seçtiği yere göre indiriyor. İndirip sadece main.py ı çalıştırmanız yeterli. Projeye entegre etmesine gelecek olursak kullanıcı üsttekilerden bi tuşa basınca debugdaki gibi kodu direkt yazdığım programa veriyoruz gerisi zaten programdaki işler.

deniz-ozcan commented 2 years ago

Burada yazdıklarım harici herhangi bir konuda çalışmamı isterseniz ona göre hareket edeyim.

ttbilgin commented 2 years ago

@deniz-ozcan evet tam istediğim gibi olmuş. Şimdi biraz bunu daha "kullanılabilir hale getireceğiz. öncelikle flowchart.js dökümanındaki örneklere ve parametreleri inceleyelim, şu an ürettiğin Flowchartlarda bazı yerlerde istenmeyen "üst üste binme" ve kesme durumları oluşuyor. Üretilen flowchart'ın Layout'u ile ilgili bazı parametreler ekleyerek belki bu düzeltilebilir diye düşünüyorum. Hatalı yerleri şu ekran görüntüsünde kırmızı işaretledim.

image

deniz-ozcan commented 2 years ago

Hocam iyi günler. Javascriptte daha önce söylediğim gibi iyi değilim. Üzerinde çalışıyorum geliştirmek için. Benden daha iyi biri varsa bu konuda ona söyleseniz daha iyi olabilir. Ben repoya flow.rar ekledim birine gönderebiliniz diye. içinde sadece index.html ve flowchart.js var.index htmlde bulunan 1 parametre dışında her şey aynı ilk gönderdiklerim ile. o parametre de maxWidth:3 bunu condition:{} arasına ekledim yine index htmlde fotoğraftaki soldaki sorunu çözüyor gibi görünüyor. Farklı algoritmalar üzerinde çizilen şemalarda da deneyeceğim.

deniz-ozcan commented 2 years ago

Bir araştırayım dedim bunları düzeltmeyi. Bununla ilgili bir issue açılmış (https://github.com/adrai/flowchart.js/issues/186). Fakat kimse bir şey eklememiş . Kendim denemeyi düşünüyorum bunu pythonla çizen bir algoritma geliştirerek. Sizce deneyeyim mi yoksa başka bir şey mi yaparız?

deniz-ozcan commented 2 years ago

Denemekten vazgeçtim uzun iş çizimle uğraşmak, Onun yerine isterseniz şemanın renklendirilmesini öğrenciye bırakabiliriz. Öyle bir bölüm de ekleyebilirim guiye.

deniz-ozcan commented 2 years ago

Hocam genel itibariyle sadece overlap problemi hariç şema renklendirmesi diye bir bölüm de ekledim. Gayet güzel olduğunu düşünüyorum. Ekledim son dosyaları. Dosyaları tamamıyla indirirdkten sonra main i çalıştırmanız yeterli olacaktır.

ttbilgin commented 2 years ago

@deniz-ozcan , şöyle yapalım, renklendirme parametreleri iyi ama pythona yeni başlayan hedef kitle için bu fazlaca karmaşık bir UI olmuş. Olabildiğince bir pencerede az sayıda ayar barındırmak bir "Kullanıcı arayüz tasarımı" nın temelidir. Bu yaptığın ayarları daha sonra bir settings penceresi yapıp oraya koyarız. Şimdilik hepsini kaldır.

Senden sadece şu 2 maddeyi istiyorum, bunları yap ve gönder. 1) ekteki test.zip içindeki test.html den ben flowchart.js parametreleriyle oynayarak ideal'e yakın bir flowchart ürettim. Sende bu parametreleri kullan lütfen (ben html gönderdim, sen benim kullandığım parametreleri incele aynı şekilde kendi kodunda kullanırsın. 2) UI için şu aşamada lütfen CSS kullanmayan sade bir pencere yap. Yukarıya bir "File" menüsü koy, şimdilik sadece "Çıkış" alt menüsü içerse yeterli. Birde "Help" menüsü koy. şimdilik alt menüsü boş kalsın. Menubar kısmına ise "kaydet" ve "Zoom in" ve "zoom out" butonları koy. Tam şöyle istiyorum. 3) Flowchart renk slakası için öntanımlı olarak şu yazılımın akış diyagramlarının renginde gelsin http://www.flowgorithm.org/

image

test.zip

deniz-ozcan commented 2 years ago

Güncelledim ve istediğiniz hale getirdim.

ttbilgin commented 2 years ago

@deniz-ozcan tamam şimdi gayet güzel. Şimdiki görevlerin şöyle 1) Kaydet butonunda ekrana gelen FileDialog hatalı bir şekilde "klasör" soruyor, oysaki kaydedilecek dosya adı sorması gerekli. Ayrıca kaydet yapınca ortaya çıkan pdf'de flowchart çok küçük görünüyor. A4 kağıt boyutuna sığacak oranda PDF üretilse iyi olur. 2) Toolbar bölümüne 2 buton daha ekleyelim.

3) Bu yaptığın yazılım için projedeki Readme.md dosyasına güzel bir dökümantasyon yazmanı istiyorum. Bu dökümanı sonra staj raporu olarak da kullanırsın sana kolaylık olur. İstediğim dökümantasyon şunun gibi olmalı. https://github.com/yjg30737/pyqt-custom-titlebar-window (Tabiki sen Türkçe yazabilirsin.) Github Markdown formatında dökümantasyo yazmayı bilmiyorsan şuradan öğren (https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax)

deniz-ozcan commented 2 years ago

Hocam iyi geceler 2 tane dosya değişikliği söz konusu. Eğer indirdiğinizde açıp beğenirseniz ona göre dokümantasyona başlıyım.

ttbilgin commented 2 years ago

@deniz-ozcan çok iyi olmuş. Sadece şu var: Sürükleme ve Ev simgelerine tıklayınca çizimi refresh mi ettiriyorsun? görüntü önce kaybolup sonra tekrar geliyor. buradaki gecikme süresi kısaltılabilir mi? Eğer olmuyorsa da belki bir "loading" animasyonu eklenebilir.

deniz-ozcan commented 2 years ago

Şimdi şöyle bir durum var QwebEngineview de scroll olayına şu durumdaki ihtiyacımıza göre karışılamadığı için sayfaya ekstra css ve js eklenmesi gerekiyor. Tuşa basınca sayfa sıfırdan oluşturulup ik sayfa siliniyor ve bu eklendikten sonra sürükleyebiliyoruz sayfayı. Ev simgesine tıklayınca da sayfanın zoom durumunu 1 e çekiyoruz ve ilk başta açılan sayfa yeniden sıfırdan oluşturulup ekranda gösteriliyor. Bu iki olay için de 0 dan tabwidget ile açık olan tabı kapatıp yeniden tab açarak sayfa baştan oluşturuluyor. Kaydetmede de sorun yaşanmıyor. Eğer tab ile yapılmazsa bir önceki browser kapatılamıyor ve yerine hemen yanına toplamda 2 tane veya o iki tuşa bastığınız sayı kadar htlm sayfası oluşturuyor. Gecikme süresinin kısaltılabileceğini sanmıyorum. Ama bi loading animasyonu eklemeyi denerim.

deniz-ozcan commented 2 years ago

pdf durumuna da gelecek olursak sayfa yüklendikten sonra 2 farklı script çalışıyor bunlar sayfanın içeriğinin boyutlarını hesaplayıp geri döndürüyor programa. Bu döndürülen genişlik, yükseklik değerleri pdfe yazdırılırken a4(default olarak bunu bıraktım.) boyutunun oransal değerlerini belirliyor. a0,a1,a2,a3,a4,b0,b1,b2,b3,b4 gibi sayfa boyutlarının değerleri de aslında sayfaya aktarılan flowchartın genişlik ve yükseklik değerlerine göre değiştirilebilir. Ama fazladan işleme tabi tutulacağından pdfe geçirme durumu yani kaydetme durumunu da uzatabilir. Yine size kalıyor isteğinize göre şekillendirebilirim.

deniz-ozcan commented 2 years ago

Loading gif ekledim ve sanırım böyle daha iyi oldu.

ttbilgin commented 2 years ago

@deniz-ozcan evet böyle iyi ama tutarlılık açısından bizim pynarda kullandığımız şöyle bir animasyon kullanalım. https://github.com/ttbilgin/PyNar_Beta/issues/10

bunlara ek olarak Home ve Drag ikonlarına Tooltip mesajı ekleyelim. diğerlerine eklemişin bunlara eklememişsin.

Ayrıca bu pencereye birde status bar ekleyelim mutlaka.

Diğer bir görev de, şu an sen hep test.py dosyasından flowchart üretiyorsun. Dosya menüsüne "Aç" seçeneği ekleyelim. Bir file dialog gelsin, burada sadece py uzantılı dosyaları seçebilelim. burada seçtiğimiz dosyanın flowchartını görüntülesin.

deniz-ozcan commented 2 years ago

Dediklerinizi değiştirdim. ve öğrenci dosya açmadan butonlarda deaktif modda.

ttbilgin commented 2 years ago

ben şöyle bir dosyayı açmaya çalıştım hata veriyor. Dosyada sace şu kadar döngü var başka bişey yok.

for i in range(5):
    print(i)
deniz-ozcan commented 2 years ago

Aynı kodu https://flowchart.js.org buraya da yapıştırarak denedim orada da çalışmadı çünkü giriş olarak sadece cond3=>operation: print(i) while i in range(5) bu yazıyor. Bu tür kodları çeviremiyor flowchart.js Eğer kodlar bu örnekte for i in range(5): print(i) for i in range(5): print(i) bu gibi olursa cond3=>operation: print(i) while i in range(5) cond16=>operation: print(i) while i in range(5) cond3->cond16 bu çıktıyı alıyoruz pyflowcharttan ve sonrasında da ekrana basabiliyor. Screenshot_1

deniz-ozcan commented 2 years ago

Maalesef buna yapabileceğimiz tek şey eğer ekrana basamazsa ekrana messagebox çıkartarak kodlarınız flowchart oluşturulamayacak kadar kısa diyebiliriz. Harici bi fikrim yok.

ttbilgin commented 2 years ago

flowchart çizilecek python kodunda şunları yapalım. 1) kod içinde for ve while döngüsü varmı diye kontrol edelim. 2) Eğer var ise for ve while yapısının öncesine ve sonrasına 2 adet tek tırnak koyalım. o zaman doğru çiziyor. Tabiki bu tırnakları gerçek python koduna değil, sadece biz pyflowchart'a verirgken geçici olarak yapalım.

Örneğin şu kodu düzgün çiziyor.

''
for i in range(5):
    ''
    print(i)
deniz-ozcan commented 2 years ago

Bunu bütün kod için mi yapacağız?.Birden fazla döngü olabilir çünkü?

ttbilgin commented 2 years ago

@deniz-ozcan evet bütün for, while döngüleri için yapmak gerekir. bunun için bir fonksiyon yazabilirsin. Hatta aynı sorun if yapılarında da olabiliyor. Genelde for,while ve if gibi yapılardan sonra sadece tek satırlık bir ifade varsa bu sorunu yapıyor, en az 2 satır olursa problem olmuyor.

Malesef elimizde flowchart.js dışında başka bir alternatif olmadığı için flowchart.js'nin buglarına bu şekilde çözüm icat etmekten başka çare yok.

deniz-ozcan commented 2 years ago

Hocam merhabalar. Yapabildim fakat hala eksiklikleri mevcut bunlar: En fazla iç içe 4 koşul kabul ediyor. örnekler conditions.py dosyasında mevcut. bunu okunan koda göre yapmak çok zor çünkü örneğin içi içe 5 koşul yazmış olsa birisi benim 5 tab kadar yani 20 boşluk saydırarak sonuna da '' işareti koymam ve hemen altına \n ile geçerek bir boşluk daha sonra yine '' işaret koyarak devam edilmesi gerekiyor else ve elif koşullarında herhangi bi if olmazsa çalışmıyor fakat bu boşluklar ve satır inme(\n) durumu onlarda da mevcut onlara da bunu koyuyor engellemek içinde 4-8-12-16-20 saymam gerekiyor. kodun şuan ki hali bile o fonksiyon için karman çorman bir hal aldı. Onun dışında çalışmadığını görmedim. Farklı bi algoritma geliştirmeyi deneyeceğim. Ama siz yine de görmek isterseniz diye atıyorum. Daha çalışmadığı bi kod olmadı.

deniz-ozcan commented 2 years ago

Yani şimdi yazdığım ile bunu 10'a yani iç içe 10 koşula çıkardım . if else elif while for farketmez kabul ediyor ama algoritmanın asıl mantığıyla farklılık yok.

ttbilgin commented 2 years ago

Şu an iş görüyor. Fakat loop yapılarında loop koşuluna geri dönüşü ifade eden kol pencerenin sınırına çok yakın kalıyor görülmekte zorlanıyor. Bunun için pencere sınırı ile flowchart arasına marjin bırakabilir miyiz?

image

Sonrasında https://www.w3schools.com/python/python_examples.asp sitesinde verilen "2 satırdan daha fazla satırı olan bütün örnek kodlardan bir veri seti oluşturalım. Bunlarla şöyle bir github reposu yap (https://github.com/ttbilgin/PyNar_Hatali_Kod_Veritabani) Biz editördeki chatbotu test etmek için bunu kullanmıştık ama bu kodlar hatalar içeriyor. Senden isteğim hatasız bir kod veriseti oluşturalım. Sonraki aşamada Geliştirdiğin sistemi bu kodlar ile test edeceğiz. Şimdilik sen sadece veri setini oluştur ve buraya cevap olarak yaz.

deniz-ozcan commented 2 years ago

Margini hallettim. Veri seti için de hemen işe koyulurum bugün.

deniz-ozcan commented 2 years ago

Sizin yazdığınız sitedeki bütün örneklerden oluşan toplamda 66 örnek aldım. ve yaklaşık olarak farklı repolardan 600 farklı kod örneği buldum içerilerinde search,sort ve random algoritmalar bulunuyor. Repo oluşturmak yerine bunları rar haline buraya atsam sizin için uygun mudur?

ttbilgin commented 2 years ago

@deniz-ozcan 600 örnek ile test etmek çok zaman alır. Çünkü test için her bir koddan flowchart üreterek doğru olup olmadığını kontrol ederek yüzde cinsinden başarı hesaplayacağız. Mesela elimizde 50 örnek varsa bunlardan 35 tanesini doğru çizmiş işse %70 başarılı flowchart üretiyoruz diyeceğiz. Her ne kadar yazılım işi yapıyorsak da elde ettiğimiz yazılımın işini ne kadar iyi yaptığını ölçümleyebilmeliyiz.

Şöyle de olur, sen 600 farklı kod örneğinden "Python öğrenmeye yeni başlayanların" en sık karşılaşacağı türden 50 örnek seçip onlardan bir veriseti yapabilirsin. Bizim için yeni başlayanlar önemli, sonuçta profesyonel biri flowchart üretmek ile uğraşmaz çünkü onun yazdığı kodlar çok daha karmaşıktır.

Bu yazdıklarım ışığında hangisini eçeceğine karar ver ve 50 veya 60 örnek oluştursan iyi olur.

deniz-ozcan commented 2 years ago

Hocam merhabalar. En son geliştirdiğim sisteme ekstra algoritma eklemem gerekiyordu. Bunlardan biri:

x2 = {
    "name": "John",
    "age": 30,
    "married": True,
    "divorced": False,
    "children": ("Ann", "Billy"),
    "pets": None,
    "cars": [
        {"model": "BMW 230", "mpg": 27.5},
        {"model": "Ford Edge", "mpg": 24.1}
    ]
}

bu tarz yazılmış olan bir listelerin ,setlerin,dictlerin ya da tuple objelerinin bir önceki durumda aralarına tab boşlukları olduğu için bu '' işareti ekliyordu ve bu işaret hataya sebebiyet veriyordu.

Diğer bir problem ise

if(x>0):
    print("x is greater than 0")
#Yorum satırı
else:
    print("x is less than 0")

böyle yazılmış olan kodda else ve elif in üstünde yorum satırı olursa buraya da yorum satırının üstüne ve altına bu '' işareti ekliyordu yorum satırından kaynaklı. Normalde o orada olmasa ben onu halletmiştim. Yorum satırından dolayı halledemiyordu algoritma. Şimdi yazdığım fonksiyona gönderilen kodda bütün yorum satırlarını siliyor. Sonra da ilk problemde bulunan tablar ile yazılmış verilerin tek satır haline getiriyor ki aralarına '' işareti giremesin. Daha bütün kodlarda denemedim hala test için kod da seçiyorum. zaten bu problemler onları denerken ortaya çıktı ve iyi ki çıktı. Şimdi sorunsuz çalışıyor. En geç yarın 60 tane test dosyası elinizde olur buraya rar halinde atarım.

deniz-ozcan commented 2 years ago

Birde şunu da eklemem gerekiyor. Pythonda bildiğimiz üzere indentler aracılığıyla bloklar oluşturuluyor. Kullanıcıların indent uzunluğu 1-2-3-4-5 vb değişebiliyor. Ben her zaman 4 boşluk olarak kulanıyorum. Genel formatterlar da o yönde. Ben de algoritmamı ona göre tasarlamıştım. Eğer kullanıcı boşluğu 4ten farklı yaparsa algoritma neredeyse direkt çöp. Bu yüzden kodu aldıktan sonra autopep8 modülü ile format attırıyorum. Bu direkt bütün indentleri 4 e çeviriyor. Daha iyi aslında diye düşündüm Şuan da toplamda 60 test dosyası ile şema çizdirdim. Bir problem oluşmadı. Genel olarak test dosyalarında python programlamaya yeni başlamış birinin OOP'ye kadar geçebileceği duraklardan ve benim de geçtiğim duraklardan kodlar mevcut. Bunlar ile ilgili bir yorumunuz varsa söylerseniz sevinirim.

ttbilgin commented 2 years ago

@deniz-ozcan gayet güzel bende sana tam autopep8'i önerecekken sen zaten keşfetmişsin. Bug Tracking işini çokgüzel yapıyorsun tebrik ederim :)

Tabiki bu yaptıklarını işin heyecanına kaptırıp düzgünce dökümante etmezsen sonra staj raporu yazarken zorlanırsın. Bu kullandığın bugfix yöntemlerini dökümante etmeyi unutma lütfen.

Birde sana bu staj döneminden sonra sana bir ödev vereyim. Javascript'i iyi öğren ve flowchartjs deki Code-To-Chart algoritmasını öğrenip flowchartjs projesi pure-python olarak implemente edersen mezun olduğunda elinde güzel bir open source proje olacaktır. Bu senin için iyi bir referans olur. Çünkü piyasada flowchart-to-code dönüştüren yazılımlar var (mesela flowgorithm) ama code-to-flowchart dönüştüren yazılım flowchartjs den başka yok. Flowchartjs nin de zaten gördüğün gibi epeyce bug'ı var.

deniz-ozcan commented 2 years ago

İltifatınız için teşekkür ederim. Dokümantasyon okuyacak kadardan daha iyi ingilizcem var ve daha öncesinde ben c ile c dilinde yazılmış bir kodun kodu texten okuyup ekrana zaman ve yer karmaşıklığı basan bir proje yapmıştım okulda bir proje verilmişti bu konuda. Hatta burada da mevcut o(Big o c). O yüzden indentlerden daha karmaşık bir yapıyla karşılaştığım için bana python çerez gibi geliyor. :)

autopep8 ve black kullanmışlığım vardı halihazırda. Black sizin de hatırlayacağınız üzere fazladan virgül bırakıyor. Dokümantasyon kısmı ise neredeyse her günün sonunda o günün kodlarını bir dosyada tutuyorum bir yandan da staj defteri yazıyorum.Buraya da son halini readme.md halinde atarım.Harici olarak bu projeye ek olarak geliştirdiğim kısımlar kenarda duruyor. code to flowchart yapmayı düşünüyordum. Ama hangi dilleri code olarak alırım bilemiyorum ama işi yapanın python olacağı kesin. Olur da bu hayata geçerse direkt sizin projenize ekleriz eskisini kaldırıp.

ttbilgin commented 2 years ago

bu arada artık bu programın CSS kısımlarını (menubar arkaplan rengini) Pynar Toolbarda olduğu gibi renklerde yapalım. Editör ile tutarlı bir renk plaetine sahip olsun.

deniz-ozcan commented 2 years ago

Ben onu bugün hallederim. Test dosyaları rar halinde burada beğenmedikleriniz olursa farklı ararım ben yine. Bu arada size haziranın sonundaydı sanırım, attığım messagebox tasarımı hakkında bir şey söylemediniz. Aklımdayken hatırlatayım dedim. :)

ttbilgin commented 2 years ago

Evet onu unuttum, çünkü öncesinde daha önemli yapısal sorunlar vardı. Birde sen onu 2-3 farklı mailde gönderdiğin için maillerden arayıp dosyaları birleştirmek zor oluyor. Sen şöyle yap . https://github.com/ttbilgin/PyNar_Beta sitesinden en son kaynak kodu indir, mesajkutularıyla ilgili bütün eidtleme işlemlerini indirdiğin kodlarda yap ve pynar klasörünü komple zip haline getir bana o şekilde gönder deneyeyim. Zip'i internette bir siteye yükleyebilrisin mail ile gitmeyebilir.

ttbilgin commented 2 years ago

Bu arada sixtyExamples'a da baktım, iyi duruyor. şimdi onlarla flowchart üret bakalım sonuçlar mantıklı çıkıyormu? Bir excel tablo yap her bir satır senin örnek dosyada 1 örneğe denk gelsin. Her bir örnek için şunlardan birini belirle a) Kod'a karşılık gelen flowchart tamamen doğru (1 puan) b) Kod'a karşılık gelen flowchart doğru ama eksikler var (0,6 puan) c) Kod'a karşılık gelen flowchart doğru ama yanlış yaptığı yerler de var (0,4 puan) d) Kod'a karşılık gelen flowchart tamamen yanlış (0 puan) e) Kod'la karşılık hiçbir çıktı üretemedi. (0 puan)

deniz-ozcan commented 2 years ago

https://drive.google.com/file/d/11uUi96DGat21tEh0SRogbJ9A2XzmO0Cl/view Bu pynarın messagebox düzeltilmiş hali

deniz-ozcan commented 2 years ago

Bunlar da 60 test dosyasının sonuçları. %75 bir başarı söz konusu.

Results

ttbilgin commented 2 years ago

@deniz-ozcan Pynasr Editör Mesaj kutuları için tasarımlarını çok başarılı buldum tebrik ederim. Sadece şu eksik. Biz Editörün fort boyutunu da pynar.ini içinde tutuyoruz ve configuration.py sayesinde oradan okuyoruz. Sende şu an Mesaj kutularındaki font editör fontu ile aynı boyda değil ve daha büyük olduğu için görüntüde bir tutarsızlık oluşuyor. Mesaj kutularındaki font boyutunu editör font boyutu değerini alacak şekilde ayarlarsan süper olur.

image

ttbilgin commented 2 years ago

Senin bu repoya koyduğun customizemessagebox'ı senin daha önce rar olarak gönderdiğin kodların klasörüne koydum ama şu an yine editör font boyutu ile messagebox font boyutu aynı değil. Resimde mesela Tahoma 10 olması lazım ama alakası yok.

image

deniz-ozcan commented 2 years ago

hocam qss dosyasını koymayı da unutmuşum. Onda font içerden belirlendiği için değiştirilemiyordu. onu da attım buraya.

ttbilgin commented 2 years ago

tamam şimdi olmuş ama buton yazılarından da aynı sorun var, onlar da aynı oranda olsun, şu an büyük.

image

deniz-ozcan commented 2 years ago

butonları da düzenledim. Şöyle bir durum da söz konusu sınır koymadım. Sınırı olması gerekiyor fontun. Çünkü öğrenci 20-25den fazla yaptığı zaman çok büyük görünüyor. Estetik açısından kötü.

ttbilgin commented 2 years ago

@deniz-ozcan biz onu düşünmüştük şöyle bir şey yapmıştık.

image

ttbilgin commented 2 years ago

Butonlar bende düzelmedi, sen https://github.com/ttbilgin/PyNar_Beta dan Pynar Beta yı indirip buna bütün değişiklikleri uygulayıp yine rar olarak göndersene. Belki ben bazı dosyaları yerine koymayı unutmuş olduğumdan da çalışmamış olabilir.

deniz-ozcan commented 2 years ago

https://drive.google.com/file/d/1Z1XgYJWSlAfeKnJWmk0biInVPihOei2N/view?usp=sharing syntaxcheck.py değişiyor 1 satır. -> çalıştırdıktan sonra pyright yüklü değilse ekrana gelen mesaj pynar.py değişiyor 1 satır. -> kısayollar mesajı icons_rc.py tamamı değişiyor. -> 4 ikon imagese 4 ikon ekleniyor. -> mesaj ikonları

deniz-ozcan commented 2 years ago

Bunları size daha önce drive ile attığım dosyada da değiştirmiştim.

ttbilgin commented 2 years ago

@deniz-ozcan tamam şimdi oldu çalışıyor , bunu Ayşegüle ileteyim test etsin, sonra da ana repoya commit ederiz. Teşekkürler. Staj raporuna bunu da ekleyebilrisin.

deniz-ozcan commented 2 years ago

Değişen noktaları yazayım da bütün hepsini değiştirmesin.

SyntaxCheck.py 118-122

    except:
        mess = """Hata mesajlarını görüntüleyebilmeniz için lütfen pyright programının son <br>sürümünü 
        <a href='https://www.pynar.org/releases/pyright/'> <b>buraya_tıklayarak</b></a> indiriniz ve zip dosyayı <br>
        <b>{}</b> klasörü içine açınız.""".format(parentdir + '\\Bin')
        CustomizeMessageBox_Ok(mess, QMessageBox.Critical)

Pynar.py 600-621

def statusBtnClick(self):
    message = """<font color=gray><table border=1 bordercolor=\"#acd33b\" cellspacing=\"0\" cellpadding=\"2\">
              <tr><th>Tuş Kombinasyonu </th><th> Görevi </th></tr>
              <tr><td>CTRL ve X </td><td> Kes </td></tr>
              <tr><td>CTRL ve V </td><td> Yapıştır </td></tr>
              <tr><td>CTRL ve Z </td><td> Geri Al </td></tr>
              <tr><td>CTRL ve K </td><td> Yorum satırı yap</td></tr>
              <tr><td>CTRL ve N </td><td> Yeni Sekme Oluştur</td></tr>
              <tr><td>CTRL ve O </td><td> Python Kodu Aç</td></tr>
              <tr><td>CTRL ve H </td><td> Dosya geçmişi</td></tr>
              <tr><td>CTRL ve F </td><td> Bul ve Değiştir</td></tr>
              <tr><td>CTRL ve W </td><td> Sekmeyi Kapat</td></tr>
              <tr><td>CTRL ve P </td><td>  Yazdır</td></tr>
              <tr><td>CTRL ve S </td><td> Kaydet</td></tr>
              <tr><td>CTRL ve + </td><td> Yakınlaştır</td></tr>
              <tr><td>CTRL ve - </td><td> Uzaklaştır</td></tr>
              <tr><td>CTRL ve G </td><td> Font ayarlarını sıfırla</td></tr>
              <tr><td>CTRL ve SHIFT ve S </td><td>  Farklı Kaydet</td></tr>
              <tr><td>CTRL ve SHIFT ve Z </td><td> İleri al</td></tr></table></font>"""

    CustomizeMessageBox_Yes_No(message, clickCancel=self.detailInfoClick, yes='Tamam', no='Detaylı Bilgi',
                                       icon=QMessageBox.Information)

icons_rc.py tamamı değişeceği için dosyaları değiştirilmeli

images klasörüne 4 ikon(question.png / critical.png / information.png / warning.png ) ekleniyor.

qmessagebox.qss tamamı değişeceği için dosyaları değiştirilmeli

CustomizeMessageBox.py tamamı değişeceği için dosyaları değiştirilmeli